diff options
| author | Akash Patel <akashp@codeaurora.org> | 2015-01-16 13:04:41 -0800 |
|---|---|---|
| committer | Akash Patel <akashp@codeaurora.org> | 2015-01-16 13:06:58 -0800 |
| commit | be5915d67a0aa3a6be4a2bf65b4ce2baba89ad45 (patch) | |
| tree | 20f13a7756cd512db72e773688b152276441c032 | |
| parent | c9a6dcdbc9b842337886545e2e2707f01190ab6d (diff) | |
| parent | b8c53cc1f5b0bd09ab49a9b17e56940a62bba51c (diff) | |
Release 4.0.10.15 QCACLD WLAN Driver.
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
* origin/caf/caf-wlan/master:
Cafstaging Release 4.0.10.15
qcacld: CL 1196233 - update fw common interface files
qcacld-2.0: Enable ARP/NS offload support on beaconing interfaces.
qcacld: modifications to SETDFSSCANMODE command
qcacld: wlan: 3 Port concurrency GO Beacon Interval
qca-cld:hdd: Set proper channel type for 11AC mode
Change-Id: I789937073a2c0042a2ffcc84abf50c3ae29e1de7
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg80211.h | 5 | ||||
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_main.h | 2 | ||||
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_tgt_cfg.h | 1 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 137 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_early_suspend.c | 22 | ||||
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 16 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 5 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 8 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 1 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrInsideApi.h | 1 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrUtil.c | 23 |
13 files changed, 166 insertions, 63 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h index 624db7b348fc..51fb541d274d 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg80211.h +++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1118,4 +1118,7 @@ int wlan_hdd_send_roam_auth_event(hdd_context_t *hdd_ctx_ptr, uint8_t *bssid, uint8_t *rsp_rsn_ie, uint32_t rsp_rsn_length, tCsrRoamInfo *roam_info_ptr); #endif +int wlan_hdd_disable_dfs_chan_scan(hdd_context_t *pHddCtx, + hdd_adapter_t *pAdapter, + u32 no_dfs_flag); #endif diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h index 0f1c1f37e090..1b0e157c1d7c 100644 --- a/CORE/HDD/inc/wlan_hdd_main.h +++ b/CORE/HDD/inc/wlan_hdd_main.h @@ -1464,7 +1464,7 @@ struct hdd_context_s #ifdef WLAN_FEATURE_LPSS v_U8_t lpss_support; #endif - + uint8_t ap_arpns_support; tSirScanType ioctl_scan_mode; #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH diff --git a/CORE/HDD/inc/wlan_hdd_tgt_cfg.h b/CORE/HDD/inc/wlan_hdd_tgt_cfg.h index d47a24634f05..a7d626e3abca 100644 --- a/CORE/HDD/inc/wlan_hdd_tgt_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_tgt_cfg.h @@ -101,6 +101,7 @@ struct hdd_tgt_cfg { #ifdef WLAN_FEATURE_LPSS v_U8_t lpss_support; #endif + uint8_t ap_arpns_support; }; struct hdd_dfs_radar_ind { diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index d32da40f84d0..d04d4b645f58 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -4277,58 +4277,35 @@ wlan_hdd_set_no_dfs_flag_config_policy[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX [QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG] = {.type = NLA_U32 }, }; +/** + * wlan_hdd_disable_dfs_chan_scan () - disable/enable DFS channels + * + * @pHddCtx: HDD context within host driver + * @pAdapter: Adapter pointer + * @no_dfs_flag: If TRUE, DFS channels cannot be used for scanning + * + * Loops through devices to see who is operating on DFS channels + * and then disables/enables DFS channels by calling SME API. + * Fails the disable request if any device is active on a DFS channel. + * + * Return: EOK or other error codes. + */ -static int wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy, - struct wireless_dev *wdev, - const void *data, - int data_len) +int wlan_hdd_disable_dfs_chan_scan(hdd_context_t *pHddCtx, + hdd_adapter_t *pAdapter, + u32 no_dfs_flag) { - struct net_device *dev = wdev->netdev; - hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev); tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(pAdapter); - hdd_context_t *pHddCtx = wiphy_priv(wiphy); - struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX + 1]; - eHalStatus status; - int ret_val = -EPERM; - u32 no_dfs_flag = 0; hdd_adapter_list_node_t *p_adapter_node = NULL, *p_next = NULL; hdd_adapter_t *p_adapter; VOS_STATUS vos_status; hdd_ap_ctx_t *p_ap_ctx; hdd_station_ctx_t *p_sta_ctx; - - if (wlan_hdd_validate_context(pHddCtx)) { - hddLog(VOS_TRACE_LEVEL_ERROR, - FL("HDD context is not valid")); - return -EINVAL; - } - - if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX, - data, data_len, - wlan_hdd_set_no_dfs_flag_config_policy)) { - hddLog(VOS_TRACE_LEVEL_ERROR, FL("invalid attr")); - return -EINVAL; - } - - if (!tb[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG]) { - hddLog(VOS_TRACE_LEVEL_ERROR, FL("attr dfs flag failed")); - return -EINVAL; - } - - no_dfs_flag = nla_get_u32( - tb[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG]); - - hddLog(VOS_TRACE_LEVEL_INFO, FL(" DFS flag = %d"), - no_dfs_flag); - - if (no_dfs_flag > 1) { - hddLog(VOS_TRACE_LEVEL_ERROR, FL("invalid value of dfs flag")); - return -EINVAL; - } + eHalStatus status; + int ret_val = -EPERM; if (no_dfs_flag == pHddCtx->cfg_ini->enableDFSChnlScan) { if (no_dfs_flag) { - vos_status = hdd_get_front_adapter( pHddCtx, &p_adapter_node); while ((NULL != p_adapter_node) && (VOS_STATUS_SUCCESS == vos_status)) @@ -4345,8 +4322,7 @@ static int wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy, if (NV_CHANNEL_DFS == vos_nv_getChannelEnabledState( p_ap_ctx->operatingChannel)) { - hddLog(VOS_TRACE_LEVEL_ERROR, - FL("SAP running on DFS channel")); + hddLog(LOGE, FL("SAP running on DFS channel")); return -EOPNOTSUPP; } } @@ -4360,8 +4336,7 @@ static int wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy, (NV_CHANNEL_DFS == vos_nv_getChannelEnabledState( p_sta_ctx->conn_info.operationChannel))) { - hddLog(VOS_TRACE_LEVEL_ERROR, - FL("client connected on DFS channel")); + hddLog(LOGE, FL("client connected on DFS channel")); return -EOPNOTSUPP; } } @@ -4379,7 +4354,7 @@ static int wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy, /* call the SME API to tunnel down the new channel list to the firmware */ status = sme_handle_dfs_chan_scan(hHal, - pHddCtx->cfg_ini->enableDFSChnlScan); + pHddCtx->cfg_ini->enableDFSChnlScan); if (eHAL_STATUS_SUCCESS == status) { ret_val = 0; @@ -4393,10 +4368,67 @@ static int wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy, ret_val = -EPERM; } } else { - hddLog(VOS_TRACE_LEVEL_INFO, FL(" the DFS flag has not changed")); + hddLog(LOG1, FL(" the DFS flag has not changed")); ret_val = 0; } + return ret_val; +} + +/** + * wlan_hdd_cfg80211_disable_dfs_chan_scan () - DFS scan vendor command + * + * @wiphy: wiphy device pointer + * @wdev: wireless device pointer + * @data: Vendof command data buffer + * @data_len: Buffer length + * + * Handles QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX. Validate it and + * call wlan_hdd_disable_dfs_chan_scan to send it to firmware. + * + * Return: EOK or other error codes. + */ +static int wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, + int data_len) +{ + struct net_device *dev = wdev->netdev; + hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev); + hdd_context_t *pHddCtx = wiphy_priv(wiphy); + struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX + 1]; + int ret_val = -EPERM; + u32 no_dfs_flag = 0; + + if ((ret_val = wlan_hdd_validate_context(pHddCtx))) { + hddLog(LOGE, FL("HDD context is not valid")); + return ret_val; + } + + if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX, + data, data_len, + wlan_hdd_set_no_dfs_flag_config_policy)) { + hddLog(LOGE, FL("invalid attr")); + return -EINVAL; + } + + if (!tb[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG]) { + hddLog(LOGE, FL("attr dfs flag failed")); + return -EINVAL; + } + + no_dfs_flag = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG]); + + hddLog(LOG1, FL(" DFS flag = %d"), + no_dfs_flag); + + if (no_dfs_flag > 1) { + hddLog(LOGE, FL("invalid value of dfs flag")); + return -EINVAL; + } + + ret_val = wlan_hdd_disable_dfs_chan_scan(pHddCtx, pAdapter, no_dfs_flag); return ret_val; } @@ -7706,6 +7738,7 @@ static int wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy, ) { beacon_data_t *old, *new; + enum nl80211_channel_type channel_type; old = pAdapter->sessionCtx.ap.beacon; @@ -7721,12 +7754,18 @@ static int wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy, return -EINVAL; } pAdapter->sessionCtx.ap.beacon = new; + + if (params->chandef.width < NL80211_CHAN_WIDTH_80) + channel_type = cfg80211_get_chandef_type(&(params->chandef)); + else + channel_type = NL80211_CHAN_HT40PLUS; + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) wlan_hdd_cfg80211_set_channel(wiphy, dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) params->channel, params->channel_type); #else - params->chandef.chan, cfg80211_get_chandef_type(&(params->chandef))); + params->chandef.chan, channel_type); #endif #endif /* set authentication type */ diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c index d440bdb3bb75..c0702974d3db 100644 --- a/CORE/HDD/src/wlan_hdd_early_suspend.c +++ b/CORE/HDD/src/wlan_hdd_early_suspend.c @@ -602,6 +602,17 @@ static void hdd_conf_ns_offload(hdd_adapter_t *pAdapter, int fenable) pHddCtx = WLAN_HDD_GET_CTX(pAdapter); + /* In SAP/P2PGo mode, ARP/NS offload feature capability + * is controlled by one bit. + */ + + if ((WLAN_HDD_SOFTAP == pAdapter->device_mode || + WLAN_HDD_P2P_GO == pAdapter->device_mode) && + !pHddCtx->ap_arpns_support) { + hddLog(LOG1, FL("NS Offload is not supported in SAP/P2PGO mode")); + return; + } + if (fenable) { in6_dev = __in6_dev_get(pAdapter->dev); @@ -1029,6 +1040,17 @@ VOS_STATUS hdd_conf_arp_offload(hdd_adapter_t *pAdapter, int fenable) hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter); hddLog(VOS_TRACE_LEVEL_ERROR, FL(" fenable = %d \n"), fenable); + + /* In SAP/P2PGo mode, ARP/NS offload feature capability + * is controlled by one bit. + */ + if ((WLAN_HDD_SOFTAP == pAdapter->device_mode || + WLAN_HDD_P2P_GO == pAdapter->device_mode) && + !pHddCtx->ap_arpns_support) { + hddLog(LOG1, FL("APR Offload is not supported in SAP/P2PGO mode")); + return VOS_STATUS_SUCCESS; + } + if(fenable) { if ((in_dev = __in_dev_get_rtnl(pAdapter->dev)) != NULL) diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 9c0597803efd..8d3b9923f016 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -7122,6 +7122,19 @@ static int hdd_driver_command(hdd_adapter_t *pAdapter, "%s: Received Command to Set DFS Scan Mode = %d", __func__, dfsScanMode); + /* When DFS scanning is disabled, the DFS channels need to be + * removed from the operation of device. + */ + ret = wlan_hdd_disable_dfs_chan_scan(pHddCtx, pAdapter, + (dfsScanMode == CFG_ROAMING_DFS_CHANNEL_DISABLED)); + if (ret < 0) { + /* Some conditions prevented it from disabling DFS channels + */ + hddLog(LOGE, + FL("disable/enable DFS channel request was denied")); + goto exit; + } + pHddCtx->cfg_ini->allowDFSChannelRoam = dfsScanMode; sme_UpdateDFSScanMode(pHddCtx->hHal, pAdapter->sessionId, dfsScanMode); @@ -7989,6 +8002,7 @@ void hdd_update_tgt_cfg(void *context, void *param) hdd_ctx->lpss_support = cfg->lpss_support; #endif + hdd_ctx->ap_arpns_support = cfg->ap_arpns_support; hdd_update_tgt_services(hdd_ctx, &cfg->services); hdd_update_tgt_ht_cap(hdd_ctx, &cfg->ht_cap); diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index 6dceacdae333..1a49f9c61900 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 10 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 14 +#define QWLAN_VERSION_BUILD 15 -#define QWLAN_VERSIONSTR "4.0.10.14" +#define QWLAN_VERSIONSTR "4.0.10.15" #define AR6320_REV1_VERSION 0x5000000 diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h index f2eb51df6aad..bc39cd02552f 100644 --- a/CORE/SERVICES/COMMON/wmi_services.h +++ b/CORE/SERVICES/COMMON/wmi_services.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -59,7 +59,7 @@ typedef enum { WMI_SERVICE_WOW, /* WOW Support */ WMI_SERVICE_RATECTRL_CACHE, /* Rate-control caching */ WMI_SERVICE_IRAM_TIDS, /* TIDs in IRAM */ - WMI_SERVICE_ARPNS_OFFLOAD, /* ARP NS Offload support */ + WMI_SERVICE_ARPNS_OFFLOAD, /* ARP NS Offload support for STA vdev */ WMI_SERVICE_NLO, /* Network list offload service */ WMI_SERVICE_GTK_OFFLOAD, /* GTK offload */ WMI_SERVICE_SCAN_SCH, /* Scan Scheduler Service */ @@ -117,6 +117,7 @@ typedef enum { WMI_SERVICE_SAP_AUTH_OFFLOAD, /* softap auth offload */ WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT, /* Dual Band Simultaneous support */ WMI_SERVICE_OCB, /* OCB mode support */ + WMI_SERVICE_AP_ARPNS_OFFLOAD, /* arp offload support for ap mode vdev */ WMI_MAX_SERVICE=128 /* max service */ } WMI_SERVICE; diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index 38fc945c5518..a6d5a6d2c2fc 100644 --- a/CORE/SERVICES/COMMON/wmi_version.h +++ b/CORE/SERVICES/COMMON/wmi_version.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 88 +#define __WMI_REVISION_ 89 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index e595bb16c3f4..910233f30310 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -25958,6 +25958,7 @@ static void wma_update_hdd_cfg(tp_wma_handle wma_handle) #ifdef WLAN_FEATURE_LPSS hdd_tgt_cfg.lpss_support = wma_handle->lpss_support; #endif + hdd_tgt_cfg.ap_arpns_support = wma_handle->ap_arpns_support; wma_handle->tgt_cfg_update_cb(hdd_ctx, &hdd_tgt_cfg); } static wmi_buf_t wma_setup_wmi_init_msg(tp_wma_handle wma_handle, @@ -26157,6 +26158,13 @@ v_VOID_t wma_rx_service_ready_event(WMA_HANDLE handle, void *cmd_param_info) WMI_SERVICE_IS_ENABLED(wma_handle->wmi_service_bitmap, WMI_SERVICE_LPASS); #endif + /* + * This Service bit is added to check for ARP/NS offload + * support for LL or HL targets + */ + wma_handle->ap_arpns_support = + WMI_SERVICE_IS_ENABLED(wma_handle->wmi_service_bitmap, + WMI_SERVICE_AP_ARPNS_OFFLOAD); if (WMI_SERVICE_IS_ENABLED(wma_handle->wmi_service_bitmap, WMI_SERVICE_CSA_OFFLOAD)) { diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 3b601c1f34d3..5bc1a0ba0bb6 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -611,6 +611,7 @@ typedef struct { #ifdef WLAN_FEATURE_LPSS v_U8_t lpss_support; /* LPSS feature is supported in target or not */ #endif + uint8_t ap_arpns_support; bool wmi_ready; u_int32_t wlan_init_status; adf_os_device_t adf_dev; diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h index 89100cfbbea9..e1ec5fb1a989 100644 --- a/CORE/SME/src/csr/csrInsideApi.h +++ b/CORE/SME/src/csr/csrInsideApi.h @@ -116,6 +116,7 @@ * timeout value */ #define CSR_ACTIVE_LIST_CMD_TIMEOUT_VALUE 1000*30*4 //120s #define CSR_MAX_BSSID_COUNT ((CSR_ACTIVE_LIST_CMD_TIMEOUT_VALUE/4000) * 3) +#define CSR_CUSTOM_CONC_GO_BI 100 typedef enum { eCsrNextScanNothing, diff --git a/CORE/SME/src/csr/csrUtil.c b/CORE/SME/src/csr/csrUtil.c index ca698500ecc2..d58d749576b8 100644 --- a/CORE/SME/src/csr/csrUtil.c +++ b/CORE/SME/src/csr/csrUtil.c @@ -2324,8 +2324,15 @@ eHalStatus csrValidateMCCBeaconInterval(tpAniSirGlobal pMac, tANI_U8 channelId, (pMac->roam.configParam.fAllowMCCGODiffBI == 0x04)) { //Check to pass the right beacon Interval - new_beaconInterval = csrCalculateMCCBeaconInterval(pMac, *beaconInterval, - pMac->roam.roamSession[sessionId].bssParams.beaconInterval); + if (pMac->roam.configParam.conc_custom_rule1 || + pMac->roam.configParam.conc_custom_rule2) { + new_beaconInterval = CSR_CUSTOM_CONC_GO_BI; + } else { + new_beaconInterval = + csrCalculateMCCBeaconInterval(pMac, + *beaconInterval, + pMac->roam.roamSession[sessionId].bssParams.beaconInterval); + } smsLog(pMac, LOG1, FL(" Peer AP BI : %d, new Beacon Interval: %d"),*beaconInterval,new_beaconInterval ); //Update the becon Interval if (new_beaconInterval != pMac->roam.roamSession[sessionId].bssParams.beaconInterval) @@ -2421,9 +2428,15 @@ eHalStatus csrValidateMCCBeaconInterval(tpAniSirGlobal pMac, tANI_U8 channelId, */ /* Calculate beacon Interval for P2P-GO in-case of MCC */ - new_beaconInterval = csrCalculateMCCBeaconInterval(pMac, - pMac->roam.roamSession[sessionId].connectedProfile.beaconInterval, - *beaconInterval ); + if (pMac->roam.configParam.conc_custom_rule1 || + pMac->roam.configParam.conc_custom_rule2) { + new_beaconInterval = CSR_CUSTOM_CONC_GO_BI; + } else { + new_beaconInterval = + csrCalculateMCCBeaconInterval(pMac, + pMac->roam.roamSession[sessionId].connectedProfile.beaconInterval, + *beaconInterval); + } if(*beaconInterval != new_beaconInterval) *beaconInterval = new_beaconInterval; return eHAL_STATUS_SUCCESS; |
