qcacld-3.0: Send vdev pcl command when STA + STA roaming is active
Send Vdev pcl command on both connected STA vdev when sta+sta roaming is enabled. Handle below cases: 1. When 1st STA is connected send PDEV pcl command for the first sta. Set pcl_vdev_cmd_active false. 2. When 2nd STA comes up, Set pcl_vdev_cmd_active to true, send vdev PCL for 1st sta before enabling roaming(disabled as part of the connect on 2nd STA). 3. For second STA force dbs connection when enable_dual_sta_roam_offload ini is enabled. Set the channels of the 1st connected STA band as invalid and remove these channels from the scan filter. 4. On disconnection of 2nd STA connection, clear the vdev PCL sent for 1st STA and then send PDEV pcl command. Also make changes to send set PCL command after roam init is done before RSO start is done at firmware to avoid assert. Post set pcl command from sme/csr through lim/wma/wmi to avoid the above condition. Disable roaming on the vdev before sending set PCL command to avoid roaming on undesirable band & channels. Change-Id: I6bd869015b7248fe5c5c90b6e2fa0174995be197 CRs-Fixed: 2725360
このコミットが含まれているのは:
@@ -52,11 +52,13 @@ enum wlan_cm_rso_control_requestor {
|
||||
* struct set_pcl_req - Request message to set the PCL
|
||||
* @vdev_id: Vdev id
|
||||
* @band_mask: Supported band mask
|
||||
* @clear_vdev_pcl: Clear the configured vdev pcl channels
|
||||
* @chan_weights: PCL channel weights
|
||||
*/
|
||||
struct set_pcl_req {
|
||||
uint8_t vdev_id;
|
||||
uint32_t band_mask;
|
||||
bool clear_vdev_pcl;
|
||||
struct wmi_pcl_chan_weights chan_weights;
|
||||
};
|
||||
|
||||
|
@@ -50,7 +50,7 @@ void wlan_cm_roam_activate_pcl_per_vdev(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
/* value - true (vdev pcl) false - pdev pcl */
|
||||
mlme_priv->cm_roam.pcl_vdev_cmd_active = pcl_per_vdev;
|
||||
mlme_legacy_debug("CM_ROAM: SET PCL cmd level - [%s]",
|
||||
mlme_legacy_debug("CM_ROAM: vdev[%d] SET PCL cmd level - [%s]", vdev_id,
|
||||
pcl_per_vdev ? "VDEV" : "PDEV");
|
||||
}
|
||||
|
||||
|
@@ -81,6 +81,9 @@ wlan_cm_roam_send_set_vdev_pcl(struct wlan_objmgr_psoc *psoc,
|
||||
weights->saved_chan_list[i] = freq_list->freq[i];
|
||||
|
||||
weights->saved_num_chan = freq_list->num_channels;
|
||||
if (pcl_req->clear_vdev_pcl)
|
||||
weights->saved_num_chan = 0;
|
||||
|
||||
status = policy_mgr_get_valid_chan_weights(
|
||||
psoc, (struct policy_mgr_pcl_chan_weights *)weights);
|
||||
|
||||
@@ -109,7 +112,7 @@ wlan_cm_roam_send_set_vdev_pcl(struct wlan_objmgr_psoc *psoc,
|
||||
goto end;
|
||||
}
|
||||
|
||||
mlme_debug("LFR3: Dump Vdev PCL weights");
|
||||
mlme_debug("LFR3: vdev[%d] Dump Vdev PCL weights", pcl_req->vdev_id);
|
||||
policy_mgr_dump_channel_list(weights->saved_num_chan,
|
||||
weights->saved_chan_list,
|
||||
weights->weighed_valid_list);
|
||||
|
新しいイシューから参照
ユーザーをブロックする