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:
Asutosh Mohapatra
2023-08-02 00:25:59 -07:00
کامیت شده توسط Rahul Choudhary
والد e68d5c4019
کامیت 30f5d91700
3فایلهای تغییر یافته به همراه23 افزوده شده و 16 حذف شده

مشاهده پرونده

@@ -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