qcacld-3.0: add ini for setting oui based aggr size

Add ini 'cfg_tx_iot_aggr', it gives an option to
configure Tx aggregation size in no. of MPDUs/MSDUs
for specified OUI. This can be useful for IOT issues.

Format of the configuration:
  cfg_tx_iot_aggr=<OUI-1>,<MSDU-1>,<MPDU-1>,<OUI-2>,<MSDU-2>,<MPDU-2>...
  MSDU/MPDU means the max tx aggregation size in no. of MSDUs/MPDUs,
  0 means not specified.

For example:
  cfg_tx_iot_aggr=112233,2,0,445566,3,32,778899,0,64
  If vendor OUI-1("\x11\x22\x33") is found in assoc resp,
    set tx amsdu size to 2;
  If vendor OUI-2("\x44\x55\x66") is found in assoc resp,
    set tx amsdu size to 3, set tx ampdu size to 32;
  If vendor OUI-3("\x77\x88\x99") is found in assoc resp,
    set tx ampdu size to 64.

Change-Id: Idcf370a4bf93ca299ce1126eaba4394be1ab5b9d
CRs-Fixed: 2849203
Dieser Commit ist enthalten in:
Yu Wang
2020-12-22 13:48:41 +08:00
committet von snandini
Ursprung 7cfe403da5
Commit 7d8cd82cfb
6 geänderte Dateien mit 257 neuen und 4 gelöschten Zeilen

Datei anzeigen

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -496,6 +496,51 @@
1, \
"Enable UAPSD for SAP")
#define IOT_AGGR_INFO_MAX_LEN 500
#define IOT_AGGR_INFO_MAX_NUM 32
#define IOT_AGGR_MSDU_MAX_NUM 6
#define IOT_AGGR_MPDU_MAX_NUM 512
/*
* <ini>
* cfg_tx_iot_aggr - OUI based tx aggr size for msdu/mpdu
*
* This ini gives an option to configure Tx aggregation size
* in no. of MPDUs/MSDUs for specified OUI.
* This can be useful for IOT issues.
*
* Format of the configuration:
* cfg_tx_iot_aggr=<OUI-1>,<MSDU-1>,<MPDU-1>,<OUI-2>,<MSDU-2>,<MPDU-2>...
* MSDU: 0..IOT_AGGR_MSDU_MAX_NUM, the max tx aggregation size in no. of MSDUs,
* 0 means not specified.
* MPDU: 0..IOT_AGGR_MPDU_MAX_NUM, the max tx aggregation size in no. of MPDUs,
* 0 means not specified.
* Note: MSDU-x/MPDU-x are the max values, FW will take decision for actual
* AMSDU/AMPDU size on different platforms.
*
* For example:
* cfg_tx_iot_aggr=112233,2,0,445566,3,32,778899,0,64
* If vendor OUI-1("\x11\x22\x33") is found in assoc resp,
* set tx amsdu size to 2;
* If vendor OUI-2("\x44\x55\x66") is found in assoc resp,
* set tx amsdu size to 3, set tx ampdu size to 32;
* If vendor OUI-3("\x77\x88\x99") is found in assoc resp,
* set tx ampdu size to 64.
*
* Related: IOT
*
* Supported Feature: IOT
*
* Usage: External
*
* </ini>
*/
#define CFG_TX_IOT_AGGR CFG_INI_STRING( \
"cfg_tx_iot_aggr", \
0, \
IOT_AGGR_INFO_MAX_LEN, \
"", \
"Used to configure OUI based tx aggr size for msdu/mpdu")
#define CFG_QOS_ALL \
CFG(CFG_SAP_MAX_INACTIVITY_OVERRIDE) \
CFG(CFG_TX_AGGREGATION_SIZE) \
@@ -514,6 +559,7 @@
CFG(CFG_TX_NON_AGGR_SW_RETRY_VI) \
CFG(CFG_TX_NON_AGGR_SW_RETRY_VO) \
CFG(CFG_TX_NON_AGGR_SW_RETRY) \
CFG(CFG_SAP_QOS_UAPSD)
CFG(CFG_SAP_QOS_UAPSD) \
CFG(CFG_TX_IOT_AGGR)
#endif /* __CFG_MLME_QOS_H */

Datei anzeigen

@@ -2380,6 +2380,34 @@ struct wlan_mlme_reg {
bool retain_nol_across_regdmn_update;
};
#define IOT_AGGR_INFO_MAX_NUM 32
/**
* struct wlan_iot_aggr - IOT related AGGR rule
*
* @oui: OUI for the rule
* @oui_len: length of the OUI
* @ampdu_sz: max aggregation size in no. of MPDUs
* @amsdu_sz: max aggregation size in no. of MSDUs
*/
struct wlan_iot_aggr {
uint8_t oui[OUI_LENGTH];
uint32_t oui_len;
uint32_t ampdu_sz;
uint32_t amsdu_sz;
};
/**
* struct wlan_mlme_iot - IOT related CFG Items
*
* @aggr: aggr rules
* @aggr_num: number of the configured aggr rules
*/
struct wlan_mlme_iot {
struct wlan_iot_aggr aggr[IOT_AGGR_INFO_MAX_NUM];
uint32_t aggr_num;
};
/**
* struct wlan_mlme_cfg - MLME config items
* @chainmask_cfg: VHT chainmask related cfg items
@@ -2423,6 +2451,7 @@ struct wlan_mlme_reg {
* @trig_score_delta: Roam score delta value for various roam triggers
* @trig_min_rssi: Expected minimum RSSI value of candidate AP for
* various roam triggers
* @iot: IOT related CFG items
*/
struct wlan_mlme_cfg {
struct wlan_mlme_chainmask chainmask_cfg;
@@ -2467,6 +2496,7 @@ struct wlan_mlme_cfg {
struct roam_trigger_score_delta trig_score_delta[NUM_OF_ROAM_TRIGGERS];
struct roam_trigger_min_rssi trig_min_rssi[NUM_OF_ROAM_MIN_RSSI];
struct wlan_mlme_ratemask ratemask_cfg;
struct wlan_mlme_iot iot;
};
enum pkt_origin {