Browse Source

qcacmn: Populate BSS peer pointer for P2P GO

BSS peer pointer is currently not populated to P2P GO vdev during
peer attach, which will result in an assertion in function
wlan_objmgr_peer_get_ref once a remote peer object is created for
the same P2P GO vdev.

Populate the right BSS peer pointer to the P2P GO vdev during
peer attach.

Change-Id: I8d98d3b1c51d28dcda1ed0feadee30229c74dc9c
CRs-Fixed: 2218195
wadesong 7 years ago
parent
commit
73deb9aa73
1 changed files with 3 additions and 1 deletions
  1. 3 1
      umac/cmn_services/obj_mgr/src/wlan_objmgr_vdev_obj.c

+ 3 - 1
umac/cmn_services/obj_mgr/src/wlan_objmgr_vdev_obj.c

@@ -642,6 +642,7 @@ QDF_STATUS wlan_objmgr_vdev_peer_attach(struct wlan_objmgr_vdev *vdev,
 {
 {
 	struct wlan_objmgr_vdev_objmgr *objmgr = &vdev->vdev_objmgr;
 	struct wlan_objmgr_vdev_objmgr *objmgr = &vdev->vdev_objmgr;
 	struct wlan_objmgr_pdev *pdev;
 	struct wlan_objmgr_pdev *pdev;
+	enum QDF_OPMODE opmode;
 
 
 	wlan_vdev_obj_lock(vdev);
 	wlan_vdev_obj_lock(vdev);
 	pdev = wlan_vdev_get_pdev(vdev);
 	pdev = wlan_vdev_get_pdev(vdev);
@@ -675,8 +676,9 @@ QDF_STATUS wlan_objmgr_vdev_peer_attach(struct wlan_objmgr_vdev *vdev,
 		 * this peer as self peer
 		 * this peer as self peer
 		 */
 		 */
 		wlan_vdev_set_selfpeer(vdev, peer);
 		wlan_vdev_set_selfpeer(vdev, peer);
+		opmode = wlan_vdev_mlme_get_opmode(vdev);
 		/* For AP mode, self peer and BSS peer are same */
 		/* For AP mode, self peer and BSS peer are same */
-		if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE)
+		if ((opmode == QDF_SAP_MODE) || (opmode == QDF_P2P_GO_MODE))
 			wlan_vdev_set_bsspeer(vdev, peer);
 			wlan_vdev_set_bsspeer(vdev, peer);
 	}
 	}
 	/* set BSS peer for sta */
 	/* set BSS peer for sta */