summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-01-30 01:30:53 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2015-01-30 01:30:53 -0800
commit7ca5279bfb1e8b8dfe6cd5d400fe550f01ccdfc1 (patch)
treebf52237997a8aeaf0e942143416bde70d59a8c0a
parent046569f37314fe04dc9714456f0e893d0d7bc84b (diff)
parent3000e3911c2c36d5754a365ce40c7fe3c53be29e (diff)
Merge "Release 4.0.10.23 QCACLD WLAN Driver"
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h1
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c37
-rw-r--r--CORE/HDD/src/wlan_hdd_hostapd.c10
-rw-r--r--CORE/HDD/src/wlan_hdd_wext.c11
-rw-r--r--CORE/MAC/inc/qwlan_version.h5
-rw-r--r--CORE/SERVICES/BMI/ol_fw.c4
-rw-r--r--CORE/SERVICES/BMI/ol_fw.h1
-rw-r--r--CORE/SERVICES/HIF/USB/ar6320def.h10
-rw-r--r--CORE/SERVICES/HIF/USB/ar6320v2def.h10
-rw-r--r--CORE/SERVICES/HIF/USB/if_usb.c1
-rw-r--r--CORE/SERVICES/HIF/USB/regtable.h10
-rw-r--r--CORE/SERVICES/HIF/sdio/ar6320def.h10
-rw-r--r--CORE/SERVICES/HIF/sdio/ar6320v2def.h10
-rw-r--r--CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c18
-rw-r--r--CORE/SERVICES/HIF/sdio/regtable.h10
-rw-r--r--CORE/SERVICES/WMA/wma.c2
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c9
-rw-r--r--CORE/VOSS/inc/vos_nvitem.h5
-rw-r--r--CORE/VOSS/src/vos_nvitem.c5
19 files changed, 113 insertions, 56 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 598dd4389393..a3b03a816729 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -1609,7 +1609,6 @@ VOS_STATUS hdd_disable_bmps_imps(hdd_context_t *pHddCtx, tANI_U8 session_type);
void wlan_hdd_cfg80211_update_wiphy_caps(struct wiphy *wiphy);
VOS_STATUS hdd_setIbssPowerSaveParams(hdd_adapter_t *pAdapter);
-void wlan_hdd_cfg80211_update_reg_info(struct wiphy *wiphy);
VOS_STATUS wlan_hdd_restart_driver(hdd_context_t *pHddCtx);
void hdd_exchange_version_and_caps(hdd_context_t *pHddCtx);
void hdd_set_pwrparams(hdd_context_t *pHddCtx);
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 718f1ca31e72..ca4ea04753df 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -5716,41 +5716,6 @@ void wlan_hdd_cfg80211_update_wiphy_caps(struct wiphy *wiphy)
#endif
}
-/*
- * In this function we are updating channel list when,
- * regulatory domain is FCC and country code is US.
- * Here In FCC standard 5GHz UNII-1 Bands are indoor only.
- * As per FCC smart phone is not a indoor device.
- * GO should not operate on indoor channels.
- */
-void wlan_hdd_cfg80211_update_reg_info(struct wiphy *wiphy)
-{
- int j;
- hdd_context_t *pHddCtx = wiphy_priv(wiphy);
- tANI_U8 defaultCountryCode[3] = SME_INVALID_COUNTRY_CODE;
- /* Default country code from NV at the time of wiphy initialization. */
- if (eHAL_STATUS_SUCCESS != sme_GetDefaultCountryCodeFrmNv(pHddCtx->hHal,
- &defaultCountryCode[0]))
- {
- hddLog(LOGE, FL("Failed to get default country code from NV"));
- }
- if ((defaultCountryCode[0]== 'U') && (defaultCountryCode[1]=='S'))
- {
- if (NULL == wiphy->bands[IEEE80211_BAND_5GHZ])
- {
- hddLog(VOS_TRACE_LEVEL_ERROR,"%s: wiphy->bands[IEEE80211_BAND_5GHZ] is NULL",__func__ );
- return;
- }
- for (j = 0; j < wiphy->bands[IEEE80211_BAND_5GHZ]->n_channels; j++)
- {
- struct ieee80211_supported_band *band = wiphy->bands[IEEE80211_BAND_5GHZ];
- // Mark UNII -1 band channel as passive
- if (WLAN_HDD_CHANNEL_IN_UNII_1_BAND(band->channels[j].center_freq))
- band->channels[j].flags |= IEEE80211_CHAN_PASSIVE_SCAN;
- }
- }
-}
-
/* This function registers for all frame which supplicant is interested in */
void wlan_hdd_cfg80211_register_frames(hdd_adapter_t* pAdapter)
{
@@ -7355,6 +7320,8 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
pSapEventCallback = hdd_hostapd_SAPEventCB;
+ (WLAN_HDD_GET_AP_CTX_PTR(pHostapdAdapter))->dfs_cac_block_tx = VOS_TRUE;
+
status = WLANSAP_StartBss(
#ifdef WLAN_FEATURE_MBSSID
WLAN_HDD_GET_SAP_CTX_PTR(pHostapdAdapter),
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index b56136b2978c..0aa087f0c3dc 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -1566,6 +1566,15 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa
/* Allow suspend for old channel */
hdd_hostapd_channel_allow_suspend(pHostapdAdapter,
pHddApCtx->operatingChannel);
+ /* SME/PE is already updated for new operation channel. So update
+ * HDD layer also here. This resolves issue in AP-AP mode where
+ * AP1 channel is changed due to RADAR then CAC is going on and
+ * START_BSS on new channel has not come to HDD. At this case if
+ * AP2 is start it needs current operation channel for MCC DFS
+ * restiction
+ */
+ pHddApCtx->operatingChannel =
+ pSapEvent->sapevt.sapChannelChange.operatingChannel;
/* TODO Need to indicate operating channel change to hostapd */
return VOS_STATUS_SUCCESS;
@@ -2461,6 +2470,7 @@ static iw_softap_setparam(struct net_device *dev,
__func__, set_value);
ret = hdd_wlan_go_set_mcc_p2p_quota(pHostapdAdapter,
set_value);
+ break;
}
case QCASAP_TXRX_FWSTATS_RESET:
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index 02b5784a3879..c3fade4bc340 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -551,6 +551,16 @@ static const struct qwlan_hw qwlan_hw_list[] = {
.id = AR6320_REV3_2_VERSION,
.subid = 0xA,
.name = "QCA6174_REV3_2",
+ },
+ {
+ .id = AR6320_REV3_VERSION,
+ .subid = 0x0,
+ .name = "QCA9377_REV1",
+ },
+ {
+ .id = QCA9377_REV1_1_VERSION,
+ .subid = 0x1,
+ .name = "QCA9377_REV1_1",
}
};
@@ -6240,6 +6250,7 @@ static int iw_setint_getnone(struct net_device *dev, struct iw_request_info *inf
hddLog(LOG1, "iwpriv cmd to set MCC quota with val %dms",
set_value);
ret = hdd_wlan_set_mcc_p2p_quota(pAdapter, set_value);
+ break;
}
case WE_SET_DEBUG_LOG:
{
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 63999d34bea9..63258d9ac1df 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 22
+#define QWLAN_VERSION_BUILD 23
-#define QWLAN_VERSIONSTR "4.0.10.22"
+#define QWLAN_VERSIONSTR "4.0.10.23"
#define AR6320_REV1_VERSION 0x5000000
@@ -52,6 +52,7 @@ BRIEF DESCRIPTION:
#define AR6320_REV1_3_VERSION 0x5000003
#define AR6320_REV2_1_VERSION 0x5010000
#define AR6320_REV3_VERSION 0x5020000
+#define QCA9377_REV1_1_VERSION 0x5020001
#define AR6320_REV3_2_VERSION 0x5030000
struct qwlan_hw {
diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c
index 1dc9a4962ac2..4aa0bb9631b4 100644
--- a/CORE/SERVICES/BMI/ol_fw.c
+++ b/CORE/SERVICES/BMI/ol_fw.c
@@ -111,6 +111,7 @@ static int ol_get_fw_files_for_target(struct ol_fw_files *pfw_files,
break;
case AR6320_REV3_VERSION:
case AR6320_REV3_2_VERSION:
+ case QCA9377_REV1_1_VERSION:
memcpy(pfw_files, &FW_FILES_QCA6174_FW_3_0, sizeof(*pfw_files));
break;
default:
@@ -1570,6 +1571,7 @@ A_STATUS ol_patch_pll_switch(struct ol_softc * scn)
break;
case AR6320_REV3_VERSION:
case AR6320_REV3_2_VERSION:
+ case QCA9377_REV1_1_VERSION:
cmnos_core_clk_div_addr = AR6320V3_CORE_CLK_DIV_ADDR;
cmnos_cpu_pll_init_done_addr = AR6320V3_CPU_PLL_INIT_DONE_ADDR;
cmnos_cpu_speed_addr = AR6320V3_CPU_SPEED_ADDR;
@@ -2002,6 +2004,7 @@ int ol_download_firmware(struct ol_softc *scn)
case AR6320_REV2_VERSION:
case AR6320_REV3_VERSION:
case AR6320_REV3_2_VERSION:
+ case QCA9377_REV1_1_VERSION:
case AR6320_REV4_VERSION:
case AR6320_DEV_VERSION:
/* for SDIO, debug uart output gpio is 29, otherwise it is 6. */
@@ -2141,6 +2144,7 @@ static int ol_ath_get_reg_table(A_UINT32 target_version,
break;
case AR6320_REV3_VERSION:
case AR6320_REV3_2_VERSION:
+ case QCA9377_REV1_1_VERSION:
reg_table->section = (tgt_reg_section *)&ar6320v3_reg_table[0];
reg_table->section_size = sizeof(ar6320v3_reg_table)
/sizeof(ar6320v3_reg_table[0]);
diff --git a/CORE/SERVICES/BMI/ol_fw.h b/CORE/SERVICES/BMI/ol_fw.h
index 509e3e5b7f13..6ec95cfa6953 100644
--- a/CORE/SERVICES/BMI/ol_fw.h
+++ b/CORE/SERVICES/BMI/ol_fw.h
@@ -44,6 +44,7 @@
#define AR6320_REV2_VERSION AR6320_REV1_1_VERSION
#define AR6320_REV2_1_VERSION 0x5010000
#define AR6320_REV3_VERSION 0x5020000
+#define QCA9377_REV1_1_VERSION 0x5020001
#define AR6320_REV3_2_VERSION 0x5030000
#define AR6320_REV4_VERSION AR6320_REV2_1_VERSION
#define AR6320_DEV_VERSION 0x1000000
diff --git a/CORE/SERVICES/HIF/USB/ar6320def.h b/CORE/SERVICES/HIF/USB/ar6320def.h
index 13518d9aac07..28a23b13982c 100644
--- a/CORE/SERVICES/HIF/USB/ar6320def.h
+++ b/CORE/SERVICES/HIF/USB/ar6320def.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.
*
@@ -112,8 +112,12 @@
#define AR6320_DST_WATERMARK_ADDRESS 0x0050
#define AR6320_RX_MSDU_END_4_FIRST_MSDU_LSB 14
#define AR6320_RX_MSDU_END_4_FIRST_MSDU_MASK 0x00004000
+#define AR6320_RX_MPDU_START_0_RETRY_LSB 14
+#define AR6320_RX_MPDU_START_0_RETRY_MASK 0x00004000
#define AR6320_RX_MPDU_START_0_SEQ_NUM_LSB 16
#define AR6320_RX_MPDU_START_0_SEQ_NUM_MASK 0x0fff0000
+#define AR6320_RX_MPDU_START_2_TID_LSB 28
+#define AR6320_RX_MPDU_START_2_TID_MASK 0xf0000000
#define AR6320_RX_MPDU_START_2_PN_47_32_LSB 0
#define AR6320_RX_MPDU_START_2_PN_47_32_MASK 0x0000ffff
#define AR6320_RX_MSDU_END_1_KEY_ID_OCT_MASK 0x000000ff
@@ -455,10 +459,14 @@ struct targetdef_s ar6320_targetdef = {
/* htt_rx.c */
.d_RX_MSDU_END_4_FIRST_MSDU_MASK = AR6320_RX_MSDU_END_4_FIRST_MSDU_MASK,
.d_RX_MSDU_END_4_FIRST_MSDU_LSB = AR6320_RX_MSDU_END_4_FIRST_MSDU_LSB,
+ .d_RX_MPDU_START_0_RETRY_LSB = AR6320_RX_MPDU_START_0_RETRY_LSB,
+ .d_RX_MPDU_START_0_RETRY_MASK = AR6320_RX_MPDU_START_0_RETRY_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_MASK = AR6320_RX_MPDU_START_0_SEQ_NUM_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_LSB = AR6320_RX_MPDU_START_0_SEQ_NUM_LSB,
.d_RX_MPDU_START_2_PN_47_32_LSB = AR6320_RX_MPDU_START_2_PN_47_32_LSB,
.d_RX_MPDU_START_2_PN_47_32_MASK = AR6320_RX_MPDU_START_2_PN_47_32_MASK,
+ .d_RX_MPDU_START_2_TID_LSB = AR6320_RX_MPDU_START_2_TID_LSB,
+ .d_RX_MPDU_START_2_TID_MASK = AR6320_RX_MPDU_START_2_TID_MASK,
.d_RX_MSDU_END_1_KEY_ID_OCT_MASK = AR6320_RX_MSDU_END_1_KEY_ID_OCT_MASK,
.d_RX_MSDU_END_1_KEY_ID_OCT_LSB = AR6320_RX_MSDU_END_1_KEY_ID_OCT_LSB,
.d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK = AR6320_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK,
diff --git a/CORE/SERVICES/HIF/USB/ar6320v2def.h b/CORE/SERVICES/HIF/USB/ar6320v2def.h
index b9c1d2fadfd2..40ed743f2a69 100644
--- a/CORE/SERVICES/HIF/USB/ar6320v2def.h
+++ b/CORE/SERVICES/HIF/USB/ar6320v2def.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -112,10 +112,14 @@
#define AR6320V2_DST_WATERMARK_ADDRESS 0x0050
#define AR6320V2_RX_MSDU_END_4_FIRST_MSDU_LSB 14
#define AR6320V2_RX_MSDU_END_4_FIRST_MSDU_MASK 0x00004000
+#define AR6320V2_RX_MPDU_START_0_RETRY_LSB 14
+#define AR6320V2_RX_MPDU_START_0_RETRY_MASK 0x00004000
#define AR6320V2_RX_MPDU_START_0_SEQ_NUM_LSB 16
#define AR6320V2_RX_MPDU_START_0_SEQ_NUM_MASK 0x0fff0000
#define AR6320V2_RX_MPDU_START_2_PN_47_32_LSB 0
#define AR6320V2_RX_MPDU_START_2_PN_47_32_MASK 0x0000ffff
+#define AR6320V2_RX_MPDU_START_2_TID_LSB 28
+#define AR6320V2_RX_MPDU_START_2_TID_MASK 0xf0000000
#define AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB 16
#define AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK 0xffff0000
#define AR6320V2_RX_MSDU_END_4_LAST_MSDU_LSB 15
@@ -454,10 +458,14 @@ struct targetdef_s ar6320v2_targetdef = {
/* htt_rx.c */
.d_RX_MSDU_END_4_FIRST_MSDU_MASK = AR6320V2_RX_MSDU_END_4_FIRST_MSDU_MASK,
.d_RX_MSDU_END_4_FIRST_MSDU_LSB = AR6320V2_RX_MSDU_END_4_FIRST_MSDU_LSB,
+ .d_RX_MPDU_START_0_RETRY_LSB = AR6320V2_RX_MPDU_START_0_RETRY_LSB,
+ .d_RX_MPDU_START_0_RETRY_MASK = AR6320V2_RX_MPDU_START_0_RETRY_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_MASK = AR6320V2_RX_MPDU_START_0_SEQ_NUM_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_LSB = AR6320V2_RX_MPDU_START_0_SEQ_NUM_LSB,
.d_RX_MPDU_START_2_PN_47_32_LSB = AR6320V2_RX_MPDU_START_2_PN_47_32_LSB,
.d_RX_MPDU_START_2_PN_47_32_MASK = AR6320V2_RX_MPDU_START_2_PN_47_32_MASK,
+ .d_RX_MPDU_START_2_TID_LSB = AR6320V2_RX_MPDU_START_2_TID_LSB,
+ .d_RX_MPDU_START_2_TID_MASK = AR6320V2_RX_MPDU_START_2_TID_MASK,
.d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK = AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK,
.d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB = AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB,
.d_RX_MSDU_END_4_LAST_MSDU_MASK = AR6320V2_RX_MSDU_END_4_LAST_MSDU_MASK,
diff --git a/CORE/SERVICES/HIF/USB/if_usb.c b/CORE/SERVICES/HIF/USB/if_usb.c
index c9034e23cc59..9ea0915670ca 100644
--- a/CORE/SERVICES/HIF/USB/if_usb.c
+++ b/CORE/SERVICES/HIF/USB/if_usb.c
@@ -602,6 +602,7 @@ void hif_get_hw_info(void *ol_sc, u32 *version, u32 *revision)
case AR6320_REV2_1_VERSION:
case AR6320_REV3_VERSION:
case AR6320_REV3_2_VERSION:
+ case QCA9377_REV1_1_VERSION:
hif_type = HIF_TYPE_AR6320V2;
target_type = TARGET_TYPE_AR6320V2;
break;
diff --git a/CORE/SERVICES/HIF/USB/regtable.h b/CORE/SERVICES/HIF/USB/regtable.h
index 74ce65165fa3..7fc623b64d67 100644
--- a/CORE/SERVICES/HIF/USB/regtable.h
+++ b/CORE/SERVICES/HIF/USB/regtable.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -117,10 +117,14 @@ typedef struct targetdef_s {
/* htt_rx.c */
u_int32_t d_RX_MSDU_END_4_FIRST_MSDU_MASK;
u_int32_t d_RX_MSDU_END_4_FIRST_MSDU_LSB;
+ u_int32_t d_RX_MPDU_START_0_RETRY_LSB;
+ u_int32_t d_RX_MPDU_START_0_RETRY_MASK;
u_int32_t d_RX_MPDU_START_0_SEQ_NUM_MASK;
u_int32_t d_RX_MPDU_START_0_SEQ_NUM_LSB;
u_int32_t d_RX_MPDU_START_2_PN_47_32_LSB;
u_int32_t d_RX_MPDU_START_2_PN_47_32_MASK;
+ u_int32_t d_RX_MPDU_START_2_TID_LSB;
+ u_int32_t d_RX_MPDU_START_2_TID_MASK;
u_int32_t d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK;
u_int32_t d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB;
u_int32_t d_RX_MSDU_END_1_KEY_ID_OCT_MASK;
@@ -400,10 +404,14 @@ typedef struct targetdef_s {
/* htt_rx.c */
#define RX_MSDU_END_4_FIRST_MSDU_MASK (pdev->targetdef->d_RX_MSDU_END_4_FIRST_MSDU_MASK)
#define RX_MSDU_END_4_FIRST_MSDU_LSB (pdev->targetdef->d_RX_MSDU_END_4_FIRST_MSDU_LSB)
+#define RX_MPDU_START_0_RETRY_LSB (pdev->targetdef->d_RX_MPDU_START_0_RETRY_LSB)
+#define RX_MPDU_START_0_RETRY_MASK (pdev->targetdef->d_RX_MPDU_START_0_RETRY_MASK)
#define RX_MPDU_START_0_SEQ_NUM_MASK (pdev->targetdef->d_RX_MPDU_START_0_SEQ_NUM_MASK)
#define RX_MPDU_START_0_SEQ_NUM_LSB (pdev->targetdef->d_RX_MPDU_START_0_SEQ_NUM_LSB)
#define RX_MPDU_START_2_PN_47_32_LSB (pdev->targetdef->d_RX_MPDU_START_2_PN_47_32_LSB)
#define RX_MPDU_START_2_PN_47_32_MASK (pdev->targetdef->d_RX_MPDU_START_2_PN_47_32_MASK)
+#define RX_MPDU_START_2_TID_LSB (pdev->targetdef->d_RX_MPDU_START_2_TID_LSB)
+#define RX_MPDU_START_2_TID_MASK (pdev->targetdef->d_RX_MPDU_START_2_TID_MASK)
#define RX_MSDU_END_1_KEY_ID_OCT_MASK (pdev->targetdef->d_RX_MSDU_END_1_KEY_ID_OCT_MASK)
#define RX_MSDU_END_1_KEY_ID_OCT_LSB (pdev->targetdef->d_RX_MSDU_END_1_KEY_ID_OCT_LSB)
#define RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK (pdev->targetdef->d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK)
diff --git a/CORE/SERVICES/HIF/sdio/ar6320def.h b/CORE/SERVICES/HIF/sdio/ar6320def.h
index 5873bb789edf..95f5dcd6ffe6 100644
--- a/CORE/SERVICES/HIF/sdio/ar6320def.h
+++ b/CORE/SERVICES/HIF/sdio/ar6320def.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -112,8 +112,12 @@
#define AR6320_DST_WATERMARK_ADDRESS 0x0050
#define AR6320_RX_MSDU_END_4_FIRST_MSDU_LSB 14
#define AR6320_RX_MSDU_END_4_FIRST_MSDU_MASK 0x00004000
+#define AR6320_RX_MPDU_START_0_RETRY_LSB 14
+#define AR6320_RX_MPDU_START_0_RETRY_MASK 0x00004000
#define AR6320_RX_MPDU_START_0_SEQ_NUM_LSB 16
#define AR6320_RX_MPDU_START_0_SEQ_NUM_MASK 0x0fff0000
+#define AR6320_RX_MPDU_START_2_TID_LSB 28
+#define AR6320_RX_MPDU_START_2_TID_MASK 0xf0000000
#define AR6320_RX_MPDU_START_2_PN_47_32_LSB 0
#define AR6320_RX_MPDU_START_2_PN_47_32_MASK 0x0000ffff
#define AR6320_RX_MSDU_END_1_KEY_ID_OCT_MASK 0x000000ff
@@ -429,10 +433,14 @@ struct targetdef_s ar6320_targetdef = {
/* htt_rx.c */
.d_RX_MSDU_END_4_FIRST_MSDU_MASK = AR6320_RX_MSDU_END_4_FIRST_MSDU_MASK,
.d_RX_MSDU_END_4_FIRST_MSDU_LSB = AR6320_RX_MSDU_END_4_FIRST_MSDU_LSB,
+ .d_RX_MPDU_START_0_RETRY_LSB = AR6320_RX_MPDU_START_0_RETRY_LSB,
+ .d_RX_MPDU_START_0_RETRY_MASK = AR6320_RX_MPDU_START_0_RETRY_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_MASK = AR6320_RX_MPDU_START_0_SEQ_NUM_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_LSB = AR6320_RX_MPDU_START_0_SEQ_NUM_LSB,
.d_RX_MPDU_START_2_PN_47_32_LSB = AR6320_RX_MPDU_START_2_PN_47_32_LSB,
.d_RX_MPDU_START_2_PN_47_32_MASK = AR6320_RX_MPDU_START_2_PN_47_32_MASK,
+ .d_RX_MPDU_START_2_TID_LSB = AR6320_RX_MPDU_START_2_TID_LSB,
+ .d_RX_MPDU_START_2_TID_MASK = AR6320_RX_MPDU_START_2_TID_MASK,
.d_RX_MSDU_END_1_KEY_ID_OCT_MASK = AR6320_RX_MSDU_END_1_KEY_ID_OCT_MASK,
.d_RX_MSDU_END_1_KEY_ID_OCT_LSB = AR6320_RX_MSDU_END_1_KEY_ID_OCT_LSB,
.d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK = AR6320_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK,
diff --git a/CORE/SERVICES/HIF/sdio/ar6320v2def.h b/CORE/SERVICES/HIF/sdio/ar6320v2def.h
index c4ef55b3f8a2..4a8c8bdf137c 100644
--- a/CORE/SERVICES/HIF/sdio/ar6320v2def.h
+++ b/CORE/SERVICES/HIF/sdio/ar6320v2def.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -112,10 +112,14 @@
#define AR6320V2_DST_WATERMARK_ADDRESS 0x0050
#define AR6320V2_RX_MSDU_END_4_FIRST_MSDU_LSB 14
#define AR6320V2_RX_MSDU_END_4_FIRST_MSDU_MASK 0x00004000
+#define AR6320V2_RX_MPDU_START_0_RETRY_LSB 14
+#define AR6320V2_RX_MPDU_START_0_RETRY_MASK 0x00004000
#define AR6320V2_RX_MPDU_START_0_SEQ_NUM_LSB 16
#define AR6320V2_RX_MPDU_START_0_SEQ_NUM_MASK 0x0fff0000
#define AR6320V2_RX_MPDU_START_2_PN_47_32_LSB 0
#define AR6320V2_RX_MPDU_START_2_PN_47_32_MASK 0x0000ffff
+#define AR6320V2_RX_MPDU_START_2_TID_LSB 28
+#define AR6320V2_RX_MPDU_START_2_TID_MASK 0xf0000000
#define AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB 16
#define AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK 0xffff0000
#define AR6320V2_RX_MSDU_END_4_LAST_MSDU_LSB 15
@@ -428,10 +432,14 @@ struct targetdef_s ar6320v2_targetdef = {
/* htt_rx.c */
.d_RX_MSDU_END_4_FIRST_MSDU_MASK = AR6320V2_RX_MSDU_END_4_FIRST_MSDU_MASK,
.d_RX_MSDU_END_4_FIRST_MSDU_LSB = AR6320V2_RX_MSDU_END_4_FIRST_MSDU_LSB,
+ .d_RX_MPDU_START_0_RETRY_LSB = AR6320V2_RX_MPDU_START_0_RETRY_LSB,
+ .d_RX_MPDU_START_0_RETRY_MASK = AR6320V2_RX_MPDU_START_0_RETRY_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_MASK = AR6320V2_RX_MPDU_START_0_SEQ_NUM_MASK,
.d_RX_MPDU_START_0_SEQ_NUM_LSB = AR6320V2_RX_MPDU_START_0_SEQ_NUM_LSB,
.d_RX_MPDU_START_2_PN_47_32_LSB = AR6320V2_RX_MPDU_START_2_PN_47_32_LSB,
.d_RX_MPDU_START_2_PN_47_32_MASK = AR6320V2_RX_MPDU_START_2_PN_47_32_MASK,
+ .d_RX_MPDU_START_2_TID_LSB = AR6320V2_RX_MPDU_START_2_TID_LSB,
+ .d_RX_MPDU_START_2_TID_MASK = AR6320V2_RX_MPDU_START_2_TID_MASK,
.d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK = AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK,
.d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB = AR6320V2_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB,
.d_RX_MSDU_END_4_LAST_MSDU_MASK = AR6320V2_RX_MSDU_END_4_LAST_MSDU_MASK,
diff --git a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
index d9fac19bfe3c..e1111d892855 100644
--- a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
+++ b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
@@ -44,6 +44,7 @@
#include "if_ath_sdio.h"
#include "vos_api.h"
#include "vos_sched.h"
+#include "regtable.h"
#ifndef REMOVE_PKT_LOG
#include "ol_txrx_types.h"
@@ -425,9 +426,20 @@ void hif_reset_soc(void *ol_sc)
void hif_get_hw_info(void *ol_sc, u32 *version, u32 *revision)
{
- *version = ((struct ol_softc *)ol_sc)->target_version;
- /* Chip revision should be supported, set to 0 for now */
- *revision = 0;
+ struct ol_softc *ol_sc_local = (struct ol_softc *)ol_sc;
+ A_UINT32 chip_id = 0;
+ A_STATUS rv;
+ rv = HIFDiagReadAccess(ol_sc_local->hif_hdl,
+ (CHIP_ID_ADDRESS | RTC_SOC_BASE_ADDRESS), &chip_id);
+ if (rv != A_OK) {
+ pr_warn("%s[%d]: get chip id fail\n", __func__, __LINE__);
+ ol_sc_local->target_revision = -1;
+ } else {
+ ol_sc_local->target_revision =
+ CHIP_ID_REVISION_GET(chip_id);
+ }
+ *version = ol_sc_local->target_version;
+ *revision = ol_sc_local->target_revision;
}
void hif_set_fw_info(void *ol_sc, u32 target_fw_version)
diff --git a/CORE/SERVICES/HIF/sdio/regtable.h b/CORE/SERVICES/HIF/sdio/regtable.h
index 5881ebdd4871..6c6b4df3d172 100644
--- a/CORE/SERVICES/HIF/sdio/regtable.h
+++ b/CORE/SERVICES/HIF/sdio/regtable.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -118,10 +118,14 @@ typedef struct targetdef_s {
/* htt_rx.c */
u_int32_t d_RX_MSDU_END_4_FIRST_MSDU_MASK;
u_int32_t d_RX_MSDU_END_4_FIRST_MSDU_LSB;
+ u_int32_t d_RX_MPDU_START_0_RETRY_LSB;
+ u_int32_t d_RX_MPDU_START_0_RETRY_MASK;
u_int32_t d_RX_MPDU_START_0_SEQ_NUM_MASK;
u_int32_t d_RX_MPDU_START_0_SEQ_NUM_LSB;
u_int32_t d_RX_MPDU_START_2_PN_47_32_LSB;
u_int32_t d_RX_MPDU_START_2_PN_47_32_MASK;
+ u_int32_t d_RX_MPDU_START_2_TID_LSB;
+ u_int32_t d_RX_MPDU_START_2_TID_MASK;
u_int32_t d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK;
u_int32_t d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_LSB;
u_int32_t d_RX_MSDU_END_1_KEY_ID_OCT_MASK;
@@ -372,10 +376,14 @@ typedef struct targetdef_s {
/* htt_rx.c */
#define RX_MSDU_END_4_FIRST_MSDU_MASK (pdev->targetdef->d_RX_MSDU_END_4_FIRST_MSDU_MASK)
#define RX_MSDU_END_4_FIRST_MSDU_LSB (pdev->targetdef->d_RX_MSDU_END_4_FIRST_MSDU_LSB)
+#define RX_MPDU_START_0_RETRY_LSB (pdev->targetdef->d_RX_MPDU_START_0_RETRY_LSB)
+#define RX_MPDU_START_0_RETRY_MASK (pdev->targetdef->d_RX_MPDU_START_0_RETRY_MASK)
#define RX_MPDU_START_0_SEQ_NUM_MASK (pdev->targetdef->d_RX_MPDU_START_0_SEQ_NUM_MASK)
#define RX_MPDU_START_0_SEQ_NUM_LSB (pdev->targetdef->d_RX_MPDU_START_0_SEQ_NUM_LSB)
#define RX_MPDU_START_2_PN_47_32_LSB (pdev->targetdef->d_RX_MPDU_START_2_PN_47_32_LSB)
#define RX_MPDU_START_2_PN_47_32_MASK (pdev->targetdef->d_RX_MPDU_START_2_PN_47_32_MASK)
+#define RX_MPDU_START_2_TID_LSB (pdev->targetdef->d_RX_MPDU_START_2_TID_LSB)
+#define RX_MPDU_START_2_TID_MASK (pdev->targetdef->d_RX_MPDU_START_2_TID_MASK)
#define RX_MSDU_END_1_KEY_ID_OCT_MASK (pdev->targetdef->d_RX_MSDU_END_1_KEY_ID_OCT_MASK)
#define RX_MSDU_END_1_KEY_ID_OCT_LSB (pdev->targetdef->d_RX_MSDU_END_1_KEY_ID_OCT_LSB)
#define RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK (pdev->targetdef->d_RX_MSDU_END_1_EXT_WAPI_PN_63_48_MASK)
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index b3d77fd73bae..74e1e911a183 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -2744,7 +2744,7 @@ static int wma_extscan_table_usage_event_handler (void *handle,
return -EINVAL;
}
tbl_usg_ind->requestId = event->request_id;
- tbl_usg_ind->numResultsAvailable = event->maximum_entries;
+ tbl_usg_ind->numResultsAvailable = event->entries_in_use;
pMac->sme.pExtScanIndCb(pMac->hHdd,
eSIR_EXTSCAN_SCAN_RES_AVAILABLE_IND,
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index eab0936634b3..2a9b656dd1a2 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -2699,9 +2699,8 @@ eHalStatus csrRoamCallCallback(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoam
pRoamInfo->chan_info.reg_info_2 =
(csrGetCfgMaxTxPower(pMac, pRoamInfo->chan_info.chan_id) << 8);
vos_mem_free(beacon_ies);
- }
-
- if ((u1 == eCSR_ROAM_FT_REASSOC_FAILED) && (pSession->bRefAssocStartCnt)) {
+ } else if ((u1 == eCSR_ROAM_FT_REASSOC_FAILED) &&
+ (pSession->bRefAssocStartCnt)) {
/*
* Decrement bRefAssocStartCnt for FT reassoc failure.
* Reason: For FT reassoc failures, we first call
@@ -2713,6 +2712,10 @@ eHalStatus csrRoamCallCallback(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoam
* failure, decrement bRefAssocStartCnt.
*/
pSession->bRefAssocStartCnt--;
+ } else if (u1 == eCSR_ROAM_SET_CHANNEL_RSP && u2 ==
+ eCSR_ROAM_RESULT_CHANNEL_CHANGE_SUCCESS) {
+ pSession->connectedProfile.operationChannel =
+ pRoamInfo->channelChangeRespEvent->newChannelNumber;
}
if(NULL != pSession->callback)
diff --git a/CORE/VOSS/inc/vos_nvitem.h b/CORE/VOSS/inc/vos_nvitem.h
index bc0bbb89c581..9b33deb52799 100644
--- a/CORE/VOSS/inc/vos_nvitem.h
+++ b/CORE/VOSS/inc/vos_nvitem.h
@@ -51,11 +51,6 @@
#define VOS_COUNTRY_CODE_LEN 2
#define VOS_MAC_ADDRESS_LEN 6
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) || defined(WITH_BACKPORTS)
-#define IEEE80211_CHAN_PASSIVE_SCAN IEEE80211_CHAN_NO_IR
-#define IEEE80211_CHAN_NO_IBSS IEEE80211_CHAN_NO_IR
-#endif
-
/*--------------------------------------------------------------------------
Type declarations
------------------------------------------------------------------------*/
diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
index 8537023c8bc0..7ef24691e9d3 100644
--- a/CORE/VOSS/src/vos_nvitem.c
+++ b/CORE/VOSS/src/vos_nvitem.c
@@ -57,6 +57,11 @@
#define IEEE80211_CHAN_NO_80MHZ 1<<7
#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+#define IEEE80211_CHAN_PASSIVE_SCAN IEEE80211_CHAN_NO_IR
+#define IEEE80211_CHAN_NO_IBSS IEEE80211_CHAN_NO_IR
+#endif
+
static v_REGDOMAIN_t cur_reg_domain = REGDOMAIN_COUNT;
static char linux_reg_cc[2] = {0, 0};
static v_REGDOMAIN_t temp_reg_domain = REGDOMAIN_COUNT;