Browse Source

qcacld-3.0: Avoid phymode and puncture mismatch

Host semd wmi as following order after CSA received/vdev restart and
before vdev up, old puncture bitmap mismatched with new phy mode lead to
F/W assert.
1.	WMI PEER PHY MODE
2.	WMI PEER PUNCTURE BITMAP and BW

To fix it, swap order as following
1.	WMI PEER PUNCTURE BITMAP and BW
2.	WMI PEER PHY MODE

Change-Id: I1ae3e5093cb45520be0f50ffb31fa7386201340b
CRs-Fixed: 3650797
Jianmin Zhu 1 year ago
parent
commit
817f1e2bb5
1 changed files with 3 additions and 3 deletions
  1. 3 3
      core/wma/src/wma_dev_if.c

+ 3 - 3
core/wma/src/wma_dev_if.c

@@ -1041,9 +1041,6 @@ static void wma_peer_send_phymode(struct wlan_objmgr_vdev *vdev,
 	fw_phymode = wmi_host_to_fw_phymode(new_phymode);
 	vdev_id = wlan_vdev_get_id(vdev);
 
-	wma_set_peer_param(wma, peer_mac_addr, WMI_HOST_PEER_PHYMODE,
-			   fw_phymode, vdev_id);
-
 	max_ch_width_supported =
 		wmi_get_ch_width_from_phy_mode(wma->wmi_handle,
 					       fw_phymode);
@@ -1066,6 +1063,9 @@ static void wma_peer_send_phymode(struct wlan_objmgr_vdev *vdev,
 		wma_set_peer_param(wma, peer_mac_addr, WMI_HOST_PEER_CHWIDTH,
 				   max_ch_width_supported, vdev_id);
 	}
+
+	wma_set_peer_param(wma, peer_mac_addr, WMI_HOST_PEER_PHYMODE,
+			   fw_phymode, vdev_id);
 	wma_debug("FW phymode %d old phymode %d new phymode %d bw %d punct: 0x%x macaddr " QDF_MAC_ADDR_FMT,
 		  fw_phymode, old_peer_phymode, new_phymode,
 		  max_ch_width_supported, new_puncture_bitmap,