summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-02-10 16:37:52 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-02-10 16:40:01 +0530
commit8d5230218bc4e84fc49f190a964f6ebb17475abd (patch)
tree75f3efc0aa068dc517721624852b148c867c9188
parent3398e12008e76afaccef719b174da35a49f0bb72 (diff)
parent2a09f5ce60d021da6723063c7aef598be851e554 (diff)
Release 4.0.10.31 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master' * origin/caf/caf-wlan/master: Cafstaging Release 4.0.10.31 qca-cld:hdd: Fix setting phy mode in ACS offloading qcacld:IPA uC: Direct mapping vdev to interface ID qcacld:IPA UC: Fix to send multiple ipa_offload_enable_disable in STA mode qcacld:IPA UC: Fix uC STAT OP callback prints wrong uC FW TX/RX stats Change-Id: I085f2f4f10f44bf4fe18104ce45e89fd6a796d4f
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c56
-rw-r--r--CORE/HDD/src/wlan_hdd_ipa.c41
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/SAP/src/sapChSelect.c2
4 files changed, 78 insertions, 25 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index db0e29e9efbe..0c79cb05fd81 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -4679,18 +4679,31 @@ static int wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
const void *data, int data_len)
{
- hdd_adapter_t *adapter;
+ struct net_device *ndev = wdev->netdev;
+ hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(ndev);
hdd_context_t *hdd_ctx = wiphy_priv(wiphy);
tsap_Config_t *sap_config;
tpWLAN_SAPEventCB acs_event_callback;
- struct net_device *ndev = wdev->netdev;
struct sk_buff *temp_skbuff;
int status;
struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_ACS_MAX + 1];
u8 hw_mode;
bool ht_enabled, ht40_enabled;
+ tHalHandle hHal;
+ tpAniSirGlobal pMac;
+#ifdef WLAN_FEATURE_11AC
+ v_BOOL_t sap_force11AC_for11n =
+#ifdef WLAN_FEATURE_MBSSID
+ adapter->sap_dyn_ini_cfg.apForce11ACFor11n;
+#else
+ hdd_ctx->cfg_ini->apForce11ACFor11n;
+#endif
+#endif
+
+ hHal = WLAN_HDD_GET_HAL_CTX(adapter);
+
+ pMac = PMAC_STRUCT(hHal);
- adapter = WLAN_HDD_GET_PRIV_PTR(ndev);
#ifndef WLAN_FEATURE_MBSSID
hdd_config_t *hdd_config = (WLAN_HDD_GET_CTX(adapter))->cfg_ini;
#endif
@@ -4780,6 +4793,11 @@ static int wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
#else
band_to_hw_mode(hdd_config->apOperatingBand)) {
#endif
+
+ tSmeConfigParams smeConfig;
+ vos_mem_zero(&smeConfig, sizeof(smeConfig));
+ sme_GetConfigParam(hdd_ctx->hHal, &smeConfig);
+
hddLog(LOGW,
FL("Conflict band setting between hostapd and driver!!"));
switch (hw_mode) {
@@ -4799,6 +4817,11 @@ static int wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
hdd_config->apEndChannelNum =
rfChannels[RF_CHAN_14].channelNum;
#endif
+ if (hw_mode == QCA_ACS_MODE_IEEE80211G)
+ smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11g;
+ else
+ smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11b;
+
break;
case QCA_ACS_MODE_IEEE80211A:
#ifdef WLAN_FEATURE_MBSSID
@@ -4816,12 +4839,15 @@ static int wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
hdd_config->sap_dyn_ini_cfg.apEndChannelNum =
rfChannels[RF_CHAN_165].channelNum;
#endif
+ smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11a;
break;
default:
hddLog(LOGE,
FL("Unsupported hw_mode!"));
goto out;
}
+
+ sme_UpdateConfig(hdd_ctx->hHal, &smeConfig);
}
}
@@ -4839,9 +4865,33 @@ static int wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
default:
break;
}
+
+ smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11n;
+
+#ifdef WLAN_FEATURE_11AC
+ /* Overwrite the hostapd setting for HW mode only for 11ac.
+ * This is valid only if mode is set to 11n in hostapd and
+ * either AUTO or 11ac in .ini .i*/
+ if(sap_force11AC_for11n &&
+ ((hdd_ctx->cfg_ini->dot11Mode == eHDD_DOT11_MODE_AUTO) ||
+ (hdd_ctx->cfg_ini->dot11Mode == eHDD_DOT11_MODE_11ac) ||
+ (hdd_ctx->cfg_ini->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY))) {
+ if (hdd_ctx->cfg_ini->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY)
+ smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11ac_ONLY;
+ else
+ smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11ac;
+
+ /* for 2.4G */
+ if ((hw_mode == QCA_ACS_MODE_IEEE80211G) &&
+ !hdd_ctx->cfg_ini->enableVhtFor24GHzBand)
+ smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11n;
+ }
+#endif
sme_UpdateConfig(hdd_ctx->hHal, &smeConfig);
+ hddLog(LOG1, FL("phyMode is %d"), smeConfig.csrConfig.phyMode);
}
+
status = wlan_hdd_config_acs(hdd_ctx, adapter);
if (status) {
hddLog(LOGE, FL("ACS config failed"));
diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c
index 640c368af776..89f0e3f8104d 100644
--- a/CORE/HDD/src/wlan_hdd_ipa.c
+++ b/CORE/HDD/src/wlan_hdd_ipa.c
@@ -371,6 +371,7 @@ struct uc_op_work_struct {
struct work_struct work;
struct op_msg_type *msg;
};
+static uint8_t vdev_to_iface[CSR_ROAM_SESSION_MAX];
#endif /* IPA_UC_OFFLOAD */
struct hdd_ipa_priv {
@@ -1082,7 +1083,7 @@ static void hdd_ipa_uc_op_cb(struct op_msg_type *op_msg, void *usr_ctxt)
/* STATs from FW */
uc_fw_stat = (struct ipa_uc_fw_stats *)
- (op_msg + sizeof(struct op_msg_type));
+ ((v_U8_t *)op_msg + sizeof(struct op_msg_type));
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"==== IPA_UC WLAN_FW TX ====\n"
"COMP RING BASE: 0x%x\n"
@@ -1206,7 +1207,7 @@ static void hdd_ipa_uc_op_cb(struct op_msg_type *op_msg, void *usr_ctxt)
(HDD_IPA_UC_STAT_REASON_BW_CAL == hdd_ipa->stat_req_reason)) {
/* STATs from FW */
uc_fw_stat = (struct ipa_uc_fw_stats *)
- (op_msg + sizeof(struct op_msg_type));
+ ((v_U8_t *)op_msg + sizeof(struct op_msg_type));
vos_lock_acquire(&hdd_ipa->event_lock);
hdd_ipa->ipa_tx_packets_diff = uc_fw_stat->tx_pkts_completed -
hdd_ipa->ipa_p_tx_packets;
@@ -1283,21 +1284,6 @@ end:
adf_os_mem_free(op_msg);
}
-static uint8_t hdd_ipa_uc_get_iface_id(struct hdd_ipa_priv *hdd_ipa,
- uint8_t session_id)
-{
- uint8_t i;
-
- /* This revisit needed for performance */
- for (i = 0; i < HDD_IPA_MAX_IFACE; i++) {
- if ((hdd_ipa->iface_context[i].adapter != NULL) &&
- (hdd_ipa->iface_context[i].adapter->sessionId == session_id)) {
- break;
- }
- }
- return i;
-}
-
static VOS_STATUS hdd_ipa_uc_ol_init(hdd_context_t *hdd_ctx)
{
struct ipa_wdi_in_params pipe_in;
@@ -2189,7 +2175,7 @@ static void hdd_ipa_w2i_cb(void *priv, enum ipa_dp_evt_type evt,
#ifdef IPA_UC_OFFLOAD
if (hdd_ipa_uc_is_enabled(hdd_ipa)) {
session_id = (uint8_t)skb->cb[0];
- iface_id = hdd_ipa_uc_get_iface_id(hdd_ipa, session_id);
+ iface_id = vdev_to_iface[session_id];
HDD_IPA_LOG(VOS_TRACE_LEVEL_INFO_HIGH,
"IPA_RECEIVE: session_id=%u, iface_id=%u",
session_id, iface_id);
@@ -3114,7 +3100,7 @@ static void hdd_ipa_uc_offload_enable_disable(hdd_adapter_t *adapter,
* layer as SAP updates and IPA doesn't have to do anything for these
* updates so ignoring!
*/
- if (WLAN_HDD_SOFTAP == adapter->device_mode && adapter->ipa_context)
+ if (adapter->ipa_context)
return;
vos_mem_zero(&ipa_offload_enable_disable,
@@ -3232,6 +3218,13 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id,
ret = hdd_ipa_setup_iface(hdd_ipa, adapter, sta_id);
if (ret)
goto end;
+
+#ifdef IPA_UC_OFFLOAD
+ vdev_to_iface[adapter->sessionId] =
+ ((struct hdd_ipa_iface_context *)
+ (adapter->ipa_context))->iface_id;
+#endif
+
break;
case WLAN_AP_CONNECT:
@@ -3241,9 +3234,17 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id,
SIR_AP_RX_DATA_OFFLOAD, 1);
}
#endif
+
ret = hdd_ipa_setup_iface(hdd_ipa, adapter, sta_id);
if (ret)
goto end;
+
+#ifdef IPA_UC_OFFLOAD
+ vdev_to_iface[adapter->sessionId] =
+ ((struct hdd_ipa_iface_context *)
+ (adapter->ipa_context))->iface_id;
+#endif
+
break;
case WLAN_STA_DISCONNECT:
@@ -3265,6 +3266,7 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id,
if (hdd_ipa_uc_sta_is_enabled(hdd_ipa)) {
hdd_ipa_uc_offload_enable_disable(adapter,
SIR_STA_RX_DATA_OFFLOAD, 0);
+ vdev_to_iface[adapter->sessionId] = HDD_IPA_MAX_IFACE;
}
#endif
break;
@@ -3276,6 +3278,7 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id,
if (hdd_ipa_uc_is_enabled(hdd_ipa)) {
hdd_ipa_uc_offload_enable_disable(adapter,
SIR_AP_RX_DATA_OFFLOAD, 0);
+ vdev_to_iface[adapter->sessionId] = HDD_IPA_MAX_IFACE;
}
#endif
break;
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 5a4f3813f8b1..c59d04026b25 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 30
+#define QWLAN_VERSION_BUILD 31
-#define QWLAN_VERSIONSTR "4.0.10.30"
+#define QWLAN_VERSIONSTR "4.0.10.31"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/SAP/src/sapChSelect.c b/CORE/SAP/src/sapChSelect.c
index faf14a323159..c3e3f1792275 100644
--- a/CORE/SAP/src/sapChSelect.c
+++ b/CORE/SAP/src/sapChSelect.c
@@ -2201,7 +2201,7 @@ void sapSortChlWeightHT80(tSapChSelSpectInfo *pSpectInfoParams)
{
/* some channels does not exist in pSectInfo array,
skip this channel and those in the same HT80 width*/
- pSpectInfo[j].weight = ACS_WEIGHT_MAX;
+ pSpectInfo[j].weight = ACS_WEIGHT_MAX * 4;
if ((pSpectInfo[j].chNum +4) == pSpectInfo[j+1].chNum)
pSpectInfo[j+1].weight = ACS_WEIGHT_MAX * 4;
if ((pSpectInfo[j].chNum +8) == pSpectInfo[j+2].chNum)