Disable aggregation in 2.4G based on BTC events.
Disable aggregation on all links in 2.4G band when BTC indicates
not to use aggregation and enable it again on BTC event.
Change-Id: I55d013c4f7bd36346a5b994ed6e4b487a0fa019f
CRs-Fixed: 461869
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 1dbafef..f51d361 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -591,6 +591,11 @@
#define CFG_RETRY_LIMIT_TWO_MAX ( 15 )
#define CFG_RETRY_LIMIT_TWO_DEFAULT ( 15 )
+#define CFG_DISABLE_AGG_WITH_BTC_NAME "gDisableAggWithBTC"
+#define CFG_DISABLE_AGG_WITH_BTC_MIN ( 0 )
+#define CFG_DISABLE_AGG_WITH_BTC_MAX ( 1 )
+#define CFG_DISABLE_AGG_WITH_BTC_DEFAULT ( 1 )
+
#ifdef WLAN_AP_STA_CONCURRENCY
#define CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME "gPassiveMaxChannelTimeConc"
@@ -2107,6 +2112,7 @@
v_U8_t retryLimitZero;
v_U8_t retryLimitOne;
v_U8_t retryLimitTwo;
+ v_U8_t disableAggWithBtc;
char listOfNonDfsCountryCode[128];
v_BOOL_t enableSSR;
char listOfNon11acCountryCode[128];
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 68d3c24..f7a72af 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -822,6 +822,13 @@
CFG_RETRY_LIMIT_TWO_MIN,
CFG_RETRY_LIMIT_TWO_MAX ),
+ REG_VARIABLE( CFG_DISABLE_AGG_WITH_BTC_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, disableAggWithBtc,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_DISABLE_AGG_WITH_BTC_DEFAULT,
+ CFG_DISABLE_AGG_WITH_BTC_MIN,
+ CFG_DISABLE_AGG_WITH_BTC_MAX ),
+
#ifdef WLAN_AP_STA_CONCURRENCY
REG_VARIABLE( CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
hdd_config_t, nPassiveMaxChnTimeConc,
@@ -3820,6 +3827,7 @@
smeConfig.csrConfig.nPassiveMinChnTime = pConfig->nPassiveMinChnTime;
smeConfig.csrConfig.nActiveMaxChnTimeBtc = pConfig->nActiveMaxChnTimeBtc;
smeConfig.csrConfig.nActiveMinChnTimeBtc = pConfig->nActiveMinChnTimeBtc;
+ smeConfig.csrConfig.disableAggWithBtc = pConfig->disableAggWithBtc;
#ifdef WLAN_AP_STA_CONCURRENCY
smeConfig.csrConfig.nActiveMaxChnTimeConc = pConfig->nActiveMaxChnTimeConc;
smeConfig.csrConfig.nActiveMinChnTimeConc = pConfig->nActiveMinChnTimeConc;
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 2f833fd..8d324c6 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -3342,6 +3342,8 @@
#define SIR_COEX_IND_TYPE_ENABLE_HB_MONITOR (1)
#define SIR_COEX_IND_TYPE_SCAN_COMPROMISED (2)
#define SIR_COEX_IND_TYPE_SCAN_NOT_COMPROMISED (3)
+#define SIR_COEX_IND_TYPE_DISABLE_AGGREGATION_IN_2p4 (4)
+#define SIR_COEX_IND_TYPE_ENABLE_AGGREGATION_IN_2p4 (5)
typedef struct sSirSmeCoexInd
{
diff --git a/CORE/MAC/inc/sirMacProtDef.h b/CORE/MAC/inc/sirMacProtDef.h
index 7463076..ac41285 100644
--- a/CORE/MAC/inc/sirMacProtDef.h
+++ b/CORE/MAC/inc/sirMacProtDef.h
@@ -38,8 +38,9 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
+
+
/*
- * Airgo Networks, Inc proprietary. All rights reserved.
* This file sirMacProtDef.h contains the MAC/PHY protocol
* definitions used across various projects.
* Author: Chandra Modumudi
@@ -632,6 +633,10 @@
#define IS_WES_MODE_ENABLED(x) \
((x)->roam.configParam.isWESModeEnabled)
+#define BA_RECIPIENT 1
+#define BA_INITIATOR 2
+#define BA_BOTH_DIRECTIONS 3
+
/// Status Code (present in Management response frames) enum
typedef enum eSirMacStatusCodes
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index 96187e2..615ff73 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -290,75 +290,76 @@
#define WNI_CFG_MAX_BA_SESSIONS 225
#define WNI_CFG_BA_AUTO_SETUP 226
#define WNI_CFG_ADDBA_REQ_DECLINE 227
-#define WNI_CFG_BG_SCAN_CHANNEL_LIST 228
-#define WNI_CFG_MAX_MEDIUM_TIME 229
-#define WNI_CFG_MAX_MPDUS_IN_AMPDU 230
-#define WNI_CFG_IBSS_AUTO_BSSID 231
-#define WNI_CFG_PROBE_REQ_ADDNIE_FLAG 232
-#define WNI_CFG_PROBE_REQ_ADDNIE_DATA 233
-#define WNI_CFG_PROBE_RSP_ADDNIE_FLAG 234
-#define WNI_CFG_PROBE_RSP_ADDNIE_DATA1 235
-#define WNI_CFG_PROBE_RSP_ADDNIE_DATA2 236
-#define WNI_CFG_PROBE_RSP_ADDNIE_DATA3 237
-#define WNI_CFG_ASSOC_RSP_ADDNIE_FLAG 238
-#define WNI_CFG_ASSOC_RSP_ADDNIE_DATA 239
-#define WNI_CFG_PROBE_REQ_ADDNP2PIE_FLAG 240
-#define WNI_CFG_PROBE_REQ_ADDNP2PIE_DATA 241
-#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_FLAG 242
-#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA 243
-#define WNI_CFG_WPS_ENABLE 244
-#define WNI_CFG_WPS_STATE 245
-#define WNI_CFG_WPS_PROBE_REQ_FLAG 246
-#define WNI_CFG_WPS_VERSION 247
-#define WNI_CFG_WPS_REQUEST_TYPE 248
-#define WNI_CFG_WPS_CFG_METHOD 249
-#define WNI_CFG_WPS_UUID 250
-#define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY 251
-#define WNI_CFG_WPS_PIMARY_DEVICE_OUI 252
-#define WNI_CFG_WPS_DEVICE_SUB_CATEGORY 253
-#define WNI_CFG_WPS_ASSOCIATION_STATE 254
-#define WNI_CFG_WPS_CONFIGURATION_ERROR 255
-#define WNI_CFG_WPS_DEVICE_PASSWORD_ID 256
-#define WNI_CFG_WPS_ASSOC_METHOD 257
-#define WNI_CFG_LOW_GAIN_OVERRIDE 258
-#define WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE 259
-#define WNI_CFG_RPE_POLLING_THRESHOLD 260
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC0_REG 261
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC1_REG 262
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC2_REG 263
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC3_REG 264
-#define WNI_CFG_NO_OF_ONCHIP_REORDER_SESSIONS 265
-#define WNI_CFG_SINGLE_TID_RC 266
-#define WNI_CFG_RRM_ENABLED 267
-#define WNI_CFG_RRM_OPERATING_CHAN_MAX 268
-#define WNI_CFG_RRM_NON_OPERATING_CHAN_MAX 269
-#define WNI_CFG_TX_PWR_CTRL_ENABLE 270
-#define WNI_CFG_MCAST_BCAST_FILTER_SETTING 271
-#define WNI_CFG_BTC_DHCP_BT_SLOTS_TO_BLOCK 272
-#define WNI_CFG_DYNAMIC_PS_POLL_VALUE 273
-#define WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT 274
-#define WNI_CFG_TELE_BCN_WAKEUP_EN 275
-#define WNI_CFG_TELE_BCN_TRANS_LI 276
-#define WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS 277
-#define WNI_CFG_TELE_BCN_MAX_LI 278
-#define WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS 279
-#define WNI_CFG_BTC_A2DP_DHCP_BT_SUB_INTERVALS 280
-#define WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD 281
-#define WNI_CFG_ASSOC_STA_LIMIT 282
-#define WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL 283
-#define WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL 284
-#define WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND 285
-#define WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD 286
-#define WNI_CFG_ENABLE_CLOSE_LOOP 287
-#define WNI_CFG_ENABLE_LTE_COEX 288
-#define WNI_CFG_AP_KEEP_ALIVE_TIMEOUT 289
-#define WNI_CFG_GO_KEEP_ALIVE_TIMEOUT 290
-#define WNI_CFG_ENABLE_MC_ADDR_LIST 291
-#define WNI_CFG_ENABLE_UC_FILTER 292
-#define WNI_CFG_ENABLE_LPWR_IMG_TRANSITION 293
-#define WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED 294
-#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP 295
-#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT 296
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC 228
+#define WNI_CFG_BG_SCAN_CHANNEL_LIST 229
+#define WNI_CFG_MAX_MEDIUM_TIME 230
+#define WNI_CFG_MAX_MPDUS_IN_AMPDU 231
+#define WNI_CFG_IBSS_AUTO_BSSID 232
+#define WNI_CFG_PROBE_REQ_ADDNIE_FLAG 233
+#define WNI_CFG_PROBE_REQ_ADDNIE_DATA 234
+#define WNI_CFG_PROBE_RSP_ADDNIE_FLAG 235
+#define WNI_CFG_PROBE_RSP_ADDNIE_DATA1 236
+#define WNI_CFG_PROBE_RSP_ADDNIE_DATA2 237
+#define WNI_CFG_PROBE_RSP_ADDNIE_DATA3 238
+#define WNI_CFG_ASSOC_RSP_ADDNIE_FLAG 239
+#define WNI_CFG_ASSOC_RSP_ADDNIE_DATA 240
+#define WNI_CFG_PROBE_REQ_ADDNP2PIE_FLAG 241
+#define WNI_CFG_PROBE_REQ_ADDNP2PIE_DATA 242
+#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_FLAG 243
+#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA 244
+#define WNI_CFG_WPS_ENABLE 245
+#define WNI_CFG_WPS_STATE 246
+#define WNI_CFG_WPS_PROBE_REQ_FLAG 247
+#define WNI_CFG_WPS_VERSION 248
+#define WNI_CFG_WPS_REQUEST_TYPE 249
+#define WNI_CFG_WPS_CFG_METHOD 250
+#define WNI_CFG_WPS_UUID 251
+#define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY 252
+#define WNI_CFG_WPS_PIMARY_DEVICE_OUI 253
+#define WNI_CFG_WPS_DEVICE_SUB_CATEGORY 254
+#define WNI_CFG_WPS_ASSOCIATION_STATE 255
+#define WNI_CFG_WPS_CONFIGURATION_ERROR 256
+#define WNI_CFG_WPS_DEVICE_PASSWORD_ID 257
+#define WNI_CFG_WPS_ASSOC_METHOD 258
+#define WNI_CFG_LOW_GAIN_OVERRIDE 259
+#define WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE 260
+#define WNI_CFG_RPE_POLLING_THRESHOLD 261
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC0_REG 262
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC1_REG 263
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC2_REG 264
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC3_REG 265
+#define WNI_CFG_NO_OF_ONCHIP_REORDER_SESSIONS 266
+#define WNI_CFG_SINGLE_TID_RC 267
+#define WNI_CFG_RRM_ENABLED 268
+#define WNI_CFG_RRM_OPERATING_CHAN_MAX 269
+#define WNI_CFG_RRM_NON_OPERATING_CHAN_MAX 270
+#define WNI_CFG_TX_PWR_CTRL_ENABLE 271
+#define WNI_CFG_MCAST_BCAST_FILTER_SETTING 272
+#define WNI_CFG_BTC_DHCP_BT_SLOTS_TO_BLOCK 273
+#define WNI_CFG_DYNAMIC_PS_POLL_VALUE 274
+#define WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT 275
+#define WNI_CFG_TELE_BCN_WAKEUP_EN 276
+#define WNI_CFG_TELE_BCN_TRANS_LI 277
+#define WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS 278
+#define WNI_CFG_TELE_BCN_MAX_LI 279
+#define WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS 280
+#define WNI_CFG_BTC_A2DP_DHCP_BT_SUB_INTERVALS 281
+#define WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD 282
+#define WNI_CFG_ASSOC_STA_LIMIT 283
+#define WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL 284
+#define WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL 285
+#define WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND 286
+#define WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD 287
+#define WNI_CFG_ENABLE_CLOSE_LOOP 288
+#define WNI_CFG_ENABLE_LTE_COEX 289
+#define WNI_CFG_AP_KEEP_ALIVE_TIMEOUT 290
+#define WNI_CFG_GO_KEEP_ALIVE_TIMEOUT 291
+#define WNI_CFG_ENABLE_MC_ADDR_LIST 292
+#define WNI_CFG_ENABLE_UC_FILTER 293
+#define WNI_CFG_ENABLE_LPWR_IMG_TRANSITION 294
+#define WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED 295
+#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP 296
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT 297
/*
* String parameter lengths
@@ -2002,6 +2003,14 @@
#define WNI_CFG_ADDBA_REQ_DECLINE_APMAX 255
#define WNI_CFG_ADDBA_REQ_DECLINE_APDEF 0
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_STAMIN 0
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_STAMAX 1
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_STADEF 0
+
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_APMIN 0
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_APMAX 1
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_APDEF 0
+
#define WNI_CFG_MAX_MEDIUM_TIME_STAMIN 0
#define WNI_CFG_MAX_MEDIUM_TIME_STAMAX 65535
#define WNI_CFG_MAX_MEDIUM_TIME_STADEF 2048
@@ -2477,10 +2486,10 @@
#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_APMAX 255
#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_APDEF 3
-#define CFG_PARAM_MAX_NUM 297
-#define CFG_AP_IBUF_MAX_SIZE 236
+#define CFG_PARAM_MAX_NUM 298
+#define CFG_AP_IBUF_MAX_SIZE 237
#define CFG_AP_SBUF_MAX_SIZE 3422
-#define CFG_STA_IBUF_MAX_SIZE 231
+#define CFG_STA_IBUF_MAX_SIZE 232
#define CFG_STA_SBUF_MAX_SIZE 3388
#define CFG_SEM_MAX_NUM 19
diff --git a/CORE/MAC/inc/wniCfgSta.h b/CORE/MAC/inc/wniCfgSta.h
index 571d559..4d1e31a 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -284,75 +284,76 @@
#define WNI_CFG_MAX_BA_SESSIONS 225
#define WNI_CFG_BA_AUTO_SETUP 226
#define WNI_CFG_ADDBA_REQ_DECLINE 227
-#define WNI_CFG_BG_SCAN_CHANNEL_LIST 228
-#define WNI_CFG_MAX_MEDIUM_TIME 229
-#define WNI_CFG_MAX_MPDUS_IN_AMPDU 230
-#define WNI_CFG_IBSS_AUTO_BSSID 231
-#define WNI_CFG_PROBE_REQ_ADDNIE_FLAG 232
-#define WNI_CFG_PROBE_REQ_ADDNIE_DATA 233
-#define WNI_CFG_PROBE_RSP_ADDNIE_FLAG 234
-#define WNI_CFG_PROBE_RSP_ADDNIE_DATA1 235
-#define WNI_CFG_PROBE_RSP_ADDNIE_DATA2 236
-#define WNI_CFG_PROBE_RSP_ADDNIE_DATA3 237
-#define WNI_CFG_ASSOC_RSP_ADDNIE_FLAG 238
-#define WNI_CFG_ASSOC_RSP_ADDNIE_DATA 239
-#define WNI_CFG_PROBE_REQ_ADDNP2PIE_FLAG 240
-#define WNI_CFG_PROBE_REQ_ADDNP2PIE_DATA 241
-#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_FLAG 242
-#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA 243
-#define WNI_CFG_WPS_ENABLE 244
-#define WNI_CFG_WPS_STATE 245
-#define WNI_CFG_WPS_PROBE_REQ_FLAG 246
-#define WNI_CFG_WPS_VERSION 247
-#define WNI_CFG_WPS_REQUEST_TYPE 248
-#define WNI_CFG_WPS_CFG_METHOD 249
-#define WNI_CFG_WPS_UUID 250
-#define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY 251
-#define WNI_CFG_WPS_PIMARY_DEVICE_OUI 252
-#define WNI_CFG_WPS_DEVICE_SUB_CATEGORY 253
-#define WNI_CFG_WPS_ASSOCIATION_STATE 254
-#define WNI_CFG_WPS_CONFIGURATION_ERROR 255
-#define WNI_CFG_WPS_DEVICE_PASSWORD_ID 256
-#define WNI_CFG_WPS_ASSOC_METHOD 257
-#define WNI_CFG_LOW_GAIN_OVERRIDE 258
-#define WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE 259
-#define WNI_CFG_RPE_POLLING_THRESHOLD 260
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC0_REG 261
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC1_REG 262
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC2_REG 263
-#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC3_REG 264
-#define WNI_CFG_NO_OF_ONCHIP_REORDER_SESSIONS 265
-#define WNI_CFG_SINGLE_TID_RC 266
-#define WNI_CFG_RRM_ENABLED 267
-#define WNI_CFG_RRM_OPERATING_CHAN_MAX 268
-#define WNI_CFG_RRM_NON_OPERATING_CHAN_MAX 269
-#define WNI_CFG_TX_PWR_CTRL_ENABLE 270
-#define WNI_CFG_MCAST_BCAST_FILTER_SETTING 271
-#define WNI_CFG_BTC_DHCP_BT_SLOTS_TO_BLOCK 272
-#define WNI_CFG_DYNAMIC_PS_POLL_VALUE 273
-#define WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT 274
-#define WNI_CFG_TELE_BCN_WAKEUP_EN 275
-#define WNI_CFG_TELE_BCN_TRANS_LI 276
-#define WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS 277
-#define WNI_CFG_TELE_BCN_MAX_LI 278
-#define WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS 279
-#define WNI_CFG_BTC_A2DP_DHCP_BT_SUB_INTERVALS 280
-#define WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD 281
-#define WNI_CFG_ASSOC_STA_LIMIT 282
-#define WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL 283
-#define WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL 284
-#define WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND 285
-#define WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD 286
-#define WNI_CFG_ENABLE_CLOSE_LOOP 287
-#define WNI_CFG_ENABLE_LTE_COEX 288
-#define WNI_CFG_AP_KEEP_ALIVE_TIMEOUT 289
-#define WNI_CFG_GO_KEEP_ALIVE_TIMEOUT 290
-#define WNI_CFG_ENABLE_MC_ADDR_LIST 291
-#define WNI_CFG_ENABLE_UC_FILTER 292
-#define WNI_CFG_ENABLE_LPWR_IMG_TRANSITION 293
-#define WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED 294
-#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP 295
-#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT 296
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC 228
+#define WNI_CFG_BG_SCAN_CHANNEL_LIST 229
+#define WNI_CFG_MAX_MEDIUM_TIME 230
+#define WNI_CFG_MAX_MPDUS_IN_AMPDU 231
+#define WNI_CFG_IBSS_AUTO_BSSID 232
+#define WNI_CFG_PROBE_REQ_ADDNIE_FLAG 233
+#define WNI_CFG_PROBE_REQ_ADDNIE_DATA 234
+#define WNI_CFG_PROBE_RSP_ADDNIE_FLAG 235
+#define WNI_CFG_PROBE_RSP_ADDNIE_DATA1 236
+#define WNI_CFG_PROBE_RSP_ADDNIE_DATA2 237
+#define WNI_CFG_PROBE_RSP_ADDNIE_DATA3 238
+#define WNI_CFG_ASSOC_RSP_ADDNIE_FLAG 239
+#define WNI_CFG_ASSOC_RSP_ADDNIE_DATA 240
+#define WNI_CFG_PROBE_REQ_ADDNP2PIE_FLAG 241
+#define WNI_CFG_PROBE_REQ_ADDNP2PIE_DATA 242
+#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_FLAG 243
+#define WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA 244
+#define WNI_CFG_WPS_ENABLE 245
+#define WNI_CFG_WPS_STATE 246
+#define WNI_CFG_WPS_PROBE_REQ_FLAG 247
+#define WNI_CFG_WPS_VERSION 248
+#define WNI_CFG_WPS_REQUEST_TYPE 249
+#define WNI_CFG_WPS_CFG_METHOD 250
+#define WNI_CFG_WPS_UUID 251
+#define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY 252
+#define WNI_CFG_WPS_PIMARY_DEVICE_OUI 253
+#define WNI_CFG_WPS_DEVICE_SUB_CATEGORY 254
+#define WNI_CFG_WPS_ASSOCIATION_STATE 255
+#define WNI_CFG_WPS_CONFIGURATION_ERROR 256
+#define WNI_CFG_WPS_DEVICE_PASSWORD_ID 257
+#define WNI_CFG_WPS_ASSOC_METHOD 258
+#define WNI_CFG_LOW_GAIN_OVERRIDE 259
+#define WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE 260
+#define WNI_CFG_RPE_POLLING_THRESHOLD 261
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC0_REG 262
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC1_REG 263
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC2_REG 264
+#define WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC3_REG 265
+#define WNI_CFG_NO_OF_ONCHIP_REORDER_SESSIONS 266
+#define WNI_CFG_SINGLE_TID_RC 267
+#define WNI_CFG_RRM_ENABLED 268
+#define WNI_CFG_RRM_OPERATING_CHAN_MAX 269
+#define WNI_CFG_RRM_NON_OPERATING_CHAN_MAX 270
+#define WNI_CFG_TX_PWR_CTRL_ENABLE 271
+#define WNI_CFG_MCAST_BCAST_FILTER_SETTING 272
+#define WNI_CFG_BTC_DHCP_BT_SLOTS_TO_BLOCK 273
+#define WNI_CFG_DYNAMIC_PS_POLL_VALUE 274
+#define WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT 275
+#define WNI_CFG_TELE_BCN_WAKEUP_EN 276
+#define WNI_CFG_TELE_BCN_TRANS_LI 277
+#define WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS 278
+#define WNI_CFG_TELE_BCN_MAX_LI 279
+#define WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS 280
+#define WNI_CFG_BTC_A2DP_DHCP_BT_SUB_INTERVALS 281
+#define WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD 282
+#define WNI_CFG_ASSOC_STA_LIMIT 283
+#define WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL 284
+#define WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL 285
+#define WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND 286
+#define WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD 287
+#define WNI_CFG_ENABLE_CLOSE_LOOP 288
+#define WNI_CFG_ENABLE_LTE_COEX 289
+#define WNI_CFG_AP_KEEP_ALIVE_TIMEOUT 290
+#define WNI_CFG_GO_KEEP_ALIVE_TIMEOUT 291
+#define WNI_CFG_ENABLE_MC_ADDR_LIST 292
+#define WNI_CFG_ENABLE_UC_FILTER 293
+#define WNI_CFG_ENABLE_LPWR_IMG_TRANSITION 294
+#define WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED 295
+#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP 296
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT 297
/*
* String parameter lengths
@@ -1367,6 +1368,10 @@
#define WNI_CFG_ADDBA_REQ_DECLINE_STAMAX 255
#define WNI_CFG_ADDBA_REQ_DECLINE_STADEF 0
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_STAMIN 0
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_STAMAX 1
+#define WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC_STADEF 0
+
#define WNI_CFG_MAX_MEDIUM_TIME_STAMIN 0
#define WNI_CFG_MAX_MEDIUM_TIME_STAMAX 65535
#define WNI_CFG_MAX_MEDIUM_TIME_STADEF 2048
@@ -1610,8 +1615,8 @@
#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STAMAX 255
#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STADEF 3
-#define CFG_PARAM_MAX_NUM 297
-#define CFG_STA_IBUF_MAX_SIZE 231
+#define CFG_PARAM_MAX_NUM 298
+#define CFG_STA_IBUF_MAX_SIZE 232
#define CFG_STA_SBUF_MAX_SIZE 3388
#define CFG_SEM_MAX_NUM 19
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index 463bdd0..7240b7d 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -3460,6 +3460,19 @@
0 0xff 0
*
+* Delete all Rx BA sessions in 2.4 GHz
+* when BTC requests to disable agg.
+*
+WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC I 4 7
+V RW NP
+LIM
+0 1 0
+V RW NP
+LIM
+0 1 0
+
+
+*
* Valid Channel List
*
diff --git a/CORE/MAC/src/pe/include/limGlobal.h b/CORE/MAC/src/pe/include/limGlobal.h
index ea74fda..c8b8eb0 100644
--- a/CORE/MAC/src/pe/include/limGlobal.h
+++ b/CORE/MAC/src/pe/include/limGlobal.h
@@ -113,7 +113,7 @@
eLIM_BT_AMP_AP_ROLE,
eLIM_P2P_DEVICE_ROLE,
eLIM_P2P_DEVICE_GO,
- eLIM_P2P_DEVICE_CLINET
+ eLIM_P2P_DEVICE_CLIENT
} tLimSystemRole;
/**
diff --git a/CORE/MAC/src/pe/lim/limProcessActionFrame.c b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
index f7a25a4..29dbf7b 100644
--- a/CORE/MAC/src/pe/lim/limProcessActionFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
@@ -1198,6 +1198,7 @@
pHdr = WDA_GET_RX_MAC_HEADER( pRxPacketInfo );
pBody = WDA_GET_RX_MPDU_DATA( pRxPacketInfo );
frameLen = WDA_GET_RX_PAYLOAD_LEN( pRxPacketInfo );
+ val = 0;
// Unpack the received frame
nStatus = dot11fUnpackAddBAReq( pMac, pBody, frameLen, &frmAddBAReq );
@@ -1230,7 +1231,7 @@
{
limLog( pMac, LOGE,
FL( "STA context not found - ignoring ADDBA from " ));
- limPrintMacAddr( pMac, pHdr->sa, LOGW );
+ limPrintMacAddr( pMac, pHdr->sa, LOGE );
// FIXME - Should we do this?
status = eSIR_MAC_INABLITY_TO_CONFIRM_ASSOC_STATUS;
@@ -1250,6 +1251,23 @@
}
#endif //WLAN_SOFTAP_VSTA_FEATURE
+ if (wlan_cfgGetInt(pMac, WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC, &val) !=
+ eSIR_SUCCESS)
+ {
+ limLog(pMac, LOGE,
+ FL("Unable to get WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC"));
+ val = 0;
+ }
+ if ((SIR_BAND_2_4_GHZ == limGetRFBand(psessionEntry->currentOperChannel)) &&
+ val)
+ {
+ limLog( pMac, LOGW,
+ FL( "BTC disabled aggregation - ignoring ADDBA from " ));
+ limPrintMacAddr( pMac, pHdr->sa, LOGW );
+
+ status = eSIR_MAC_REQ_DECLINED_STATUS;
+ goto returnAfterError;
+ }
// Now, validate the ADDBA Req
if( eSIR_MAC_SUCCESS_STATUS !=
@@ -1306,7 +1324,7 @@
{
frmAddBAReq.AddBAParameterSet.bufferSize = val;
}
- limLog( pMac, LOGE, FL( "ADDBAREQ NUMBUFF %d" ),
+ limLog( pMac, LOG1, FL( "ADDBAREQ NUMBUFF %d" ),
frmAddBAReq.AddBAParameterSet.bufferSize);
if( eSIR_SUCCESS != limPostMsgAddBAReq( pMac,
diff --git a/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c b/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c
index e607920..6ae8ee5 100644
--- a/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c
+++ b/CORE/MAC/src/pe/lim/limProcessCfgUpdates.c
@@ -610,6 +610,28 @@
pMac->lim.gLimAssocStaLimit = (tANI_U16)val1;
break;
+ case WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC:
+ if (wlan_cfgGetInt
+ (pMac, WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC, &val1) !=
+ eSIR_SUCCESS)
+ {
+ limLog(pMac, LOGE,
+ FL( "Unable to get WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC"));
+ break;
+ }
+ if (val1)
+ {
+ limLog(pMac, LOGW,
+ FL("BTC requested to disable all RX BA sessions"));
+ limDelAllBASessionsBtc(pMac);
+ }
+ else
+ {
+ limLog(pMac, LOGW,
+ FL("Resetting the WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC"));
+ }
+ break;
+
default:
break;
}
diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
index e2cd741..cf7b4b0 100644
--- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
+++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
@@ -1464,7 +1464,7 @@
limProcessAddBaInd(pMac, limMsg);
break;
case SIR_LIM_DEL_BA_ALL_IND:
- limDelAllBASessions(pMac); // refer notes and change
+ limDelAllBASessions(pMac);
break;
case SIR_LIM_DEL_BA_IND:
limProcessMlmHalBADeleteInd( pMac, limMsg );
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index f3d8666..ae2c512 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -2142,7 +2142,7 @@
* is lost upon disassociation and reassociation.
*/
- limDelAllBASessions(pMac);
+ limDeleteBASessions(pMac, psessionEntry, BA_BOTH_DIRECTIONS);
pMlmReassocReq->listenInterval = (tANI_U16) val;
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index bcdea00..49decb2 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -5608,60 +5608,135 @@
/** -------------------------------------------------------------
-\fn limDelAllBASessions
-\brief Deletes all the exisitng BA sessions.
-\ Note : This API is provided for Mac OSx only. The reason for this is that Mac OSx may not
-\ restart after CFG update.
+\fn limDeleteBASessions
+\brief Deletes all the exisitng BA sessions for given session
+ and BA direction.
\param tpAniSirGlobal pMac
-\return None
+\param tpPESession pSessionEntry
+\param tANI_U32 baDirection
+\return None
-------------------------------------------------------------*/
void
-limDelAllBASessions(tpAniSirGlobal pMac)
+limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry,
+ tANI_U32 baDirection)
{
tANI_U32 i;
tANI_U8 tid;
tpDphHashNode pSta;
- tpPESession psessionEntry = &pMac->lim.gpSession[0]; //TBD-RAJESH HOW TO GET sessionEntry?????
- for(tid = 0; tid < STACFG_MAX_TC; tid++)
+ if (NULL == pSessionEntry)
{
- if((eLIM_AP_ROLE == psessionEntry->limSystemRole) ||(psessionEntry->limSystemRole == eLIM_BT_AMP_AP_ROLE)||
- (eLIM_STA_IN_IBSS_ROLE == psessionEntry->limSystemRole))
+ limLog(pMac, LOGE, FL("Session does not exist"));
+ }
+ else
+ {
+ for(tid = 0; tid < STACFG_MAX_TC; tid++)
{
- for(i = 0; i < pMac->lim.maxStation; i++)
+ if ((eLIM_AP_ROLE == pSessionEntry->limSystemRole) ||
+ (pSessionEntry->limSystemRole == eLIM_BT_AMP_AP_ROLE) ||
+ (eLIM_STA_IN_IBSS_ROLE == pSessionEntry->limSystemRole) ||
+ (pSessionEntry->limSystemRole == eLIM_P2P_DEVICE_GO))
{
- pSta = psessionEntry->dph.dphHashTable.pDphNodeArray + i;
- if (pSta && pSta->added)
+ for (i = 0; i < pMac->lim.maxStation; i++)
{
- if(eBA_ENABLE == pSta->tcCfg[tid].fUseBATx)
+ pSta = pSessionEntry->dph.dphHashTable.pDphNodeArray + i;
+ if (pSta && pSta->added)
{
- limPostMlmDelBAReq(pMac, pSta, eBA_INITIATOR, tid, eSIR_MAC_UNSPEC_FAILURE_REASON,psessionEntry);
- }
- else if(eBA_ENABLE == pSta->tcCfg[tid].fUseBARx)
- {
- limPostMlmDelBAReq(pMac, pSta, eBA_RECIPIENT, tid, eSIR_MAC_UNSPEC_FAILURE_REASON,psessionEntry);
+ if ((eBA_ENABLE == pSta->tcCfg[tid].fUseBATx) &&
+ (baDirection & BA_INITIATOR))
+ {
+ limPostMlmDelBAReq(pMac, pSta, eBA_INITIATOR, tid,
+ eSIR_MAC_UNSPEC_FAILURE_REASON,
+ pSessionEntry);
+ }
+ if ((eBA_ENABLE == pSta->tcCfg[tid].fUseBARx) &&
+ (baDirection & BA_RECIPIENT))
+ {
+ limPostMlmDelBAReq(pMac, pSta, eBA_RECIPIENT, tid,
+ eSIR_MAC_UNSPEC_FAILURE_REASON,
+ pSessionEntry);
+ }
}
}
}
- }
- else if((eLIM_STA_ROLE == psessionEntry->limSystemRole)||(eLIM_BT_AMP_STA_ROLE == psessionEntry->limSystemRole))
- {
- pSta = dphGetHashEntry(pMac, DPH_STA_HASH_INDEX_PEER, &psessionEntry->dph.dphHashTable);
- if (pSta && pSta->added)
+ else if ((eLIM_STA_ROLE == pSessionEntry->limSystemRole) ||
+ (eLIM_BT_AMP_STA_ROLE == pSessionEntry->limSystemRole) ||
+ (eLIM_P2P_DEVICE_ROLE == pSessionEntry->limSystemRole))
{
- if(eBA_ENABLE == pSta->tcCfg[tid].fUseBATx)
+ pSta = dphGetHashEntry(pMac, DPH_STA_HASH_INDEX_PEER,
+ &pSessionEntry->dph.dphHashTable);
+ if (pSta && pSta->added)
{
- limPostMlmDelBAReq(pMac, pSta, eBA_INITIATOR, tid, eSIR_MAC_UNSPEC_FAILURE_REASON,psessionEntry);
- }
- if(eBA_ENABLE == pSta->tcCfg[tid].fUseBARx)
- {
- limPostMlmDelBAReq(pMac, pSta, eBA_RECIPIENT, tid, eSIR_MAC_UNSPEC_FAILURE_REASON,psessionEntry);
+ if ((eBA_ENABLE == pSta->tcCfg[tid].fUseBATx) &&
+ (baDirection & BA_INITIATOR))
+ {
+ limPostMlmDelBAReq(pMac, pSta, eBA_INITIATOR, tid,
+ eSIR_MAC_UNSPEC_FAILURE_REASON,
+ pSessionEntry);
+ }
+ if ((eBA_ENABLE == pSta->tcCfg[tid].fUseBARx) &&
+ (baDirection & BA_RECIPIENT))
+ {
+ limPostMlmDelBAReq(pMac, pSta, eBA_RECIPIENT, tid,
+ eSIR_MAC_UNSPEC_FAILURE_REASON,
+ pSessionEntry);
+ }
}
}
}
}
}
+
+/** -------------------------------------------------------------
+\fn limDelAllBASessions
+\brief Deletes all the exisitng BA sessions.
+\param tpAniSirGlobal pMac
+\return None
+-------------------------------------------------------------*/
+
+void limDelAllBASessions(tpAniSirGlobal pMac)
+{
+ tANI_U32 i;
+ tpPESession pSessionEntry;
+
+ for (i = 0; i < pMac->lim.maxBssId; i++)
+ {
+ pSessionEntry = peFindSessionBySessionId(pMac, i);
+ if (pSessionEntry)
+ {
+ limDeleteBASessions(pMac, pSessionEntry, BA_BOTH_DIRECTIONS);
+ }
+ }
+}
+
+/** -------------------------------------------------------------
+\fn limDelAllBASessionsBtc
+\brief Deletes all the exisitng BA receipent sessions in 2.4GHz
+ band.
+\param tpAniSirGlobal pMac
+\return None
+-------------------------------------------------------------*/
+
+void limDelAllBASessionsBtc(tpAniSirGlobal pMac)
+{
+ tANI_U32 i;
+ tpPESession pSessionEntry;
+
+ for (i = 0; i < pMac->lim.maxBssId; i++)
+ {
+ pSessionEntry = peFindSessionBySessionId(pMac, i);
+ if (pSessionEntry)
+ {
+ if (SIR_BAND_2_4_GHZ ==
+ limGetRFBand(pSessionEntry->currentOperChannel))
+ {
+ limDeleteBASessions(pMac, pSessionEntry, BA_RECIPIENT);
+ }
+ }
+ }
+}
+
/** -------------------------------------------------------------
\fn limProcessDelTsInd
\brief handles the DeleteTS indication coming from HAL or generated by PE itself in some error cases.
diff --git a/CORE/MAC/src/pe/lim/limUtils.h b/CORE/MAC/src/pe/lim/limUtils.h
index 3a1f9b6..d4a1781 100644
--- a/CORE/MAC/src/pe/lim/limUtils.h
+++ b/CORE/MAC/src/pe/lim/limUtils.h
@@ -348,6 +348,8 @@
void limDeleteStaContext(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
void limProcessAddBaInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
+void limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry, tANI_U32 baDirection);
+void limDelAllBASessionsBtc(tpAniSirGlobal pMac);
void limDelAllBASessions(tpAniSirGlobal pMac);
void limDeleteDialogueTokenList(tpAniSirGlobal pMac);
tSirRetStatus limSearchAndDeleteDialogueToken(tpAniSirGlobal pMac, tANI_U8 token, tANI_U16 assocId, tANI_U16 tid);
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index 844323d..4b8b869 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -1019,6 +1019,7 @@
tANI_U32 nActiveMinChnTimeBtc; //in units of milliseconds
tANI_U32 nActiveMaxChnTimeBtc; //in units of milliseconds
+ tANI_U32 disableAggWithBtc;
#ifdef WLAN_AP_STA_CONCURRENCY
tANI_U32 nPassiveMinChnTimeConc; //in units of milliseconds
tANI_U32 nPassiveMaxChnTimeConc; //in units of milliseconds
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 82dc258..55592ae 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -574,6 +574,7 @@
tANI_U32 nActiveMinChnTimeBtc; //in units of milliseconds
tANI_U32 nActiveMaxChnTimeBtc; //in units of milliseconds
+ tANI_U8 disableAggWithBtc;
#ifdef WLAN_AP_STA_CONCURRENCY
tANI_U32 nPassiveMinChnTimeConc; //in units of milliseconds
tANI_U32 nPassiveMaxChnTimeConc; //in units of milliseconds
diff --git a/CORE/SME/src/btc/btcApi.c b/CORE/SME/src/btc/btcApi.c
index 3359eb4..e7758c4 100644
--- a/CORE/SME/src/btc/btcApi.c
+++ b/CORE/SME/src/btc/btcApi.c
@@ -1942,6 +1942,28 @@
smsLog(pMac, LOGW, "Coex indication in %s(), type - SIR_COEX_IND_TYPE_SCAN_NOT_COMPROMISED",
__func__);
}
+ else if (pSmeCoexInd->coexIndType == SIR_COEX_IND_TYPE_DISABLE_AGGREGATION_IN_2p4)
+ {
+ if (pMac->roam.configParam.disableAggWithBtc)
+ {
+ ccmCfgSetInt(pMac, WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC, 1,
+ NULL, eANI_BOOLEAN_FALSE);
+ smsLog(pMac, LOGW,
+ "Coex indication in %s(), type - SIR_COEX_IND_TYPE_DISABLE_AGGREGATION_IN_2p4",
+ __func__);
+ }
+ }
+ else if (pSmeCoexInd->coexIndType == SIR_COEX_IND_TYPE_ENABLE_AGGREGATION_IN_2p4)
+ {
+ if (pMac->roam.configParam.disableAggWithBtc)
+ {
+ ccmCfgSetInt(pMac, WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC, 0,
+ NULL, eANI_BOOLEAN_FALSE);
+ smsLog(pMac, LOGW,
+ "Coex indication in %s(), type - SIR_COEX_IND_TYPE_ENABLE_AGGREGATION_IN_2p4",
+ __func__);
+ }
+ }
// unknown indication type
else
{
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 50c14d7..f39780f 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -947,6 +947,7 @@
pMac->roam.configParam.nPassiveMinChnTime = CSR_PASSIVE_MIN_CHANNEL_TIME;
pMac->roam.configParam.nActiveMaxChnTimeBtc = CSR_ACTIVE_MAX_CHANNEL_TIME_BTC;
pMac->roam.configParam.nActiveMinChnTimeBtc = CSR_ACTIVE_MIN_CHANNEL_TIME_BTC;
+ pMac->roam.configParam.disableAggWithBtc = eANI_BOOLEAN_TRUE;
#ifdef WLAN_AP_STA_CONCURRENCY
pMac->roam.configParam.nActiveMaxChnTimeConc = CSR_ACTIVE_MAX_CHANNEL_TIME_CONC;
pMac->roam.configParam.nActiveMinChnTimeConc = CSR_ACTIVE_MIN_CHANNEL_TIME_CONC;
@@ -1404,6 +1405,7 @@
pMac->roam.configParam.bandCapability = pParam->bandCapability;
pMac->roam.configParam.cbChoice = pParam->cbChoice;
pMac->roam.configParam.bgScanInterval = pParam->bgScanInterval;
+ pMac->roam.configParam.disableAggWithBtc = pParam->disableAggWithBtc;
//if HDD passed down non zero values then only update,
//otherwise keep using the defaults
if (pParam->nActiveMaxChnTime)
@@ -1637,6 +1639,9 @@
pParam->nActiveMinChnTime = pMac->roam.configParam.nActiveMinChnTime;
pParam->nPassiveMaxChnTime = pMac->roam.configParam.nPassiveMaxChnTime;
pParam->nPassiveMinChnTime = pMac->roam.configParam.nPassiveMinChnTime;
+ pParam->nActiveMaxChnTimeBtc = pMac->roam.configParam.nActiveMaxChnTimeBtc;
+ pParam->nActiveMinChnTimeBtc = pMac->roam.configParam.nActiveMinChnTimeBtc;
+ pParam->disableAggWithBtc = pMac->roam.configParam.disableAggWithBtc;
#ifdef WLAN_AP_STA_CONCURRENCY
pParam->nActiveMaxChnTimeConc = pMac->roam.configParam.nActiveMaxChnTimeConc;
pParam->nActiveMinChnTimeConc = pMac->roam.configParam.nActiveMinChnTimeConc;
diff --git a/firmware_bin/WCNSS_cfg.dat b/firmware_bin/WCNSS_cfg.dat
index 297b3cd..a5ee46c 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ