qcacld-3.0: Add ini support to control update cw
Add support for INI update_cw_allowed to enable or disable update channel width via vendor command QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_WIDTH Change-Id: I1f4ab2c7ca8dacb93442803336d59a4a5ffb1b47 CRs-Fixed: 3659655
This commit is contained in:

committed by
Ravindra Konda

parent
ecdb21e4d0
commit
f8a690b38f
@@ -1969,6 +1969,8 @@ static void mlme_init_feature_flag_in_cfg(
|
|||||||
cfg_get(psoc, CFG_CHANNEL_BONDING_MODE_24GHZ);
|
cfg_get(psoc, CFG_CHANNEL_BONDING_MODE_24GHZ);
|
||||||
feature_flags->channel_bonding_mode_5ghz =
|
feature_flags->channel_bonding_mode_5ghz =
|
||||||
cfg_get(psoc, CFG_CHANNEL_BONDING_MODE_5GHZ);
|
cfg_get(psoc, CFG_CHANNEL_BONDING_MODE_5GHZ);
|
||||||
|
feature_flags->update_cw_allowed =
|
||||||
|
cfg_get(psoc, CFG_ALLOW_UPDATE_CHANNEL_WIDTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mlme_init_sap_protection_cfg(struct wlan_objmgr_psoc *psoc,
|
static void mlme_init_sap_protection_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
||||||
|
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -222,6 +223,29 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"Configures Channel Bonding in 5 GHz")
|
"Configures Channel Bonding in 5 GHz")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* update_cw_allowed - process set channel width or not
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 1
|
||||||
|
*
|
||||||
|
* This ini is used to check whether driver allowed to process set channel
|
||||||
|
* width request from upper layer or not.
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_ALLOW_UPDATE_CHANNEL_WIDTH CFG_INI_BOOL( \
|
||||||
|
"update_cw_allowed", \
|
||||||
|
1, \
|
||||||
|
"is update chan width allowed")
|
||||||
|
|
||||||
#define CFG_FEATURE_FLAG_ALL \
|
#define CFG_FEATURE_FLAG_ALL \
|
||||||
CFG(CFG_ACCEPT_SHORT_SLOT_ASSOC_ONLY) \
|
CFG(CFG_ACCEPT_SHORT_SLOT_ASSOC_ONLY) \
|
||||||
CFG(CFG_HCF_ENABLED) \
|
CFG(CFG_HCF_ENABLED) \
|
||||||
@@ -235,7 +259,8 @@
|
|||||||
CFG(CFG_BLOCK_ACK_ENABLED) \
|
CFG(CFG_BLOCK_ACK_ENABLED) \
|
||||||
CFG(CFG_ENABLE_AMPDUPS) \
|
CFG(CFG_ENABLE_AMPDUPS) \
|
||||||
CFG(CFG_CHANNEL_BONDING_MODE_24GHZ) \
|
CFG(CFG_CHANNEL_BONDING_MODE_24GHZ) \
|
||||||
CFG(CFG_CHANNEL_BONDING_MODE_5GHZ)
|
CFG(CFG_CHANNEL_BONDING_MODE_5GHZ) \
|
||||||
|
CFG(CFG_ALLOW_UPDATE_CHANNEL_WIDTH)
|
||||||
|
|
||||||
#endif /* __CFG_MLME_FEATURE_FLAG_H */
|
#endif /* __CFG_MLME_FEATURE_FLAG_H */
|
||||||
|
|
||||||
|
@@ -4569,6 +4569,18 @@ QDF_STATUS
|
|||||||
wlan_mlme_get_tx_retry_multiplier(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_get_tx_retry_multiplier(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t *tx_retry_multiplier);
|
uint32_t *tx_retry_multiplier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_update_chan_width_allowed - Get value of INI
|
||||||
|
* is_update_chan_width_allowed
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: pointer to the value which will be filled for the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_update_chan_width_allowed(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_get_channel_bonding_5ghz - Get the channel bonding
|
* wlan_mlme_get_channel_bonding_5ghz - Get the channel bonding
|
||||||
* val for 5ghz freq
|
* val for 5ghz freq
|
||||||
|
@@ -1199,6 +1199,7 @@ struct wlan_mlme_rates {
|
|||||||
* @enable_block_ack: enable block ack feature
|
* @enable_block_ack: enable block ack feature
|
||||||
* @channel_bonding_mode_24ghz: configures Channel Bonding in 24 GHz
|
* @channel_bonding_mode_24ghz: configures Channel Bonding in 24 GHz
|
||||||
* @channel_bonding_mode_5ghz: configures Channel Bonding in 5 GHz
|
* @channel_bonding_mode_5ghz: configures Channel Bonding in 5 GHz
|
||||||
|
* @update_cw_allowed: to check update chan width allowed or not
|
||||||
*/
|
*/
|
||||||
struct wlan_mlme_feature_flag {
|
struct wlan_mlme_feature_flag {
|
||||||
bool accept_short_slot_assoc;
|
bool accept_short_slot_assoc;
|
||||||
@@ -1214,6 +1215,7 @@ struct wlan_mlme_feature_flag {
|
|||||||
uint32_t enable_block_ack;
|
uint32_t enable_block_ack;
|
||||||
uint32_t channel_bonding_mode_24ghz;
|
uint32_t channel_bonding_mode_24ghz;
|
||||||
uint32_t channel_bonding_mode_5ghz;
|
uint32_t channel_bonding_mode_5ghz;
|
||||||
|
bool update_cw_allowed;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -4681,6 +4681,18 @@ QDF_STATUS ucfg_mlme_set_restricted_80p80_bw_supp(struct wlan_objmgr_psoc *psoc,
|
|||||||
*/
|
*/
|
||||||
bool ucfg_mlme_get_restricted_80p80_bw_supp(struct wlan_objmgr_psoc *psoc);
|
bool ucfg_mlme_get_restricted_80p80_bw_supp(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_update_chan_width_allowed - Get value of INI
|
||||||
|
* is_update_chan_width_allowed
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: pointer to the value which will be filled for the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_mlme_get_update_chan_width_allowed(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_get_channel_bonding_24ghz() - get channel bonding mode of 24ghz
|
* ucfg_mlme_get_channel_bonding_24ghz() - get channel bonding mode of 24ghz
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
@@ -4702,6 +4714,7 @@ ucfg_mlme_get_channel_bonding_24ghz(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
ucfg_mlme_set_channel_bonding_24ghz(struct wlan_objmgr_psoc *psoc,
|
ucfg_mlme_set_channel_bonding_24ghz(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t value);
|
uint32_t value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_get_channel_bonding_5ghz() - get channel bonding mode of 5ghz
|
* ucfg_mlme_get_channel_bonding_5ghz() - get channel bonding mode of 5ghz
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
|
@@ -6822,6 +6822,23 @@ wlan_mlme_get_tx_retry_multiplier(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_update_chan_width_allowed(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
*value = cfg_default(CFG_ALLOW_UPDATE_CHANNEL_WIDTH);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.feature_flags.update_cw_allowed;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_get_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_get_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t *value)
|
uint32_t *value)
|
||||||
|
@@ -1865,6 +1865,13 @@ ucfg_mlme_set_channel_bonding_24ghz(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_mlme_get_update_chan_width_allowed(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_update_chan_width_allowed(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
ucfg_mlme_get_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
|
ucfg_mlme_get_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t *value)
|
uint32_t *value)
|
||||||
|
@@ -11100,6 +11100,20 @@ static int hdd_set_channel_width(struct wlan_hdd_link_info *link_info,
|
|||||||
struct nlattr *chn_bd = NULL;
|
struct nlattr *chn_bd = NULL;
|
||||||
struct nlattr *mlo_link_id;
|
struct nlattr *mlo_link_id;
|
||||||
enum eSirMacHTChannelWidth chwidth;
|
enum eSirMacHTChannelWidth chwidth;
|
||||||
|
struct wlan_objmgr_psoc *psoc;
|
||||||
|
bool update_cw_allowed;
|
||||||
|
|
||||||
|
psoc = wlan_vdev_get_psoc(link_info->vdev);
|
||||||
|
if (!psoc) {
|
||||||
|
hdd_debug("psoc is null");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ucfg_mlme_get_update_chan_width_allowed(psoc, &update_cw_allowed);
|
||||||
|
if (!update_cw_allowed) {
|
||||||
|
hdd_debug("update_channel_width is disabled via INI");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!tb[QCA_WLAN_VENDOR_ATTR_CONFIG_MLO_LINKS])
|
if (!tb[QCA_WLAN_VENDOR_ATTR_CONFIG_MLO_LINKS])
|
||||||
goto skip_mlo;
|
goto skip_mlo;
|
||||||
|
Reference in New Issue
Block a user