mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
qcacld-3.0: Add support to configure HE fragmentaion
Add support to configure HE fragmentation support using NL command. Change-Id: I49b81df96a9c8199a1cc5994762aeba0ed9676b0 CRs-Fixed: 2166782
This commit is contained in:
parent
1d94aca1d9
commit
5cc2f0da1f
4 changed files with 52 additions and 8 deletions
|
|
@ -15120,11 +15120,11 @@ struct hdd_config {
|
|||
enum active_bpf_mode active_uc_bpf_mode;
|
||||
enum active_bpf_mode active_mc_bc_bpf_mode;
|
||||
bool enable_bcast_probe_rsp;
|
||||
uint8_t he_dynamic_frag_support;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
bool enable_ul_mimo;
|
||||
bool enable_ul_ofdma;
|
||||
uint32_t he_sta_obsspd;
|
||||
uint8_t he_dynamic_frag_support;
|
||||
#endif
|
||||
enum l1ss_sleep_allowed l1ss_sleep_allowed;
|
||||
uint32_t arp_ac_category;
|
||||
|
|
|
|||
|
|
@ -6272,6 +6272,8 @@ wlan_hdd_wifi_test_config_policy[
|
|||
.type = NLA_U8},
|
||||
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_SEND_ADDBA_REQ] = {
|
||||
.type = NLA_U8},
|
||||
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_FRAGMENTATION] = {
|
||||
.type = NLA_U8},
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -7336,6 +7338,20 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
|
|||
WMI_VDEV_PARAM_BA_MODE, set_val, VDEV_CMD);
|
||||
}
|
||||
|
||||
if (tb[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_FRAGMENTATION]) {
|
||||
cfg_val = nla_get_u8(tb[
|
||||
QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_FRAGMENTATION]
|
||||
);
|
||||
if (cfg_val > HE_FRAG_LEVEL1)
|
||||
set_val = HE_FRAG_LEVEL1;
|
||||
else
|
||||
set_val = cfg_val;
|
||||
|
||||
hdd_debug("set HE fragmention to %d", set_val);
|
||||
ret_val = sme_update_he_frag_supp(hdd_ctx->hHal,
|
||||
adapter->session_id, set_val);
|
||||
}
|
||||
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2145,6 +2145,17 @@ int sme_update_he_tx_stbc_cap(tHalHandle hal, uint8_t session_id, int value);
|
|||
* Return: 0 on success else err code
|
||||
*/
|
||||
int sme_update_he_rx_stbc_cap(tHalHandle hal, uint8_t session_id, int value);
|
||||
|
||||
/**
|
||||
* sme_update_he_frag_supp() - sets the HE fragmentation support
|
||||
* @hal: Pointer to HAL
|
||||
* @session_id: SME session id
|
||||
* @he_frag: HE fragmention support value
|
||||
*
|
||||
* Return: 0 on success else err code
|
||||
*/
|
||||
int sme_update_he_frag_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint16_t he_frag);
|
||||
#else
|
||||
static inline void sme_update_he_cap_nss(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t nss)
|
||||
|
|
@ -2165,6 +2176,12 @@ static inline int sme_update_he_rx_stbc_cap(tHalHandle hal, uint8_t session_id,
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sme_update_he_frag_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint16_t he_frag)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -13235,15 +13235,13 @@ static int sme_update_he_cap(tHalHandle hal, uint8_t session_id,
|
|||
{
|
||||
tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
|
||||
struct csr_roam_session *session;
|
||||
uint32_t he_cap_val = 0;
|
||||
|
||||
session = CSR_GET_SESSION(mac_ctx, session_id);
|
||||
if (!session) {
|
||||
sme_err("No session for id %d", session_id);
|
||||
return -EINVAL;
|
||||
}
|
||||
he_cap_val = value ? 1 : 0;
|
||||
sme_cfg_set_int(mac_ctx, he_cap, he_cap_val);
|
||||
sme_cfg_set_int(mac_ctx, he_cap, value);
|
||||
csr_update_session_he_cap(mac_ctx, session);
|
||||
|
||||
return 0;
|
||||
|
|
@ -13252,27 +13250,40 @@ static int sme_update_he_cap(tHalHandle hal, uint8_t session_id,
|
|||
int sme_update_he_tx_stbc_cap(tHalHandle hal, uint8_t session_id, int value)
|
||||
{
|
||||
int ret;
|
||||
uint32_t he_cap_val = 0;
|
||||
|
||||
he_cap_val = value ? 1 : 0;
|
||||
|
||||
ret = sme_update_he_cap(hal, session_id,
|
||||
WNI_CFG_HE_TX_STBC_LT80, value);
|
||||
WNI_CFG_HE_TX_STBC_LT80, he_cap_val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return sme_update_he_cap(hal, session_id,
|
||||
WNI_CFG_HE_TX_STBC_GT80, value);
|
||||
WNI_CFG_HE_TX_STBC_GT80, he_cap_val);
|
||||
}
|
||||
|
||||
int sme_update_he_rx_stbc_cap(tHalHandle hal, uint8_t session_id, int value)
|
||||
{
|
||||
int ret;
|
||||
uint32_t he_cap_val = 0;
|
||||
|
||||
he_cap_val = value ? 1 : 0;
|
||||
|
||||
ret = sme_update_he_cap(hal, session_id,
|
||||
WNI_CFG_HE_RX_STBC_LT80, value);
|
||||
WNI_CFG_HE_RX_STBC_LT80, he_cap_val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return sme_update_he_cap(hal, session_id,
|
||||
WNI_CFG_HE_RX_STBC_GT80, value);
|
||||
WNI_CFG_HE_RX_STBC_GT80, he_cap_val);
|
||||
}
|
||||
|
||||
int sme_update_he_frag_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint16_t he_frag)
|
||||
{
|
||||
return sme_update_he_cap(hal, session_id,
|
||||
WNI_CFG_HE_FRAGMENTATION, he_frag);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue