qcacld-3.0: update rates set on connect success
Update operational rates set, extended operational rates set and MCS based rates set in VDEV MLME legacy priv object on connect success. Refine the APIs for fetching these rates. Change-Id: I7697b3d2e26e2fc565a2e672afe19f255af89d7e CRs-Fixed: 3044036
This commit is contained in:

committed by
Madan Koyyalamudi

parent
7e90b8b5f5
commit
d3a8dfe1b6
@@ -393,6 +393,7 @@ struct wait_for_key_timer {
|
||||
* @hb_failure_rssi: heartbeat failure AP RSSI
|
||||
* @opr_rate_set: operational rates set
|
||||
* @ext_opr_rate_set: extended operational rates set
|
||||
* @mcs_rate_set: MCS Based rates set
|
||||
* @mscs_req_info: Information related to mscs request
|
||||
* @he_config: he config
|
||||
* @he_sta_obsspd: he_sta_obsspd
|
||||
@@ -429,6 +430,7 @@ struct mlme_legacy_priv {
|
||||
uint32_t hb_failure_rssi;
|
||||
struct mlme_cfg_str opr_rate_set;
|
||||
struct mlme_cfg_str ext_opr_rate_set;
|
||||
struct mlme_cfg_str mcs_rate_set;
|
||||
bool twt_wait_for_notify;
|
||||
#ifdef WLAN_FEATURE_MSCS
|
||||
struct mscs_req_info mscs_req_info;
|
||||
|
@@ -114,10 +114,16 @@ QDF_STATUS mlme_init_rate_config(struct vdev_mlme_obj *vdev_mlme)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
mlme_priv->opr_rate_set.max_len = CFG_OPERATIONAL_RATE_SET_LEN;
|
||||
mlme_priv->opr_rate_set.max_len =
|
||||
QDF_MIN(CFG_OPERATIONAL_RATE_SET_LEN, CFG_STR_DATA_LEN);
|
||||
mlme_priv->opr_rate_set.len = 0;
|
||||
mlme_priv->ext_opr_rate_set.max_len = CFG_OPERATIONAL_RATE_SET_LEN;
|
||||
mlme_priv->ext_opr_rate_set.max_len =
|
||||
QDF_MIN(CFG_EXTENDED_OPERATIONAL_RATE_SET_LEN,
|
||||
CFG_STR_DATA_LEN);
|
||||
mlme_priv->ext_opr_rate_set.len = 0;
|
||||
mlme_priv->mcs_rate_set.max_len =
|
||||
QDF_MIN(CFG_SUPPORTED_MCS_SET_LEN, CFG_STR_DATA_LEN);
|
||||
mlme_priv->mcs_rate_set.len = 0;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -3154,13 +3154,13 @@ wlan_mlme_get_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool *val);
|
||||
/**
|
||||
* mlme_get_opr_rate() - get operational rate
|
||||
* @vdev: vdev pointer
|
||||
* @dst: pointer to get operational rate
|
||||
* @len: length of operational rate
|
||||
* @dst: buffer to get rates set
|
||||
* @len: length of the buffer
|
||||
*
|
||||
* Return: QDF_SUCCESS if success
|
||||
* Return: length of the rates set
|
||||
*/
|
||||
QDF_STATUS mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t *len);
|
||||
qdf_size_t mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t len);
|
||||
|
||||
/**
|
||||
* mlme_set_opr_rate() - set operational rate
|
||||
@@ -3176,13 +3176,13 @@ QDF_STATUS mlme_set_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
/**
|
||||
* mlme_get_ext_opr_rate() - get extended operational rate
|
||||
* @vdev: vdev pointer
|
||||
* @dst: pointer to get extended operational rate
|
||||
* @len: length of extended operational rate
|
||||
* @dst: buffer to get rates set
|
||||
* @len: length of the buffer
|
||||
*
|
||||
* Return: QDF_SUCCESS if success
|
||||
* Return: length of the rates set
|
||||
*/
|
||||
QDF_STATUS mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t *len);
|
||||
qdf_size_t mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t len);
|
||||
|
||||
/**
|
||||
* mlme_set_ext_opr_rate() - set extended operational rate
|
||||
@@ -3195,6 +3195,28 @@ QDF_STATUS mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
QDF_STATUS mlme_set_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
qdf_size_t len);
|
||||
|
||||
/**
|
||||
* mlme_get_mcs_rate() - get MCS based rate
|
||||
* @vdev: vdev pointer
|
||||
* @dst: buffer to get rates set
|
||||
* @len: length of the buffer
|
||||
*
|
||||
* Return: length of the rates set
|
||||
*/
|
||||
qdf_size_t mlme_get_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t len);
|
||||
|
||||
/**
|
||||
* mlme_set_mcs_rate() - set MCS based rate
|
||||
* @vdev: vdev pointer
|
||||
* @src: pointer to set MCS based rate
|
||||
* @len: length of MCS based rate
|
||||
*
|
||||
* Return: QDF_SUCCESS if success
|
||||
*/
|
||||
QDF_STATUS mlme_set_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
qdf_size_t len);
|
||||
|
||||
/**
|
||||
* wlan_mlme_is_sta_mon_conc_supported() - Check if STA + Monitor mode
|
||||
* concurrency is supported
|
||||
|
@@ -2764,11 +2764,12 @@ ucfg_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
|
||||
* @psoc: pointer to vdev object
|
||||
* @buf: buffer to get rates set
|
||||
* @len: length of the buffer
|
||||
* Return: QDF Status
|
||||
*
|
||||
* Return: length of the rates set
|
||||
*/
|
||||
static inline QDF_STATUS
|
||||
static inline qdf_size_t
|
||||
ucfg_mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *buf,
|
||||
qdf_size_t *len)
|
||||
qdf_size_t len)
|
||||
{
|
||||
return mlme_get_opr_rate(vdev, buf, len);
|
||||
}
|
||||
@@ -2778,15 +2779,31 @@ ucfg_mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *buf,
|
||||
* @psoc: pointer to vdev object
|
||||
* @buf: buffer to get rates set
|
||||
* @len: length of the buffer
|
||||
* Return: QDF Status
|
||||
*
|
||||
* Return: length of the rates set
|
||||
*/
|
||||
static inline QDF_STATUS
|
||||
static inline qdf_size_t
|
||||
ucfg_mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *buf,
|
||||
qdf_size_t *len)
|
||||
qdf_size_t len)
|
||||
{
|
||||
return mlme_get_ext_opr_rate(vdev, buf, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_mcs_rate() - Get MCS based rate set
|
||||
* @psoc: pointer to vdev object
|
||||
* @buf: buffer to get rates set
|
||||
* @len: length of the buffer
|
||||
*
|
||||
* Return: length of the rates set
|
||||
*/
|
||||
static inline qdf_size_t
|
||||
ucfg_mlme_get_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *buf,
|
||||
qdf_size_t len)
|
||||
{
|
||||
return mlme_get_mcs_rate(vdev, buf, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_supported_mcs_set() - Get Supported MCS set
|
||||
* @psoc: pointer to psoc object
|
||||
|
@@ -4897,26 +4897,32 @@ wlan_mlme_get_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool *val)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t *len)
|
||||
qdf_size_t mlme_get_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t len)
|
||||
{
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
if (!vdev || !dst || !len) {
|
||||
mlme_legacy_err("invalid params");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_legacy_err("vdev legacy private object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
*len = mlme_priv->opr_rate_set.len;
|
||||
qdf_mem_copy(dst, mlme_priv->opr_rate_set.data, *len);
|
||||
if (len < mlme_priv->opr_rate_set.len) {
|
||||
mlme_legacy_err("Invalid length %zd (<%zd)", len,
|
||||
mlme_priv->opr_rate_set.len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
qdf_mem_copy(dst, mlme_priv->opr_rate_set.data,
|
||||
mlme_priv->opr_rate_set.len);
|
||||
|
||||
return mlme_priv->opr_rate_set.len;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_set_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
@@ -4947,26 +4953,32 @@ QDF_STATUS mlme_set_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t *len)
|
||||
qdf_size_t mlme_get_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t len)
|
||||
{
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
if (!vdev || !dst || !len) {
|
||||
mlme_legacy_err("invalid params");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_legacy_err("vdev legacy private object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
*len = mlme_priv->ext_opr_rate_set.len;
|
||||
qdf_mem_copy(dst, mlme_priv->ext_opr_rate_set.data, *len);
|
||||
if (len < mlme_priv->ext_opr_rate_set.len) {
|
||||
mlme_legacy_err("Invalid length %zd (<%zd)", len,
|
||||
mlme_priv->ext_opr_rate_set.len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
qdf_mem_copy(dst, mlme_priv->ext_opr_rate_set.data,
|
||||
mlme_priv->ext_opr_rate_set.len);
|
||||
|
||||
return mlme_priv->ext_opr_rate_set.len;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_set_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
@@ -4997,6 +5009,62 @@ QDF_STATUS mlme_set_ext_opr_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_size_t mlme_get_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *dst,
|
||||
qdf_size_t len)
|
||||
{
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
if (!vdev || !dst || !len) {
|
||||
mlme_legacy_err("invalid params");
|
||||
return 0;
|
||||
}
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_legacy_err("vdev legacy private object is NULL");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (len < mlme_priv->mcs_rate_set.len) {
|
||||
mlme_legacy_err("Invalid length %zd (<%zd)", len,
|
||||
mlme_priv->mcs_rate_set.len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
qdf_mem_copy(dst, mlme_priv->mcs_rate_set.data,
|
||||
mlme_priv->mcs_rate_set.len);
|
||||
|
||||
return mlme_priv->mcs_rate_set.len;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_set_mcs_rate(struct wlan_objmgr_vdev *vdev, uint8_t *src,
|
||||
qdf_size_t len)
|
||||
{
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
if (!vdev || !src) {
|
||||
mlme_legacy_err("invalid params");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_legacy_err("vdev legacy private object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (len > mlme_priv->mcs_rate_set.max_len) {
|
||||
mlme_legacy_err("Invalid len %zd (>%zd)", len,
|
||||
mlme_priv->mcs_rate_set.max_len);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
mlme_priv->mcs_rate_set.len = len;
|
||||
qdf_mem_copy(mlme_priv->mcs_rate_set.data, src, len);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static enum monitor_mode_concurrency
|
||||
wlan_mlme_get_monitor_mode_concurrency(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
|
Reference in New Issue
Block a user