summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAditya Kodukula <quic_akodukul@quicinc.com>2019-03-01 19:05:59 +0530
committerPaul Chen <chenpaul@google.com>2021-09-08 05:46:40 +0000
commitc8c03696433e432beeb33184454cfb11bd34a306 (patch)
tree8ea90798a0a823f6c6ae7c44e7584efc88b1c287
parent116433d11acbfff63c13a58a4fd964995c8af839 (diff)
downloadqcacld-c8c03696433e432beeb33184454cfb11bd34a306.tar.gz
qcacld-3.0: Set the correct the peer type in p2p go modeandroid-12.0.0_r0.23android-12.0.0_r0.22
In p2p go mode the peer type in wlan peer common object is always set to P2P_CLI. This leads to non-cancellation of NoA after connecting to legacy stations. Correct the peer type for legacy stations. Change-Id: Ib706f9a80d0ad367e27fd21eca6cf026cba63f57 CRs-Fixed: 2406127 Bug: 194132777 Signed-off-by: Aditya Kodukula <quic_akodukul@quicinc.com>
-rw-r--r--core/wma/src/wma_dev_if.c4
-rw-r--r--core/wma/src/wma_mgmt.c35
2 files changed, 34 insertions, 5 deletions
diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c
index 15515f3368..a3415185ff 100644
--- a/core/wma/src/wma_dev_if.c
+++ b/core/wma/src/wma_dev_if.c
@@ -1693,10 +1693,6 @@ static int wma_get_obj_mgr_peer_type(tp_wma_handle wma, uint8_t vdev_id,
else
obj_peer_type = WLAN_PEER_AP;
} else if (wma->interfaces[vdev_id].type == WMI_VDEV_TYPE_AP) {
- if (wma->interfaces[vdev_id].sub_type ==
- WMI_UNIFIED_VDEV_SUBTYPE_P2P_GO)
- obj_peer_type = WLAN_PEER_P2P_CLI;
- else
obj_peer_type = WLAN_PEER_STA;
} else if (wma->interfaces[vdev_id].type == WMI_VDEV_TYPE_IBSS) {
obj_peer_type = WLAN_PEER_IBSS;
diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c
index 84ee3d7930..19d583901d 100644
--- a/core/wma/src/wma_mgmt.c
+++ b/core/wma/src/wma_mgmt.c
@@ -1175,6 +1175,36 @@ static void wma_objmgr_set_peer_mlme_phymode(tp_wma_handle wma,
}
/**
+ * wma_objmgr_set_peer_mlme_type() - set peer type to peer object
+ * @wma: wma handle
+ * @mac_addr: mac addr of peer
+ * @peer_type: peer type value to set
+ *
+ * Return: None
+ */
+static void wma_objmgr_set_peer_mlme_type(tp_wma_handle wma,
+ uint8_t *mac_addr,
+ enum wlan_peer_type peer_type)
+{
+ uint8_t pdev_id;
+ struct wlan_objmgr_peer *peer;
+ struct wlan_objmgr_psoc *psoc = wma->psoc;
+
+ pdev_id = wlan_objmgr_pdev_get_pdev_id(wma->pdev);
+ peer = wlan_objmgr_get_peer(psoc, pdev_id, mac_addr,
+ WLAN_LEGACY_WMA_ID);
+ if (!peer) {
+ WMA_LOGE(FL("peer object null"));
+ return;
+ }
+
+ wlan_peer_obj_lock(peer);
+ wlan_peer_set_peer_type(peer, peer_type);
+ wlan_peer_obj_unlock(peer);
+ wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_WMA_ID);
+}
+
+/**
* wmi_unified_send_peer_assoc() - send peer assoc command to fw
* @wma: wma handle
* @nw_type: nw type
@@ -1365,8 +1395,11 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
cmd->peer_flags |= WMI_PEER_160MHZ;
cmd->peer_vht_caps = params->vht_caps;
- if (params->p2pCapableSta)
+ if (params->p2pCapableSta) {
cmd->peer_flags |= WMI_PEER_IS_P2P_CAPABLE;
+ wma_objmgr_set_peer_mlme_type(wma, params->staMac,
+ WLAN_PEER_P2P_CLI);
+ }
if (params->rmfEnabled)
cmd->peer_flags |= WMI_PEER_PMF;