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
