qcacld-3.0: Add ini to disable aggressive EDCA config

Add action_oui ini gActionOUIDisableAggressiveEDCA to identify peers for
which aggressive EDCA configuration causes some IOT issues.

Change-Id: Ifea0c224cef2378727c9f78d8b571ea9c57bb662
CRs-Fixed: 2507191
This commit is contained in:
Paul Zhang
2019-10-09 11:22:32 +08:00
zatwierdzone przez Gerrit - the friendly Code Review server
rodzic 980c1dcd15
commit cbae35c8b4
3 zmienionych plików z 48 dodań i 1 usunięć

Wyświetl plik

@@ -89,7 +89,8 @@
* @ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN: connect in 1x1 & disable diversity gain
* @ACTION_OUI_DISABLE_AGGRESSIVE_TX: disable aggressive TX in firmware
* @ACTION_OUI_FORCE_MAX_NSS: Force Max NSS connection with few IOT APs
* @ACTION_OUI_MAXIMUM_ID: maximun number of action oui types
* @ACTION_OUI_DISABLE_AGGRESSIVE_EDCA: disable aggressive EDCA with the ap
* @ACTION_OUI_MAXIMUM_ID: maximum number of action oui types
*/
enum action_oui_id {
ACTION_OUI_CONNECT_1X1 = 0,
@@ -100,6 +101,7 @@ enum action_oui_id {
ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN = 5,
ACTION_OUI_DISABLE_AGGRESSIVE_TX = 6,
ACTION_OUI_FORCE_MAX_NSS = 7,
ACTION_OUI_DISABLE_AGGRESSIVE_EDCA = 8,
ACTION_OUI_MAXIMUM_ID
};

Wyświetl plik

@@ -118,6 +118,7 @@ struct wlan_mlme_roam {
* @vdev_start_failed: flag to indicate that vdev start failed.
* @connection_fail: flag to indicate connection failed
* @cac_required_for_new_channel: if CAC is required for new channel
* @follow_ap_edca: if true, it is forced to follow the AP's edca.
* @assoc_type: vdev associate/reassociate type
* @dynamic_cfg: current configuration of nss, chains for vdev.
* @ini_cfg: Max configuration of nss, chains supported for vdev.
@@ -136,6 +137,7 @@ struct mlme_legacy_priv {
bool vdev_start_failed;
bool connection_fail;
bool cac_required_for_new_channel;
bool follow_ap_edca;
enum vdev_assoc_type assoc_type;
struct wlan_mlme_nss_chains dynamic_cfg;
struct wlan_mlme_nss_chains ini_cfg;
@@ -371,6 +373,23 @@ void mlme_set_peer_disconnect_ies(struct wlan_objmgr_vdev *vdev,
*/
void mlme_free_peer_disconnect_ies(struct wlan_objmgr_vdev *vdev);
/**
* mlme_set_follow_ap_edca_flag() - Set follow ap's edca flag
* @vdev: vdev pointer
* @flag: carries if following ap's edca is true or not.
*
* Return: None
*/
void mlme_set_follow_ap_edca_flag(struct wlan_objmgr_vdev *vdev, bool flag);
/**
* mlme_get_follow_ap_edca_flag() - Get follow ap's edca flag
* @vdev: vdev pointer
*
* Return: value of follow_ap_edca
*/
bool mlme_get_follow_ap_edca_flag(struct wlan_objmgr_vdev *vdev);
/**
* mlme_get_peer_disconnect_ies() - Get diconnect IEs from vdev object
* @vdev: vdev pointer

Wyświetl plik

@@ -2587,6 +2587,32 @@ struct wlan_ies *mlme_get_peer_disconnect_ies(struct wlan_objmgr_vdev *vdev)
return &mlme_priv->peer_disconnect_ies;
}
void mlme_set_follow_ap_edca_flag(struct wlan_objmgr_vdev *vdev, bool flag)
{
struct mlme_legacy_priv *mlme_priv;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (!mlme_priv) {
mlme_legacy_err("vdev legacy private object is NULL");
return;
}
mlme_priv->follow_ap_edca = flag;
}
bool mlme_get_follow_ap_edca_flag(struct wlan_objmgr_vdev *vdev)
{
struct mlme_legacy_priv *mlme_priv;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (!mlme_priv) {
mlme_legacy_err("vdev legacy private object is NULL");
return false;
}
return mlme_priv->follow_ap_edca;
}
void mlme_set_peer_pmf_status(struct wlan_objmgr_peer *peer,
bool is_pmf_enabled)
{