wlan: Update APIs for 3.14 kernel
Some CFG/NL80211 and kernel APIs etc. are changed during kernel update
to 3.14 version. Update the corresponding APIs in host driver to fix
compilation errors.
Change-Id: Idc692e83307ff3f3b881d4e1027ba9d8286e3cbe
CRs-fixed: 882885
diff --git a/CORE/HDD/inc/wlan_hdd_p2p.h b/CORE/HDD/inc/wlan_hdd_p2p.h
index b21ade7..728dd7d 100644
--- a/CORE/HDD/inc/wlan_hdd_p2p.h
+++ b/CORE/HDD/inc/wlan_hdd_p2p.h
@@ -139,7 +139,10 @@
int wlan_hdd_check_remain_on_channel(hdd_adapter_t *pAdapter);
VOS_STATUS wlan_hdd_cancel_existing_remain_on_channel(hdd_adapter_t *pAdapter);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+int wlan_hdd_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
+ struct cfg80211_mgmt_tx_params *params, u64 *cookie);
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct wireless_dev *wdev,
struct ieee80211_channel *chan, bool offchan,
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
diff --git a/CORE/HDD/inc/wlan_hdd_wmm.h b/CORE/HDD/inc/wlan_hdd_wmm.h
index bc32a1d..76c2837 100644
--- a/CORE/HDD/inc/wlan_hdd_wmm.h
+++ b/CORE/HDD/inc/wlan_hdd_wmm.h
@@ -264,8 +264,14 @@
@return : Qdisc queue index
===========================================================================*/
-v_U16_t hdd_hostapd_select_queue(struct net_device * dev, struct sk_buff *skb);
-
+v_U16_t hdd_hostapd_select_queue(struct net_device * dev, struct sk_buff *skb
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0))
+ , void *accel_priv
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ , select_queue_fallback_t fallbac
+#endif
+);
/**============================================================================
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 03ac7cc..8333b29 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -4918,12 +4918,20 @@
/* Get pAdapter from Destination mac address of the frame */
if (type == SIR_MAC_MGMT_FRAME && subType == SIR_MAC_MGMT_DISASSOC)
{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0))
+ cfg80211_rx_unprot_mlme_mgmt(pAdapter->dev, pbFrames, nFrameLength);
+#else
cfg80211_send_unprot_disassoc(pAdapter->dev, pbFrames, nFrameLength);
+#endif
pAdapter->hdd_stats.hddPmfStats.numUnprotDisassocRx++;
}
else if (type == SIR_MAC_MGMT_FRAME && subType == SIR_MAC_MGMT_DEAUTH)
{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0))
+ cfg80211_rx_unprot_mlme_mgmt(pAdapter->dev, pbFrames, nFrameLength);
+#else
cfg80211_send_unprot_deauth(pAdapter->dev, pbFrames, nFrameLength);
+#endif
pAdapter->hdd_stats.hddPmfStats.numUnprotDeauthRx++;
}
else
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 39f70e8..9123028 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -5829,8 +5829,11 @@
/* This will disable updating of NL channels from passive to
* active if a beacon is received on passive channel. */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ wiphy->regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS;
+#else
wiphy->flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS;
-
+#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
@@ -5838,7 +5841,11 @@
| WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD
| WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL
| WIPHY_FLAG_OFFCHAN_TX;
- wiphy->country_ie_pref = NL80211_COUNTRY_IE_IGNORE_CORE;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ wiphy->regulatory_flags = REGULATORY_COUNTRY_IE_IGNORE;
+#else
+ wiphy->country_ie_pref = NL80211_COUNTRY_IE_IGNORE_CORE;
+#endif
#endif
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
@@ -16292,7 +16299,11 @@
return err;
}
-static int wlan_hdd_cfg80211_testmode(struct wiphy *wiphy, void *data, int len)
+static int wlan_hdd_cfg80211_testmode(struct wiphy *wiphy,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
+ struct wireless_dev *wdev,
+#endif
+ void *data, int len)
{
int ret;
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index f562e54..2b1d082 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -207,7 +207,14 @@
void hdd_set_wlan_suspend_mode(bool suspend);
v_U16_t hdd_select_queue(struct net_device *dev,
- struct sk_buff *skb);
+ struct sk_buff *skb
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0))
+ , void *accel_priv
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ , select_queue_fallback_t fallback
+#endif
+);
#ifdef WLAN_FEATURE_PACKET_FILTERING
static void hdd_set_multicast_list(struct net_device *dev);
@@ -2231,6 +2238,9 @@
hdd_scaninfo_t *pScanInfo = NULL;
int ret = 0;
int status;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ struct cfg80211_mgmt_tx_params params;
+#endif
ENTER();
/*
@@ -3063,6 +3073,16 @@
vos_mem_free(buf);
buf = NULL;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ params.chan = &chan;
+ params.offchan = 0;
+ params.wait = dwellTime;
+ params.buf = finalBuf;
+ params.len = finalLen;
+ params.no_cck = 1;
+ params.dont_wait_for_ack = 1;
+ ret = wlan_hdd_mgmt_tx(NULL, &pAdapter->wdev, ¶ms, &cookie);
+#else
wlan_hdd_mgmt_tx( NULL,
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
&(pAdapter->wdev),
@@ -3075,6 +3095,7 @@
#endif
dwellTime, finalBuf, finalLen, 1,
1, &cookie );
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)*/
vos_mem_free(finalBuf);
}
else if (strncmp(command, "GETROAMSCANCHANNELMINTIME", 25) == 0)
@@ -8151,7 +8172,14 @@
--------------------------------------------------------------------------*/
v_U16_t hdd_select_queue(struct net_device *dev,
- struct sk_buff *skb)
+ struct sk_buff *skb
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0))
+ , void *accel_priv
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ , select_queue_fallback_t fallback
+#endif
+)
{
return hdd_wmm_select_queue(dev, skb);
}
@@ -11218,8 +11246,11 @@
* the driver.
*
*/
-
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0))
+ cfg80211_rx_unprot_mlme_mgmt(pAdapterNode->pAdapter->dev, (u_int8_t*)mgmt, len);
+#else
cfg80211_send_unprot_deauth(pAdapterNode->pAdapter->dev, (u_int8_t*)mgmt, len );
+#endif
}
status = hdd_get_next_adapter ( pHddCtx, pAdapterNode, &pNext );
pAdapterNode = pNext;
diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c
index f3716b2..f46bcae 100644
--- a/CORE/HDD/src/wlan_hdd_p2p.c
+++ b/CORE/HDD/src/wlan_hdd_p2p.c
@@ -838,7 +838,13 @@
// Check for cached action frame
if ( pRemainChanCtx->action_pkt_buff.frame_length != 0 )
{
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
+ cfg80211_rx_mgmt(pAdapter->dev->ieee80211_ptr,
+ pRemainChanCtx->action_pkt_buff.freq, 0,
+ pRemainChanCtx->action_pkt_buff.frame_ptr,
+ pRemainChanCtx->action_pkt_buff.frame_length,
+ NL80211_RXMGMT_FLAG_ANSWERED, GFP_ATOMIC);
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
cfg80211_rx_mgmt( pAdapter->dev->ieee80211_ptr,
pRemainChanCtx->action_pkt_buff.freq, 0,
pRemainChanCtx->action_pkt_buff.frame_ptr,
@@ -1452,7 +1458,10 @@
return 0;
}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+int wlan_hdd_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
+ struct cfg80211_mgmt_tx_params *params, u64 *cookie)
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct wireless_dev *wdev,
struct ieee80211_channel *chan, bool offchan,
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
@@ -1486,7 +1495,12 @@
int ret;
vos_ssr_protect(__func__);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ ret = __wlan_hdd_mgmt_tx(wiphy, wdev, params->chan, params->offchan,
+ params->wait, params->buf, params->len,
+ params->no_cck, params->dont_wait_for_ack,
+ cookie);
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
ret = __wlan_hdd_mgmt_tx(wiphy, wdev,
chan, offchan,
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
@@ -2459,8 +2473,10 @@
//Indicate Frame Over Normal Interface
hddLog( LOG1, FL("Indicate Frame over NL80211 Interface"));
-
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
+ cfg80211_rx_mgmt(pAdapter->dev->ieee80211_ptr, freq, 0, pbFrames,
+ nFrameLength, NL80211_RXMGMT_FLAG_ANSWERED, GFP_ATOMIC);
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
cfg80211_rx_mgmt( pAdapter->dev->ieee80211_ptr, freq, 0,
pbFrames, nFrameLength,
GFP_ATOMIC );
diff --git a/CORE/HDD/src/wlan_hdd_wmm.c b/CORE/HDD/src/wlan_hdd_wmm.c
index 40f87b5..dc2a6d0 100644
--- a/CORE/HDD/src/wlan_hdd_wmm.c
+++ b/CORE/HDD/src/wlan_hdd_wmm.c
@@ -2082,7 +2082,14 @@
@return : Qdisc queue index
===========================================================================*/
-v_U16_t hdd_hostapd_select_queue(struct net_device * dev, struct sk_buff *skb)
+v_U16_t hdd_hostapd_select_queue(struct net_device * dev, struct sk_buff *skb
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0))
+ , void *accel_priv
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+ , select_queue_fallback_t fallbac
+#endif
+)
{
WLANTL_ACEnumType ac;
sme_QosWmmUpType up = SME_QOS_WMM_UP_BE;