|
@@ -1,5 +1,6 @@
|
|
|
/*
|
|
|
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
|
|
|
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
*
|
|
|
* Permission to use, copy, modify, and/or distribute this software for
|
|
|
* any purpose with or without fee is hereby granted, provided that the
|
|
@@ -33,6 +34,7 @@
|
|
|
#include <wlan_osif_priv.h>
|
|
|
#include "wlan_cfg80211.h"
|
|
|
#include "wlan_cfg80211_p2p.h"
|
|
|
+#include "wlan_mlo_mgr_sta.h"
|
|
|
|
|
|
#define MAX_NO_OF_2_4_CHANNELS 14
|
|
|
#define MAX_OFFCHAN_TIME_FOR_DNBS 150
|
|
@@ -50,9 +52,10 @@ static void wlan_p2p_rx_callback(void *user_data,
|
|
|
struct p2p_rx_mgmt_frame *rx_frame)
|
|
|
{
|
|
|
struct wlan_objmgr_psoc *psoc;
|
|
|
- struct wlan_objmgr_vdev *vdev;
|
|
|
+ struct wlan_objmgr_vdev *vdev, *assoc_vdev;
|
|
|
struct vdev_osif_priv *osif_priv;
|
|
|
struct wireless_dev *wdev;
|
|
|
+ enum QDF_OPMODE opmode;
|
|
|
|
|
|
psoc = user_data;
|
|
|
if (!psoc) {
|
|
@@ -67,7 +70,18 @@ static void wlan_p2p_rx_callback(void *user_data,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- osif_priv = wlan_vdev_get_ospriv(vdev);
|
|
|
+ assoc_vdev = vdev;
|
|
|
+ opmode = wlan_vdev_mlme_get_opmode(assoc_vdev);
|
|
|
+
|
|
|
+ if (opmode == QDF_STA_MODE && wlan_vdev_mlme_is_mlo_vdev(vdev)) {
|
|
|
+ assoc_vdev = ucfg_mlo_get_assoc_link_vdev(vdev);
|
|
|
+ if (!assoc_vdev) {
|
|
|
+ osif_err("Assoc vdev is NULL");
|
|
|
+ goto fail;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ osif_priv = wlan_vdev_get_ospriv(assoc_vdev);
|
|
|
if (!osif_priv) {
|
|
|
osif_err("osif_priv is null");
|
|
|
goto fail;
|