qcacld-3.0: Keep bonded channels enabled for SET_FCC_CHANNEL 0/2
Currently host disables all 6 GHz channels and keeps only STA connected channel enabled. If STA bandwidth is greater than 20 MHz kernel send disconnect as the bonded channels are disabled. Similarly for STA + SAP SCC case, if STA bandwidth is 20 MHz and SAP bandwidth is greater than 20 MHz kernel sends stop_ap as the bonded channels are disabled. To address above scenarios, for standalone STA case keep the bonded channels enabled and for STA + SAP SCC case keep the bonded channels enabled for STA and SAP. Change-Id: I901e2697e83085e5656d13c2c8cdb9c70696cbc1 CRs-Fixed: 3575989
This commit is contained in:

کامیت شده توسط
Rahul Choudhary

والد
e68d5c4019
کامیت
30f5d91700
@@ -866,7 +866,7 @@ QDF_STATUS pe_open(struct mac_context *mac, struct cds_config_info *cds_cfg)
|
||||
lim_update_tx_pwr_on_ctry_change_cb);
|
||||
|
||||
wlan_reg_register_is_chan_connected_callback(mac->psoc,
|
||||
lim_is_chan_connected_for_mode);
|
||||
lim_get_connected_chan_for_mode);
|
||||
|
||||
if (mac->mlme_cfg->edca_params.enable_edca_params)
|
||||
lim_register_policy_mgr_callback(mac->psoc);
|
||||
@@ -916,7 +916,7 @@ QDF_STATUS pe_close(struct mac_context *mac)
|
||||
lim_update_tx_pwr_on_ctry_change_cb);
|
||||
|
||||
wlan_reg_unregister_is_chan_connected_callback(mac->psoc,
|
||||
lim_is_chan_connected_for_mode);
|
||||
lim_get_connected_chan_for_mode);
|
||||
|
||||
if (mac->lim.limDisassocDeauthCnfReq.pMlmDeauthReq) {
|
||||
qdf_mem_free(mac->lim.limDisassocDeauthCnfReq.pMlmDeauthReq);
|
||||
|
@@ -11536,9 +11536,11 @@ lim_update_tx_pwr_on_ctry_change_cb(uint8_t vdev_id)
|
||||
lim_set_tpc_power(mac_ctx, session);
|
||||
}
|
||||
|
||||
bool lim_is_chan_connected_for_mode(struct wlan_objmgr_psoc *psoc,
|
||||
enum QDF_OPMODE device_mode,
|
||||
qdf_freq_t chan_freq)
|
||||
struct wlan_channel *
|
||||
lim_get_connected_chan_for_mode(struct wlan_objmgr_psoc *psoc,
|
||||
enum QDF_OPMODE device_mode,
|
||||
qdf_freq_t start_freq,
|
||||
qdf_freq_t end_freq)
|
||||
{
|
||||
struct wlan_channel *des_chan;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
@@ -11554,23 +11556,26 @@ bool lim_is_chan_connected_for_mode(struct wlan_objmgr_psoc *psoc,
|
||||
if (vdev->vdev_mlme.vdev_opmode != device_mode)
|
||||
goto next;
|
||||
|
||||
if (!wlan_cm_is_vdev_connected(vdev))
|
||||
if ((device_mode == QDF_STA_MODE ||
|
||||
device_mode == QDF_P2P_CLIENT_MODE) &&
|
||||
!wlan_cm_is_vdev_connected(vdev))
|
||||
goto next;
|
||||
|
||||
des_chan = vdev->vdev_mlme.des_chan;
|
||||
if (!des_chan)
|
||||
goto next;
|
||||
|
||||
if (des_chan->ch_freq != chan_freq)
|
||||
if (des_chan->ch_freq < start_freq ||
|
||||
des_chan->ch_freq > end_freq)
|
||||
goto next;
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
return true;
|
||||
return des_chan;
|
||||
next:
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
}
|
||||
|
||||
return false;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
enum phy_ch_width
|
||||
|
@@ -3305,18 +3305,20 @@ void
|
||||
lim_update_tx_pwr_on_ctry_change_cb(uint8_t vdev_id);
|
||||
|
||||
/*
|
||||
* lim_is_chan_connected_for_mode() - Check if frequency is connected
|
||||
* for given opmode.
|
||||
* lim_get_connected_chan_for_mode() - Get connected channel for given opmode
|
||||
* in given frequency range.
|
||||
*
|
||||
* @psoc: Pointer to psoc object
|
||||
* @opmode: Vdev opmode
|
||||
* @freq: Frequency
|
||||
*
|
||||
* Return: Return true if frequency is connected for given opmode.
|
||||
* Return: Return connected channel in given frequcy range for given opmode.
|
||||
*/
|
||||
bool
|
||||
lim_is_chan_connected_for_mode(struct wlan_objmgr_psoc *psoc,
|
||||
enum QDF_OPMODE opmode,
|
||||
qdf_freq_t freq);
|
||||
struct wlan_channel *
|
||||
lim_get_connected_chan_for_mode(struct wlan_objmgr_psoc *psoc,
|
||||
enum QDF_OPMODE opmode,
|
||||
qdf_freq_t start_freq,
|
||||
qdf_freq_t end_freq);
|
||||
|
||||
/**
|
||||
* lim_convert_vht_chwidth_to_phy_chwidth() - Convert VHT operation
|
||||
|
مرجع در شماره جدید
Block a user