wlan: Modify wlan driver to support msm-4.9 kernel
Upgrade wlan driver to support msm-4.9 kernel and also
maintain backward compatibility with previous kernel versions.
Change-Id: Iaae91fe559bfba05b1da4be9b9ef9a12d6f9df28
CRs-Fixed: 2180168
diff --git a/Android.mk b/Android.mk
index de0c735..179d4cb 100644
--- a/Android.mk
+++ b/Android.mk
@@ -48,7 +48,11 @@
WLAN_BLD_DIR := vendor/qcom/proprietary/wlan
else
ifneq ($(TARGET_SUPPORTS_WEARABLES),true)
+ifneq ($(ANDROID_BUILD_TOP),)
+ WLAN_BLD_DIR := $(ANDROID_BUILD_TOP)/vendor/qcom/opensource/wlan
+else
WLAN_BLD_DIR := vendor/qcom/opensource/wlan
+endif
else
WLAN_BLD_DIR := device/qcom/msm8909w/opensource/wlan
endif
@@ -115,7 +119,17 @@
###########################################################
# This is set once per LOCAL_PATH, not per (kernel) module
+
+ifneq ($(TARGET_SUPPORTS_WEARABLES),true)
+ifneq ($(ANDROID_BUILD_TOP),)
+KBUILD_OPTIONS := WLAN_ROOT=$(WLAN_BLD_DIR)/prima
+endif
+endif
+
+ifeq ($(KBUILD_OPTIONS),)
KBUILD_OPTIONS := WLAN_ROOT=$(KERNEL_TO_BUILD_ROOT_OFFSET)$(WLAN_BLD_DIR)/prima
+endif
+
# We are actually building wlan.ko here, as per the
# requirement we are specifying <chipset>_wlan.ko as LOCAL_MODULE.
# This means we need to rename the module to <chipset>_wlan.ko
@@ -125,8 +139,13 @@
KBUILD_OPTIONS += $(WLAN_SELECT)
+ifeq ($(KERNEL_TO_BUILD_ROOT_OFFSET),../../)
+VERSION=$(shell grep -w "VERSION =" $(TOP)/kernel/msm-$(TARGET_KERNEL_VERSION)/Makefile | sed 's/^VERSION = //' )
+PATCHLEVEL=$(shell grep -w "PATCHLEVEL =" $(TOP)/kernel/msm-$(TARGET_KERNEL_VERSION)/Makefile | sed 's/^PATCHLEVEL = //' )
+else
VERSION=$(shell grep -w "VERSION =" $(TOP)/kernel/Makefile | sed 's/^VERSION = //' )
PATCHLEVEL=$(shell grep -w "PATCHLEVEL =" $(TOP)/kernel/Makefile | sed 's/^PATCHLEVEL = //' )
+endif
include $(CLEAR_VARS)
LOCAL_MODULE := $(WLAN_CHIPSET)_wlan.ko
diff --git a/CORE/HDD/inc/bap_hdd_misc.h b/CORE/HDD/inc/bap_hdd_misc.h
index b373760..4ac93b6 100644
--- a/CORE/HDD/inc/bap_hdd_misc.h
+++ b/CORE/HDD/inc/bap_hdd_misc.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2013, 2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -28,6 +28,8 @@
#if !defined( BAP_HDD_MISC_H )
#define BAP_HDD_MISC_H
+#ifdef WLAN_BTAMP_FEATURE
+
/**===========================================================================
\file BAP_HDD_MISC.h
@@ -136,4 +138,5 @@
--------------------------------------------------------------------------*/
v_BOOL_t WLANBAP_AmpSessionOn(void);
+#endif
#endif // end #if !defined( BAP_HDD_MISC_H )
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h
index b7312b9..0d0f71b 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg80211.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h
@@ -105,6 +105,12 @@
#define CHANNEL_SWITCH_SUPPORTED
#endif
+#if defined(CFG80211_DEL_STA_V2) || \
+ (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) || \
+ defined(WITH_BACKPORTS)
+#define USE_CFG80211_DEL_STA_V2
+#endif
+
#define MAX_CHANNEL NUM_2_4GHZ_CHANNELS + NUM_5GHZ_CHANNELS
#define IS_CHANNEL_VALID(channel) ((channel >= 0 && channel < 15) \
@@ -1643,7 +1649,9 @@
void *pMsg, tANI_U32 evLen);
#endif /* FEATURE_OEM_DATA_SUPPORT */
-#if !(defined (SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC))
+#if !(defined(SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC)) && \
+ (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && \
+ !(defined(WITH_BACKPORTS))
static inline struct sk_buff *
backported_cfg80211_vendor_event_alloc(struct wiphy *wiphy,
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,18,0))
@@ -1702,7 +1710,7 @@
struct cfg80211_bss *wlan_hdd_cfg80211_inform_bss_frame(hdd_adapter_t *pAdapter,
tSirBssDescription *bss_desc);
-#ifdef CFG80211_DEL_STA_V2
+#ifdef USE_CFG80211_DEL_STA_V2
int wlan_hdd_cfg80211_del_station(struct wiphy *wiphy,
struct net_device *dev,
struct station_del_parameters *param);
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index f001f77..3bd74fc 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -54,9 +54,15 @@
#include <wlan_hdd_wmm.h>
#include <wlan_hdd_cfg.h>
#include <linux/spinlock.h>
-#ifdef WLAN_OPEN_SOURCE
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+#include <linux/device.h>
+#include <linux/pm_wakeup.h>
+#else
#include <linux/wakelock.h>
#endif
+
#include <wlan_hdd_ftm.h>
#ifdef FEATURE_WLAN_TDLS
#include "wlan_hdd_tdls.h"
@@ -72,6 +78,17 @@
#define LIBRA_CARD_INSERT_DETECT_MAX_COUNT 5
#define LIBRA_CARD_REMOVE_DETECT_MAX_COUNT 5
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)) || \
+ defined(CFG80211_REMOVE_IEEE80211_BACKPORT)
+#define HDD_NL80211_BAND_2GHZ NL80211_BAND_2GHZ
+#define HDD_NL80211_BAND_5GHZ NL80211_BAND_5GHZ
+#define HDD_NUM_NL80211_BANDS NUM_NL80211_BANDS
+#else
+#define HDD_NL80211_BAND_2GHZ IEEE80211_BAND_2GHZ
+#define HDD_NL80211_BAND_5GHZ IEEE80211_BAND_5GHZ
+#define HDD_NUM_NL80211_BANDS ((enum nl80211_band)IEEE80211_NUM_BANDS)
+#endif
+
/** Number of Tx Queues. This should be same as the one
* used in TL WLANTL_NUM_TX_QUEUES */
#define NUM_TX_QUEUES 5
@@ -2294,4 +2311,18 @@
*/
bool hdd_is_sta_sap_scc_allowed_on_dfs_chan(hdd_context_t *hdd_ctx);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0))
+static inline int
+hdd_wlan_nla_put_u64(struct sk_buff *skb, int attrtype, u64 value)
+{
+ return nla_put_u64(skb, attrtype, value);
+}
+#else
+static inline int
+hdd_wlan_nla_put_u64(struct sk_buff *skb, int attrtype, u64 value)
+{
+ return nla_put_u64_64bit(skb, attrtype, value, NL80211_ATTR_PAD);
+}
+#endif
+
#endif // end #if !defined( WLAN_HDD_MAIN_H )
diff --git a/CORE/HDD/inc/wlan_hdd_p2p.h b/CORE/HDD/inc/wlan_hdd_p2p.h
index 4e733f0..fef8e10 100644
--- a/CORE/HDD/inc/wlan_hdd_p2p.h
+++ b/CORE/HDD/inc/wlan_hdd_p2p.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2013, 2017-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -172,24 +172,66 @@
const u8 *buf, size_t len, u64 *cookie );
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+struct wireless_dev *wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ unsigned char name_assign_type,
+ enum nl80211_iftype type,
+ struct vif_params *params);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-struct wireless_dev* wlan_hdd_add_virtual_intf(
- struct wiphy *wiphy, const char *name,
- enum nl80211_iftype type,
- u32 *flags, struct vif_params *params );
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) || \
+ defined(WITH_BACKPORTS)
+/**
+ * wlan_hdd_add_virtual_intf() - Add virtual interface wrapper
+ * @wiphy: wiphy pointer
+ * @name: User-visible name of the interface
+ * @name_assign_type: the name of assign type of the netdev
+ * @nl80211_iftype: (virtual) interface types
+ * @flags: monitor mode configuration flags (not used)
+ * @vif_params: virtual interface parameters (not used)
+ *
+ * Return: the pointer of wireless dev, otherwise ERR_PTR.
+ */
+struct wireless_dev *wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ unsigned char name_assign_type,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params);
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+/**
+ * wlan_hdd_add_virtual_intf() - Add virtual interface wrapper
+ * @wiphy: wiphy pointer
+ * @name: User-visible name of the interface
+ * @nl80211_iftype: (virtual) interface types
+ * @flags: monitor mode configuration flags (not used)
+ * @vif_params: virtual interface parameters (not used)
+ *
+ * Return: the pointer of wireless dev, otherwise ERR_PTR.
+ */
+struct wireless_dev *wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params);
+
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
struct wireless_dev* wlan_hdd_add_virtual_intf(
struct wiphy *wiphy, char *name, enum nl80211_iftype type,
u32 *flags, struct vif_params *params );
+
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-struct net_device* wlan_hdd_add_virtual_intf(
- struct wiphy *wiphy, char *name, enum nl80211_iftype type,
- u32 *flags, struct vif_params *params );
+struct net_device* wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ char *name,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params);
+
#else
-int wlan_hdd_add_virtual_intf( struct wiphy *wiphy, char *name,
- enum nl80211_iftype type,
- u32 *flags, struct vif_params *params );
+int wlan_hdd_add_virtual_intf(struct wiphy *wiphy, char *name,
+ enum nl80211_iftype type,
+ u32 *flags, struct vif_params *params);
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
diff --git a/CORE/HDD/inc/wlan_hdd_tx_rx.h b/CORE/HDD/inc/wlan_hdd_tx_rx.h
index 06c5acc..052149b 100644
--- a/CORE/HDD/inc/wlan_hdd_tx_rx.h
+++ b/CORE/HDD/inc/wlan_hdd_tx_rx.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2015, 2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2015, 2017-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -410,4 +410,25 @@
*/
void hdd_rx_fwd_eapol(v_VOID_t *vosContext, vos_pkt_t *pVosPacket);
+/*
+ * As of the 4.7 kernel, net_device->trans_start is removed. Create shims to
+ * support compiling against older versions of the kernel.
+ */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0))
+static inline void netif_trans_update(struct net_device *dev)
+{
+ dev->trans_start = jiffies;
+}
+
+#define TX_TIMEOUT_TRACE(dev, module_id) VOS_TRACE( \
+ module_id, VOS_TRACE_LEVEL_ERROR, \
+ "%s: Transmission timeout occurred jiffies %lu trans_start %lu", \
+ __func__, jiffies, dev->trans_start)
+#else
+#define TX_TIMEOUT_TRACE(dev, module_id) VOS_TRACE( \
+ module_id, VOS_TRACE_LEVEL_ERROR, \
+ "%s: Transmission timeout occurred jiffies %lu", \
+ __func__, jiffies)
+#endif
+
#endif // end #if !defined( WLAN_HDD_TX_RX_H )
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 9c84d84..94e773d 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -68,6 +68,57 @@
#include <wlan_hdd_wext.h>
#include "sapInternal.h"
+#if defined CFG80211_ROAMED_API_UNIFIED || \
+ (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0))
+/**
+ * hdd_send_roamed_ind() - send roamed indication to cfg80211
+ * @dev: network device
+ * @bss: cfg80211 roamed bss pointer
+ * @req_ie: IEs used in reassociation request
+ * @req_ie_len: Length of the @req_ie
+ * @resp_ie: IEs received in successful reassociation response
+ * @resp_ie_len: Length of @resp_ie
+ *
+ * Return: none
+ */
+static void hdd_send_roamed_ind(struct net_device *dev,
+ struct cfg80211_bss *bss, const uint8_t *req_ie,
+ size_t req_ie_len, const uint8_t *resp_ie,
+ size_t resp_ie_len)
+{
+ struct cfg80211_roam_info info = {0};
+
+ info.bss = bss;
+ info.req_ie = req_ie;
+ info.req_ie_len = req_ie_len;
+ info.resp_ie = resp_ie;
+ info.resp_ie_len = resp_ie_len;
+
+ cfg80211_roamed(dev, &info, GFP_KERNEL);
+}
+#else
+/**
+ * hdd_send_roamed_ind() - send roamed indication to cfg80211
+ * @dev: network device
+ * @bss: cfg80211 roamed bss pointer
+ * @req_ie: IEs used in reassociation request
+ * @req_ie_len: Length of the @req_ie
+ * @resp_ie: IEs received in successful reassociation response
+ * @resp_ie_len: Length of @resp_ie
+ *
+ * Return: none
+ */
+static inline void hdd_send_roamed_ind(struct net_device *dev,
+ struct cfg80211_bss *bss,
+ const uint8_t *req_ie, size_t req_ie_len,
+ const uint8_t *resp_ie,
+ size_t resp_ie_len)
+{
+ cfg80211_roamed_bss(dev, bss, req_ie, req_ie_len, resp_ie, resp_ie_len,
+ GFP_KERNEL);
+}
+#endif
+
v_BOOL_t mibIsDot11DesiredBssTypeInfrastructure( hdd_adapter_t *pAdapter );
struct ether_addr
@@ -2127,9 +2178,9 @@
chan, pCsrRoamInfo->bssid,
&roam_profile.SSID.ssId[0],
roam_profile.SSID.length);
- cfg80211_roamed_bss(dev, bss,
+ hdd_send_roamed_ind(dev, bss,
reqRsnIe, reqRsnLength,
- rspRsnIe, rspRsnLength,GFP_KERNEL);
+ rspRsnIe, rspRsnLength);
done:
kfree(rspRsnIe);
@@ -2418,10 +2469,9 @@
chan, pRoamInfo->bssid,
pRoamInfo->u.pConnectedProfile->SSID.ssId,
pRoamInfo->u.pConnectedProfile->SSID.length);
- cfg80211_roamed_bss(dev, roam_bss,
+ hdd_send_roamed_ind(dev, roam_bss,
pFTAssocReq, assocReqlen,
- pFTAssocRsp, assocRsplen,
- GFP_KERNEL);
+ pFTAssocRsp, assocRsplen);
}
if (sme_GetFTPTKState(WLAN_HDD_GET_HAL_CTX(pAdapter)))
{
@@ -2843,10 +2893,10 @@
if (chan_no <= 14)
freq = ieee80211_channel_to_frequency(chan_no,
- IEEE80211_BAND_2GHZ);
+ HDD_NL80211_BAND_2GHZ);
else
freq = ieee80211_channel_to_frequency(chan_no,
- IEEE80211_BAND_5GHZ);
+ HDD_NL80211_BAND_5GHZ);
chan = ieee80211_get_channel(pAdapter->wdev.wiphy, freq);
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index dd14f10..a3ef194 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -63,6 +63,7 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/wireless.h>
+#include <linux/etherdevice.h>
#include <wlan_hdd_includes.h>
#include <net/arp.h>
#include <net/cfg80211.h>
@@ -110,7 +111,7 @@
((uintptr_t)OFFSET_OF( tSirBssDescription, ieFields)))
#define HDD2GHZCHAN(freq, chan, flag) { \
- .band = IEEE80211_BAND_2GHZ, \
+ .band = HDD_NL80211_BAND_2GHZ, \
.center_freq = (freq), \
.hw_value = (chan),\
.flags = (flag), \
@@ -119,7 +120,7 @@
}
#define HDD5GHZCHAN(freq, chan, flag) { \
- .band = IEEE80211_BAND_5GHZ, \
+ .band = HDD_NL80211_BAND_5GHZ, \
.center_freq = (freq), \
.hw_value = (chan),\
.flags = (flag), \
@@ -208,12 +209,6 @@
#endif
};
-static inline int is_broadcast_ether_addr(const u8 *addr)
-{
- return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) &&
- (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
-}
-
const static struct ieee80211_channel hdd_channels_2_4_GHZ[] =
{
HDD2GHZCHAN(2412, 1, 0) ,
@@ -302,7 +297,7 @@
{
.channels = NULL,
.n_channels = ARRAY_SIZE(hdd_channels_2_4_GHZ),
- .band = IEEE80211_BAND_2GHZ,
+ .band = HDD_NL80211_BAND_2GHZ,
.bitrates = g_mode_rates,
.n_bitrates = g_mode_rates_size,
.ht_cap.ht_supported = 1,
@@ -321,7 +316,7 @@
{
.channels = NULL,
.n_channels = ARRAY_SIZE(hdd_channels_5_GHZ),
- .band = IEEE80211_BAND_5GHZ,
+ .band = HDD_NL80211_BAND_5GHZ,
.bitrates = a_mode_rates,
.n_bitrates = a_mode_rates_size,
.ht_cap.ht_supported = 1,
@@ -2072,7 +2067,7 @@
nla_put_u32(vendor_event,
QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_GUARD_TIME,
pWifiIfaceStat->leakyApStat.rx_leak_window) ||
- nla_put_u64(vendor_event,
+ hdd_wlan_nla_put_u64(vendor_event,
QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_AVERAGE_TSF_OFFSET,
pWifiIfaceStat->leakyApStat.avg_bcn_spread))
{
@@ -3660,7 +3655,7 @@
goto fail;
}
- if (nla_put_u64(skb,
+ if (hdd_wlan_nla_put_u64(skb,
QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_TIME_STAMP,
pSirWifiScanResult->ts) )
{
@@ -3853,7 +3848,7 @@
if (!ap)
goto fail;
- if (nla_put_u64(skb,
+ if (hdd_wlan_nla_put_u64(skb,
QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_TIME_STAMP,
pData->bssHotlist[i].ts) ||
nla_put(skb,
@@ -3966,7 +3961,7 @@
hddLog(VOS_TRACE_LEVEL_INFO, "IE Length (%u)", pData->ieLength);
if (nla_put_u32(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_REQUEST_ID,
pData->requestId) ||
- nla_put_u64(skb,
+ hdd_wlan_nla_put_u64(skb,
QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_TIME_STAMP,
pData->ap.ts) ||
nla_put(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_SSID,
@@ -4687,7 +4682,7 @@
{
num_chan_new = 0;
for (i = 0; i < num_channels; i++)
- for (j = 0; j < IEEE80211_NUM_BANDS; j++) {
+ for (j = 0; j < HDD_NUM_NL80211_BANDS; j++) {
if (wiphy->bands[j] == NULL)
continue;
for (k = 0; k < wiphy->bands[j]->n_channels; k++) {
@@ -7645,16 +7640,25 @@
if (!(rate_flags & eHAL_TX_RATE_LEGACY)) {
if (rate_flags & eHAL_TX_RATE_VHT80) {
final_rate_flags |= RATE_INFO_FLAGS_VHT_MCS;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS)
final_rate_flags |= RATE_INFO_FLAGS_80_MHZ_WIDTH;
+#endif
} else if (rate_flags & eHAL_TX_RATE_VHT40) {
final_rate_flags |= RATE_INFO_FLAGS_VHT_MCS;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS)
final_rate_flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
+#endif
} else if (rate_flags & eHAL_TX_RATE_VHT20) {
final_rate_flags |= RATE_INFO_FLAGS_VHT_MCS;
} else if (rate_flags & (eHAL_TX_RATE_HT20 | eHAL_TX_RATE_HT40)) {
final_rate_flags |= RATE_INFO_FLAGS_MCS;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS)
if (rate_flags & eHAL_TX_RATE_HT40)
final_rate_flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
+#endif
}
if (rate_flags & eHAL_TX_RATE_SGI) {
@@ -8815,7 +8819,7 @@
ENTER();
- for (i = 0; i < IEEE80211_NUM_BANDS; i++)
+ for (i = 0; i < HDD_NUM_NL80211_BANDS; i++)
{
if (NULL == wiphy->bands[i])
@@ -8832,12 +8836,12 @@
channelEnabledState = vos_nv_getChannelEnabledState(
band->channels[j].hw_value);
- if (IEEE80211_BAND_2GHZ == i && eCSR_BAND_5G == eBand) // 5G only
+ if (HDD_NL80211_BAND_2GHZ == i && eCSR_BAND_5G == eBand) // 5G only
{
band->channels[j].flags |= IEEE80211_CHAN_DISABLED;
continue;
}
- else if (IEEE80211_BAND_5GHZ == i && eCSR_BAND_24 == eBand) // 2G only
+ else if (HDD_NL80211_BAND_5GHZ == i && eCSR_BAND_24 == eBand) // 2G only
{
band->channels[j].flags |= IEEE80211_CHAN_DISABLED;
continue;
@@ -9013,38 +9017,38 @@
* wiphy flags don't get reset because of static memory.
* It's better not to store channel in static memory.
*/
- wiphy->bands[IEEE80211_BAND_2GHZ] = &wlan_hdd_band_2_4_GHZ;
- wiphy->bands[IEEE80211_BAND_2GHZ]->channels =
+ wiphy->bands[HDD_NL80211_BAND_2GHZ] = &wlan_hdd_band_2_4_GHZ;
+ wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels =
(struct ieee80211_channel *)vos_mem_malloc(sizeof(hdd_channels_2_4_GHZ));
- if (wiphy->bands[IEEE80211_BAND_2GHZ]->channels == NULL)
+ if (wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels == NULL)
{
hddLog(VOS_TRACE_LEVEL_ERROR,
FL("Not enough memory to allocate channels"));
return -ENOMEM;
}
- vos_mem_copy(wiphy->bands[IEEE80211_BAND_2GHZ]->channels,
+ vos_mem_copy(wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels,
&hdd_channels_2_4_GHZ[0],
sizeof(hdd_channels_2_4_GHZ));
if (true == hdd_is_5g_supported(pHddCtx))
{
- wiphy->bands[IEEE80211_BAND_5GHZ] = &wlan_hdd_band_5_GHZ;
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels =
+ wiphy->bands[HDD_NL80211_BAND_5GHZ] = &wlan_hdd_band_5_GHZ;
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels =
(struct ieee80211_channel *)vos_mem_malloc(sizeof(hdd_channels_5_GHZ));
- if (wiphy->bands[IEEE80211_BAND_5GHZ]->channels == NULL)
+ if (wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels == NULL)
{
hddLog(VOS_TRACE_LEVEL_ERROR,
FL("Not enough memory to allocate channels"));
- vos_mem_free(wiphy->bands[IEEE80211_BAND_2GHZ]->channels);
- wiphy->bands[IEEE80211_BAND_2GHZ]->channels = NULL;
+ vos_mem_free(wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels);
+ wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels = NULL;
return -ENOMEM;
}
- vos_mem_copy(wiphy->bands[IEEE80211_BAND_5GHZ]->channels,
+ vos_mem_copy(wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels,
&hdd_channels_5_GHZ[0],
sizeof(hdd_channels_5_GHZ));
}
- for (i = 0; i < IEEE80211_NUM_BANDS; i++)
+ for (i = 0; i < HDD_NUM_NL80211_BANDS; i++)
{
if (NULL == wiphy->bands[i])
@@ -9058,7 +9062,7 @@
{
struct ieee80211_supported_band *band = wiphy->bands[i];
- if (IEEE80211_BAND_2GHZ == i && eCSR_BAND_5G == pCfg->nBandCapability) // 5G only
+ if (HDD_NL80211_BAND_2GHZ == i && eCSR_BAND_5G == pCfg->nBandCapability) // 5G only
{
// Enable social channels for P2P
if (WLAN_HDD_IS_SOCIAL_CHANNEL(band->channels[j].center_freq))
@@ -9067,7 +9071,7 @@
band->channels[j].flags |= IEEE80211_CHAN_DISABLED;
continue;
}
- else if (IEEE80211_BAND_5GHZ == i && eCSR_BAND_24 == pCfg->nBandCapability) // 2G only
+ else if (HDD_NL80211_BAND_5GHZ == i && eCSR_BAND_24 == pCfg->nBandCapability) // 2G only
{
band->channels[j].flags |= IEEE80211_CHAN_DISABLED;
continue;
@@ -9130,14 +9134,14 @@
}
if ((defaultCountryCode[0]== 'U') && (defaultCountryCode[1]=='S'))
{
- if (NULL == wiphy->bands[IEEE80211_BAND_5GHZ])
+ if (NULL == wiphy->bands[HDD_NL80211_BAND_5GHZ])
{
- hddLog(VOS_TRACE_LEVEL_ERROR,"%s: wiphy->bands[IEEE80211_BAND_5GHZ] is NULL",__func__ );
+ hddLog(VOS_TRACE_LEVEL_ERROR,"%s: wiphy->bands[HDD_NL80211_BAND_5GHZ] is NULL",__func__ );
return;
}
- for (j = 0; j < wiphy->bands[IEEE80211_BAND_5GHZ]->n_channels; j++)
+ for (j = 0; j < wiphy->bands[HDD_NL80211_BAND_5GHZ]->n_channels; j++)
{
- struct ieee80211_supported_band *band = wiphy->bands[IEEE80211_BAND_5GHZ];
+ struct ieee80211_supported_band *band = wiphy->bands[HDD_NL80211_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;
@@ -9959,12 +9963,12 @@
if (channel <= ARRAY_SIZE(hdd_channels_2_4_GHZ))
{
freq = ieee80211_channel_to_frequency(channel,
- IEEE80211_BAND_2GHZ);
+ HDD_NL80211_BAND_2GHZ);
}
else
{
freq = ieee80211_channel_to_frequency(channel,
- IEEE80211_BAND_5GHZ);
+ HDD_NL80211_BAND_5GHZ);
}
#else
freq = ieee80211_channel_to_frequency(channel);
@@ -10323,7 +10327,7 @@
hddLog(VOS_TRACE_LEVEL_INFO, "disable: %d", disable);
wiphy = hdd_ctx->wiphy;
- for (band_num = 0; band_num < IEEE80211_NUM_BANDS; band_num++) {
+ for (band_num = 0; band_num < HDD_NUM_NL80211_BANDS; band_num++) {
if (wiphy->bands[band_num] == NULL)
continue;
@@ -13465,11 +13469,11 @@
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
if (chan_no <= ARRAY_SIZE(hdd_channels_2_4_GHZ))
{
- freq = ieee80211_channel_to_frequency(chan_no, IEEE80211_BAND_2GHZ);
+ freq = ieee80211_channel_to_frequency(chan_no, HDD_NL80211_BAND_2GHZ);
}
else
{
- freq = ieee80211_channel_to_frequency(chan_no, IEEE80211_BAND_5GHZ);
+ freq = ieee80211_channel_to_frequency(chan_no, HDD_NL80211_BAND_5GHZ);
}
#else
freq = ieee80211_channel_to_frequency(chan_no);
@@ -13635,15 +13639,15 @@
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
if (chan_no <= ARRAY_SIZE(hdd_channels_2_4_GHZ) &&
- (wiphy->bands[IEEE80211_BAND_2GHZ] != NULL))
+ (wiphy->bands[HDD_NL80211_BAND_2GHZ] != NULL))
{
- freq = ieee80211_channel_to_frequency(chan_no, IEEE80211_BAND_2GHZ);
+ freq = ieee80211_channel_to_frequency(chan_no, HDD_NL80211_BAND_2GHZ);
}
else if ((chan_no > ARRAY_SIZE(hdd_channels_2_4_GHZ)) &&
- (wiphy->bands[IEEE80211_BAND_5GHZ] != NULL))
+ (wiphy->bands[HDD_NL80211_BAND_5GHZ] != NULL))
{
- freq = ieee80211_channel_to_frequency(chan_no, IEEE80211_BAND_5GHZ);
+ freq = ieee80211_channel_to_frequency(chan_no, HDD_NL80211_BAND_5GHZ);
}
else
{
@@ -14060,6 +14064,71 @@
}
#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
+/**
+ * hdd_cfg80211_scan_done() - Scan completed callback to cfg80211
+ * @adapter: Pointer to the adapter
+ * @req : Scan request
+ * @aborted : true scan aborted false scan success
+ *
+ * This function notifies scan done to cfg80211
+ *
+ * Return: none
+ */
+static void hdd_cfg80211_scan_done(hdd_adapter_t *adapter,
+ struct cfg80211_scan_request *req,
+ bool aborted)
+{
+ struct cfg80211_scan_info info = {
+ .aborted = aborted
+ };
+
+ if (adapter->dev->flags & IFF_UP)
+ cfg80211_scan_done(req, &info);
+ else
+ hddLog(LOGW,
+ FL("IFF_UP flag reset for %s"), adapter->dev->name);
+}
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+/**
+ * hdd_cfg80211_scan_done() - Scan completed callback to cfg80211
+ * @adapter: Pointer to the adapter
+ * @req : Scan request
+ * @aborted : true scan aborted false scan success
+ *
+ * This function notifies scan done to cfg80211
+ *
+ * Return: none
+ */
+static void hdd_cfg80211_scan_done(hdd_adapter_t *adapter,
+ struct cfg80211_scan_request *req,
+ bool aborted)
+{
+ if (adapter->dev->flags & IFF_UP)
+ cfg80211_scan_done(req, aborted);
+ else
+ hddLog(LOGW,
+ FL("IFF_UP flag reset for %s"), adapter->dev->name);
+}
+#else
+/**
+ * hdd_cfg80211_scan_done() - Scan completed callback to cfg80211
+ * @adapter: Pointer to the adapter
+ * @req : Scan request
+ * @aborted : true scan aborted false scan success
+ *
+ * This function notifies scan done to cfg80211
+ *
+ * Return: none
+ */
+static void hdd_cfg80211_scan_done(hdd_adapter_t *adapter,
+ struct cfg80211_scan_request *req,
+ bool aborted)
+{
+ cfg80211_scan_done(req, aborted);
+}
+#endif
+
#define NET_DEV_IS_IFF_UP(pAdapter) (pAdapter->dev->flags & IFF_UP)
/*
* FUNCTION: hdd_cfg80211_scan_done_callback
@@ -14227,7 +14296,7 @@
if (NET_DEV_IS_IFF_UP(pAdapter) &&
wlan_hdd_cfg80211_validate_scan_req(req, pHddCtx))
#endif
- cfg80211_scan_done(req, aborted);
+ hdd_cfg80211_scan_done(pAdapter, req, aborted);
complete(&pScanInfo->abortscan_event_var);
@@ -14727,7 +14796,7 @@
if (0 > ret)
hddLog(VOS_TRACE_LEVEL_INFO, "%s: NO SCAN result", __func__);
- cfg80211_scan_done(request, eCSR_SCAN_SUCCESS);
+ hdd_cfg80211_scan_done(pAdapter, request, eCSR_SCAN_SUCCESS);
status = eHAL_STATUS_SUCCESS;
goto free_mem;
@@ -17346,10 +17415,18 @@
info->tx_failed += stats->fail_cnt[i];
}
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS)
info->filled |= STATION_INFO_TX_PACKETS |
STATION_INFO_TX_RETRIES |
STATION_INFO_TX_FAILED |
STATION_INFO_RX_PACKETS;
+#else
+ info->filled |= BIT(NL80211_STA_INFO_TX_PACKETS) |
+ BIT(NL80211_STA_INFO_TX_RETRIES) |
+ BIT(NL80211_STA_INFO_TX_FAILED) |
+ BIT(NL80211_STA_INFO_RX_PACKETS);
+#endif
}
/**
@@ -17368,6 +17445,21 @@
WLANTL_GetSAPStaRSSi(pVosContext, staid, rssi);
}
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS)
+static inline void wlan_hdd_fill_station_info_signal(struct station_info
+ *sinfo)
+{
+ sinfo->filled |= STATION_INFO_SIGNAL;
+}
+#else
+static inline void wlan_hdd_fill_station_info_signal(struct station_info
+ *sinfo)
+{
+ sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
+}
+#endif
+
/**
* wlan_hdd_get_sap_stats() - get aggregate SAP stats
* @adapter: sap adapter to get stats for
@@ -17408,7 +17500,7 @@
if (staid < WLAN_MAX_STA_COUNT && !bc_mac_addr) {
wlan_hdd_sap_get_sta_rssi(adapter, staid, &info->signal);
- info->filled |= STATION_INFO_SIGNAL;
+ wlan_hdd_fill_station_info_signal(info);
}
wlan_hdd_fill_summary_stats(&adapter->hdd_stats.summary_stat, info);
@@ -17490,7 +17582,7 @@
wlan_hdd_get_snr(pAdapter, &snr);
pHddStaCtx->conn_info.signal = sinfo->signal;
pHddStaCtx->conn_info.noise = pHddStaCtx->conn_info.signal - snr;
- sinfo->filled |= STATION_INFO_SIGNAL;
+ wlan_hdd_fill_station_info_signal(sinfo);
/*overwrite rate_flags if MAX link-speed need to be reported*/
if ((eHDD_LINK_SPEED_REPORT_MAX == pCfg->reportMaxLinkSpeed) ||
@@ -17770,12 +17862,22 @@
if (rate_flags & eHAL_TX_RATE_VHT80)
{
sinfo->txrate.flags |= RATE_INFO_FLAGS_VHT_MCS;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) || \
+ defined(WITH_BACKPORTS)
+ sinfo->txrate.bw = RATE_INFO_BW_80;
+#else
sinfo->txrate.flags |= RATE_INFO_FLAGS_80_MHZ_WIDTH;
+#endif
}
else if (rate_flags & eHAL_TX_RATE_VHT40)
{
sinfo->txrate.flags |= RATE_INFO_FLAGS_VHT_MCS;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) || \
+ defined(WITH_BACKPORTS)
+ sinfo->txrate.bw = RATE_INFO_BW_40;
+#else
sinfo->txrate.flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
+#endif
}
else if (rate_flags & eHAL_TX_RATE_VHT20)
{
@@ -17787,7 +17889,12 @@
sinfo->txrate.flags |= RATE_INFO_FLAGS_MCS;
if (rate_flags & eHAL_TX_RATE_HT40)
{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) || \
+ defined(WITH_BACKPORTS)
+ sinfo->txrate.bw = RATE_INFO_BW_40;
+#else
sinfo->txrate.flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
+#endif
}
}
if (rate_flags & eHAL_TX_RATE_SGI)
@@ -17835,12 +17942,22 @@
}
if (rate_flags & eHAL_TX_RATE_HT40)
{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) || \
+ defined(WITH_BACKPORTS)
+ sinfo->txrate.bw = RATE_INFO_BW_40;
+#else
sinfo->txrate.flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
+#endif
}
#ifdef WLAN_FEATURE_11AC
else if (rate_flags & eHAL_TX_RATE_VHT80)
{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) || \
+ defined(WITH_BACKPORTS)
+ sinfo->txrate.bw = RATE_INFO_BW_80;
+#else
sinfo->txrate.flags |= RATE_INFO_FLAGS_80_MHZ_WIDTH;
+#endif
}
#endif /* WLAN_FEATURE_11AC */
#ifdef LINKSPEED_DEBUG_ENABLED
@@ -17850,7 +17967,13 @@
#endif //LINKSPEED_DEBUG_ENABLED
}
}
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS)
sinfo->filled |= STATION_INFO_TX_BITRATE;
+#else
+ sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
+#endif
sinfo->tx_packets =
pAdapter->hdd_stats.summary_stat.tx_frm_cnt[0] +
@@ -17870,13 +17993,21 @@
pAdapter->hdd_stats.summary_stat.fail_cnt[2] +
pAdapter->hdd_stats.summary_stat.fail_cnt[3];
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS)
sinfo->filled |=
+ STATION_INFO_RX_PACKETS |
STATION_INFO_TX_PACKETS |
STATION_INFO_TX_RETRIES |
STATION_INFO_TX_FAILED;
+#else
+ sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS) |
+ BIT(NL80211_STA_INFO_TX_PACKETS) |
+ BIT(NL80211_STA_INFO_TX_RETRIES) |
+ BIT(NL80211_STA_INFO_TX_FAILED);
+#endif
sinfo->rx_packets = pAdapter->hdd_stats.summary_stat.rx_frm_cnt;
- sinfo->filled |= STATION_INFO_RX_PACKETS;
vos_mem_copy(&pHddStaCtx->conn_info.txrate,
&sinfo->txrate, sizeof(sinfo->txrate));
@@ -18171,7 +18302,7 @@
return 0;
}
-#ifdef CFG80211_DEL_STA_V2
+#ifdef USE_CFG80211_DEL_STA_V2
int wlan_hdd_cfg80211_del_station(struct wiphy *wiphy,
struct net_device *dev,
struct station_del_parameters *param)
@@ -18190,7 +18321,7 @@
vos_ssr_protect(__func__);
-#ifdef CFG80211_DEL_STA_V2
+#ifdef USE_CFG80211_DEL_STA_V2
if (NULL == param) {
hddLog(VOS_TRACE_LEVEL_ERROR, "%s: Invalid argumet passed", __func__);
vos_ssr_unprotect(__func__);
@@ -19201,7 +19332,8 @@
u16 status_code, u32 peer_capability,
const u8 *buf, size_t len)
#else /* TDLS_MGMT_VERSION2 */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)) || defined(WITH_BACKPORTS)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)) || \
+ defined(WITH_BACKPORTS)
static int __wlan_hdd_cfg80211_tdls_mgmt(struct wiphy *wiphy,
struct net_device *dev,
const u8 *peer, u8 action_code,
@@ -19616,7 +19748,8 @@
dialog_token, status_code,
peer_capability, buf, len);
#else /* TDLS_MGMT_VERSION2 */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)) || defined(WITH_BACKPORTS)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)) || \
+ defined(WITH_BACKPORTS)
ret = __wlan_hdd_cfg80211_tdls_mgmt(wiphy, dev, peer, action_code,
dialog_token, status_code,
peer_capability, initiator,
@@ -21050,7 +21183,7 @@
hdd_wlan_get_freq(channel, &freq);
- for (i = 0; i < IEEE80211_NUM_BANDS; i++)
+ for (i = 0; i < HDD_NUM_NL80211_BANDS; i++)
{
if (NULL == wiphy->bands[i])
{
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 6057705..375adab 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -43,7 +43,14 @@
#include <linux/wait.h>
#include <wlan_hdd_includes.h>
#include <wlan_qct_driver.h>
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+#include <linux/device.h>
+#include <linux/pm_wakeup.h>
+#else
#include <linux/wakelock.h>
+#endif
#include "halTypes.h"
#include "sme_Api.h"
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index 0806e67..faa0fe6 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -1383,7 +1383,7 @@
hddLog(LOGE, FL("Failed to start AP inactivity timer"));
}
#ifdef WLAN_OPEN_SOURCE
- if (wake_lock_active(&pHddCtx->sap_wake_lock))
+ if (vos_wake_lock_active(&pHddCtx->sap_wake_lock))
{
vos_wake_lock_release(&pHddCtx->sap_wake_lock,
WIFI_POWER_EVENT_WAKELOCK_SAP);
@@ -1410,7 +1410,9 @@
staInfo->assoc_req_ies =
(const u8 *)&pSapEvent->sapevt.sapStationAssocReassocCompleteEvent.ies[0];
staInfo->assoc_req_ies_len = iesLen;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,31))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,31)) && \
+ ((LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \
+ !defined(WITH_BACKPORTS))
staInfo->filled |= STATION_INFO_ASSOC_REQ_IES;
#endif
cfg80211_new_sta(dev,
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 7739afa..46da26c 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -9754,7 +9754,7 @@
hdd_hostapd_state_t *pHostapdState;
VOS_STATUS vos_status;
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(ap_adapter);
-#ifdef CFG80211_DEL_STA_V2
+#ifdef USE_CFG80211_DEL_STA_V2
struct station_del_parameters delStaParams;
#endif
tsap_Config_t *pConfig;
@@ -9764,7 +9764,7 @@
mutex_lock(&pHddCtx->sap_lock);
if (test_bit(SOFTAP_BSS_STARTED, &ap_adapter->event_flags)) {
-#ifdef CFG80211_DEL_STA_V2
+#ifdef USE_CFG80211_DEL_STA_V2
delStaParams.mac = NULL;
delStaParams.subtype = SIR_MAC_MGMT_DEAUTH >> 4;
delStaParams.reason_code = eCsrForcedDeauthSta;
@@ -10182,6 +10182,74 @@
}
#endif
+#if defined(CFG80211_CONNECT_BSS) || \
+ (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) || \
+ defined (CFG80211_CONNECT_TIMEOUT_REASON_CODE)
+/**
+ * hdd_connect_bss() - helper function to send connection status to supplicant
+ * @dev: network device
+ * @bssid: bssid to which we want to associate
+ * @bss: information about connected bss
+ * @req_ie: Request Information Element
+ * @req_ie_len: len of the req IE
+ * @resp_ie: Response IE
+ * @resp_ie_len: len of ht response IE
+ * @status: status
+ * @gfp: Kernel Flag
+ *
+ * This is a helper function to send connection status to supplicant
+ * and gets invoked from wrapper API
+ *
+ * Return: Void
+ */
+static void hdd_connect_bss(struct net_device *dev,
+ const u8 *bssid,
+ struct cfg80211_bss *bss,
+ const u8 *req_ie,
+ size_t req_ie_len,
+ const u8 *resp_ie,
+ size_t resp_ie_len,
+ u16 status,
+ gfp_t gfp)
+{
+ cfg80211_connect_bss(dev, bssid, bss, req_ie, req_ie_len,
+ resp_ie, resp_ie_len, status, gfp, NL80211_TIMEOUT_UNSPECIFIED);
+}
+#else
+/**
+ * hdd_connect_bss() - helper function to send connection status to supplicant
+ * @dev: network device
+ * @bssid: bssid to which we want to associate
+ * @bss: information about connected bss
+ * @req_ie: Request Information Element
+ * @req_ie_len: len of the req IE
+ * @resp_ie: Response IE
+ * @resp_ie_len: len of ht response IE
+ * @status: status
+ * @gfp: Kernel Flag
+ *
+ * This is a helper function to send connection status to supplicant
+ * and gets invoked from wrapper API
+ *
+ * Return: Void
+ */
+static void hdd_connect_bss(struct net_device *dev,
+ const u8 *bssid,
+ struct cfg80211_bss *bss,
+ const u8 *req_ie,
+ size_t req_ie_len,
+ const u8 *resp_ie,
+ size_t resp_ie_len,
+ u16 status,
+ gfp_t gfp)
+{
+ cfg80211_connect_bss(dev, bssid, bss, req_ie, req_ie_len,
+ resp_ie, resp_ie_len, status, gfp);
+}
+#endif
+
/**
* hdd_connect_result() - API to send connection status to supplicant
* @dev: network device
@@ -10198,7 +10266,6 @@
*
* Return: Void
*/
-#if defined CFG80211_CONNECT_BSS
void hdd_connect_result(struct net_device *dev,
const u8 *bssid,
tCsrRoamInfo *roam_info,
@@ -10219,10 +10286,10 @@
if (chan_no <= 14)
freq = ieee80211_channel_to_frequency(chan_no,
- IEEE80211_BAND_2GHZ);
+ HDD_NL80211_BAND_2GHZ);
else
freq = ieee80211_channel_to_frequency(chan_no,
- IEEE80211_BAND_5GHZ);
+ HDD_NL80211_BAND_5GHZ);
chan = ieee80211_get_channel(padapter->wdev.wiphy, freq);
bss = hdd_get_bss_entry(padapter->wdev.wiphy,
@@ -10231,10 +10298,26 @@
roam_info->u.pConnectedProfile->SSID.length);
}
- cfg80211_connect_bss(dev, bssid, bss, req_ie, req_ie_len,
- resp_ie, resp_ie_len, status, gfp);
+ hdd_connect_bss(dev, bssid, bss, req_ie, req_ie_len, resp_ie, resp_ie_len,
+ status, gfp);
}
#else
+/**
+ * hdd_connect_result() - API to send connection status to supplicant
+ * @dev: network device
+ * @bssid: bssid to which we want to associate
+ * @roam_info: information about connected bss
+ * @req_ie: Request Information Element
+ * @req_ie_len: len of the req IE
+ * @resp_ie: Response IE
+ * @resp_ie_len: len of ht response IE
+ * @status: status
+ * @gfp: Kernel Flag
+ *
+ * The API is a wrapper to send connection status to supplicant
+ *
+ * Return: Void
+ */
void hdd_connect_result(struct net_device *dev,
const u8 *bssid,
tCsrRoamInfo *roam_info,
@@ -11115,7 +11198,7 @@
void hdd_wlan_free_wiphy_channels(struct wiphy *wiphy)
{
int i =0;
- for (i = 0; i < IEEE80211_NUM_BANDS; i++)
+ for (i = 0; i < HDD_NUM_NL80211_BANDS; i++)
{
if (NULL != wiphy->bands[i] &&
(NULL != wiphy->bands[i]->channels))
diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c
index eb2d98c..0b47a91 100644
--- a/CORE/HDD/src/wlan_hdd_p2p.c
+++ b/CORE/HDD/src/wlan_hdd_p2p.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -2253,23 +2253,30 @@
return 0;
}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-struct wireless_dev* __wlan_hdd_add_virtual_intf(
- struct wiphy *wiphy, const char *name,
- enum nl80211_iftype type,
- u32 *flags, struct vif_params *params )
-#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
-struct wireless_dev* __wlan_hdd_add_virtual_intf(
- struct wiphy *wiphy, char *name, enum nl80211_iftype type,
- u32 *flags, struct vif_params *params )
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+static struct wireless_dev *
+__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ unsigned char name_assign_type,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params)
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-struct net_device* __wlan_hdd_add_virtual_intf(
- struct wiphy *wiphy, char *name, enum nl80211_iftype type,
- u32 *flags, struct vif_params *params )
+static struct net_device *
+__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ unsigned char name_assign_type,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params)
#else
-int __wlan_hdd_add_virtual_intf( struct wiphy *wiphy, char *name,
- enum nl80211_iftype type,
- u32 *flags, struct vif_params *params )
+static int
+__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ unsigned char name_assign_type,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params)
#endif
{
hdd_context_t *pHddCtx = (hdd_context_t*) wiphy_priv(wiphy);
@@ -2393,48 +2400,130 @@
#endif
}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-struct wireless_dev* wlan_hdd_add_virtual_intf(
- struct wiphy *wiphy, const char *name,
- enum nl80211_iftype type,
- u32 *flags, struct vif_params *params )
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+struct wireless_dev *wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ unsigned char name_assign_type,
+ enum nl80211_iftype type,
+ struct vif_params *params)
+{
+ struct wireless_dev *wdev;
+
+ vos_ssr_protect(__func__);
+ wdev = __wlan_hdd_add_virtual_intf(wiphy, name, name_assign_type,
+ type, ¶ms->flags, params);
+ vos_ssr_unprotect(__func__);
+
+ return wdev;
+}
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) || \
+ defined(WITH_BACKPORTS)
+/**
+ * wlan_hdd_add_virtual_intf() - Add virtual interface wrapper
+ * @wiphy: wiphy pointer
+ * @name: User-visible name of the interface
+ * @name_assign_type: the name of assign type of the netdev
+ * @nl80211_iftype: (virtual) interface types
+ * @flags: monitor mode configuration flags (not used)
+ * @vif_params: virtual interface parameters (not used)
+ *
+ * Return: the pointer of wireless dev, otherwise ERR_PTR.
+ */
+struct wireless_dev *wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ unsigned char name_assign_type,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params)
+{
+ struct wireless_dev *wdev;
+
+ vos_ssr_protect(__func__);
+ wdev = __wlan_hdd_add_virtual_intf(wiphy, name, name_assign_type,
+ type, flags, params);
+ vos_ssr_unprotect(__func__);
+ return wdev;
+
+}
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+/**
+ * wlan_hdd_add_virtual_intf() - Add virtual interface wrapper
+ * @wiphy: wiphy pointer
+ * @name: User-visible name of the interface
+ * @nl80211_iftype: (virtual) interface types
+ * @flags: monitor mode configuration flags (not used)
+ * @vif_params: virtual interface parameters (not used)
+ *
+ * Return: the pointer of wireless dev, otherwise ERR_PTR.
+ */
+struct wireless_dev *wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ const char *name,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params)
+{
+ struct wireless_dev *wdev;
+ unsigned char name_assign_type = 0;
+
+ vos_ssr_protect(__func__);
+ wdev = __wlan_hdd_add_virtual_intf(wiphy, name, name_assign_type,
+ type, flags, params);
+ vos_ssr_unprotect(__func__);
+ return wdev;
+
+}
+
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
struct wireless_dev* wlan_hdd_add_virtual_intf(
struct wiphy *wiphy, char *name, enum nl80211_iftype type,
u32 *flags, struct vif_params *params )
-#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-struct net_device* wlan_hdd_add_virtual_intf(
- struct wiphy *wiphy, char *name, enum nl80211_iftype type,
- u32 *flags, struct vif_params *params )
-#else
-int wlan_hdd_add_virtual_intf( struct wiphy *wiphy, char *name,
- enum nl80211_iftype type,
- u32 *flags, struct vif_params *params )
-#endif
{
-#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)))
- struct wireless_dev* wdev;
-#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
- struct net_device* ndev;
-#else
- int ret;
-#endif
- vos_ssr_protect(__func__);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
- wdev = __wlan_hdd_add_virtual_intf(wiphy, name, type, flags, params);
- vos_ssr_unprotect(__func__);
- return wdev;
-#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
- ndev = __wlan_hdd_add_virtual_intf(wiphy, name, type, flags, params);
- vos_ssr_unprotect(__func__);
- return ndev;
-#else
- ret = __wlan_hdd_add_virtual_intf(wiphy, name, type, flags, params);
- vos_ssr_unprotect(__func__);
- return ret;
-#endif
+ struct wireless_dev *wdev;
+ unsigned char name_assign_type = 0;
+
+ vos_ssr_protect(__func__);
+ wdev = __wlan_hdd_add_virtual_intf(wiphy, (const char *)name,
+ name_assign_type,
+ type, flags, params);
+ vos_ssr_unprotect(__func__);
+ return wdev;
+
}
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
+struct net_device* wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
+ char *name,
+ enum nl80211_iftype type,
+ u32 *flags,
+ struct vif_params *params)
+{
+ struct net_device *ndev;
+ unsigned char name_assign_type = 0;
+
+ vos_ssr_protect(__func__);
+ ndev = __wlan_hdd_add_virtual_intf(wiphy, (const char *)name, name_assign_type,
+ type, flags, params);
+ vos_ssr_unprotect(__func__);
+ return wdev;
+
+}
+#else
+int wlan_hdd_add_virtual_intf(struct wiphy *wiphy, char *name,
+ enum nl80211_iftype type,
+ u32 *flags, struct vif_params *params)
+{
+ int ret;
+ unsigned char name_assign_type = 0;
+
+ vos_ssr_protect(__func__);
+ ret = __wlan_hdd_add_virtual_intf(wiphy, (const char *)name, name_assign_type,
+ type, flags, params);
+ vos_ssr_unprotect(__func__);
+
+ return ret;
+}
+#endif
+
/**
* hdd_delete_adapter() - stop and close adapter
* @hdd_ctx: pointer to hdd context
@@ -2723,12 +2812,12 @@
if( rxChan <= MAX_NO_OF_2_4_CHANNELS )
{
freq = ieee80211_channel_to_frequency( rxChan,
- IEEE80211_BAND_2GHZ);
+ HDD_NL80211_BAND_2GHZ);
}
else
{
freq = ieee80211_channel_to_frequency( rxChan,
- IEEE80211_BAND_5GHZ);
+ HDD_NL80211_BAND_5GHZ);
}
cfgState = WLAN_HDD_GET_CFG_STATE_PTR( pAdapter );
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index 69d4c38..d7f8e92 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -573,7 +573,7 @@
goto xmit_done;
}
}
- dev->trans_start = jiffies;
+ netif_trans_update(dev);
VOS_TRACE( VOS_MODULE_ID_HDD_SAP_DATA, VOS_TRACE_LEVEL_INFO_LOW,
"%s: exit", __func__);
@@ -756,9 +756,7 @@
int status = 0;
hdd_context_t *pHddCtx;
- VOS_TRACE( VOS_MODULE_ID_HDD_SAP_DATA, VOS_TRACE_LEVEL_ERROR,
- "%s: Transmission timeout occurred jiffies %lu dev->trans_start %lu",
- __func__, jiffies, dev->trans_start);
+ TX_TIMEOUT_TRACE(dev, VOS_MODULE_ID_HDD_DATA);
if ( NULL == pAdapter )
{
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index 21125ac..fd4306d 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -787,7 +787,7 @@
}
}
- dev->trans_start = jiffies;
+ netif_trans_update(dev);
return NETDEV_TX_OK;
}
@@ -1097,7 +1097,7 @@
}
}
- dev->trans_start = jiffies;
+ netif_trans_update(dev);
return NETDEV_TX_OK;
}
@@ -1154,9 +1154,7 @@
v_ULONG_t diff_in_jiffies = 0;
hdd_station_ctx_t *pHddStaCtx = NULL;
- VOS_TRACE( VOS_MODULE_ID_HDD_DATA, VOS_TRACE_LEVEL_ERROR,
- "%s: Transmission timeout occurred jiffies %lu dev->trans_start %lu",
- __func__,jiffies,dev->trans_start);
+ TX_TIMEOUT_TRACE(dev, VOS_MODULE_ID_HDD_DATA);
if ( NULL == pAdapter )
{
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 5e09368..acdbc6d 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -270,7 +270,9 @@
#endif
void limInitOperatingClasses( tHalHandle hHal );
extern void SysProcessMmhMsg(tpAniSirGlobal pMac, tSirMsgQ* pMsg);
+#ifdef WLAN_BTAMP_FEATURE
extern void btampEstablishLogLinkHdlr(void* pMsg);
+#endif
static void csrSerDesUnpackDiassocRsp(tANI_U8 *pBuf, tSirSmeDisassocRsp *pRsp);
void csrReinitPreauthCmd(tpAniSirGlobal pMac, tSmeCmd *pCommand);
@@ -11042,7 +11044,9 @@
case eWNI_SME_BTAMP_LOG_LINK_IND:
smsLog( pMac, LOG1, FL("Establish logical link req from HCI serialized through MC thread"));
+#ifdef WLAN_BTAMP_FEATURE
btampEstablishLogLinkHdlr( pSirMsg );
+#endif
break;
case eWNI_SME_RSSI_IND:
smsLog( pMac, LOG1, FL("RSSI indication from TL serialized through MC thread"));
diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c
index 8e98c59..8663269 100644
--- a/CORE/SME/src/csr/csrNeighborRoam.c
+++ b/CORE/SME/src/csr/csrNeighborRoam.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -1540,7 +1540,7 @@
VOS_TRACE (VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG,
FL("Scan result: BSSID "MAC_ADDRESS_STR" (Rssi %ld, Ch:%d)"),
MAC_ADDR_ARRAY(pScanResult->BssDescriptor.bssId),
- abs(pScanResult->BssDescriptor.rssi),
+ (long)abs(pScanResult->BssDescriptor.rssi),
pScanResult->BssDescriptor.channelId);
if ((VOS_TRUE == vos_mem_compare(pScanResult->BssDescriptor.bssId,
@@ -1787,7 +1787,7 @@
{
VOS_TRACE (VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,
"%s: [INFOLOG] potential candidate to roam immediately (diff=%ld, expected=%d)",
- __func__, abs(abs(CurrAPRssi) - abs(pScanResult->BssDescriptor.rssi)),
+ __func__, (long)abs(abs(CurrAPRssi) - abs(pScanResult->BssDescriptor.rssi)),
immediateRoamRssiDiff);
roamNow = eANI_BOOLEAN_TRUE;
}
diff --git a/CORE/SVC/src/logging/wlan_logging_sock_svc.c b/CORE/SVC/src/logging/wlan_logging_sock_svc.c
index 3ff9664..fd48982 100644
--- a/CORE/SVC/src/logging/wlan_logging_sock_svc.c
+++ b/CORE/SVC/src/logging/wlan_logging_sock_svc.c
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
+* Copyright (c) 2014-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -598,7 +598,7 @@
local_time = (u32)(tv.tv_sec - (sys_tz.tz_minuteswest * 60));
rtc_time_to_tm(local_time, &tm);
/* Firmware Time Stamp */
- qtimer_ticks = arch_counter_get_cntpct();
+ qtimer_ticks = __vos_get_log_timestamp();
tlen = snprintf(tbuf, sizeof(tbuf), "[%02d:%02d:%02d.%06lu] [%016llX]"
" [%.5s] ", tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec,
@@ -1410,6 +1410,7 @@
int i, j = 0;
unsigned long irq_flag;
bool failure = FALSE;
+ struct log_msg *temp;
pr_info("%s: Initalizing FEConsoleLog = %d NumBuff = %d\n",
__func__, log_fe_to_console, num_buf);
@@ -1501,10 +1502,12 @@
pr_err("%s: Could not Create LogMsg Thread Controller",
__func__);
spin_lock_irqsave(&gwlan_logging.spin_lock, irq_flag);
- vfree(gplog_msg);
+ temp = gplog_msg;
gplog_msg = NULL;
gwlan_logging.pcur_node = NULL;
spin_unlock_irqrestore(&gwlan_logging.spin_lock, irq_flag);
+ vfree(temp);
+ temp = NULL;
return -ENOMEM;
}
wake_up_process(gwlan_logging.thread);
@@ -1566,6 +1569,7 @@
{
unsigned long irq_flag;
int i;
+ struct log_msg *temp;
if (!gplog_msg)
return 0;
@@ -1582,10 +1586,12 @@
wait_for_completion(&gwlan_logging.shutdown_comp);
spin_lock_irqsave(&gwlan_logging.spin_lock, irq_flag);
- vfree(gplog_msg);
+ temp = gplog_msg;
gplog_msg = NULL;
gwlan_logging.pcur_node = NULL;
spin_unlock_irqrestore(&gwlan_logging.spin_lock, irq_flag);
+ vfree(temp);
+ temp = NULL;
spin_lock_irqsave(&gwlan_logging.pkt_stats_lock, irq_flag);
/* free allocated skb */
diff --git a/CORE/VOSS/inc/i_vos_lock.h b/CORE/VOSS/inc/i_vos_lock.h
index 0a66103..cc213f7 100644
--- a/CORE/VOSS/inc/i_vos_lock.h
+++ b/CORE/VOSS/inc/i_vos_lock.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2015 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2015, 2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -46,11 +46,15 @@
#include <linux/mutex.h>
#include <linux/spinlock.h>
#include <linux/sched.h>
-#if defined(WLAN_OPEN_SOURCE)
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+#include <linux/device.h>
+#include <linux/pm_wakeup.h>
+#else
#include <linux/wakelock.h>
#endif
-
/*--------------------------------------------------------------------------
Preprocessor definitions and constants
------------------------------------------------------------------------*/
@@ -73,12 +77,15 @@
typedef spinlock_t vos_spin_lock_t;
#if defined(WLAN_OPEN_SOURCE)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
+typedef struct wakeup_source vos_wake_lock_t;
+#else
typedef struct wake_lock vos_wake_lock_t;
+#endif
#else
typedef int vos_wake_lock_t;
#endif
-
/*-------------------------------------------------------------------------
Function declarations and documenation
------------------------------------------------------------------------*/
diff --git a/CORE/VOSS/inc/vos_api.h b/CORE/VOSS/inc/vos_api.h
index 9754fcc..d6c17c5 100644
--- a/CORE/VOSS/inc/vos_api.h
+++ b/CORE/VOSS/inc/vos_api.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -74,6 +74,7 @@
#include <vos_threads.h>
#include <vos_timer.h>
#include <vos_pack_align.h>
+#include <asm/arch_timer.h>
/**
* enum userspace_log_level - Log level at userspace
@@ -545,4 +546,16 @@
*/
v_BOOL_t vos_check_monitor_state(void);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0))
+static inline uint64_t __vos_get_log_timestamp(void)
+{
+ return arch_counter_get_cntvct();
+}
+#else
+static inline uint64_t __vos_get_log_timestamp(void)
+{
+ return arch_counter_get_cntpct();
+}
+#endif /* LINUX_VERSION_CODE */
+
#endif // if !defined __VOS_NVITEM_H
diff --git a/CORE/VOSS/inc/vos_lock.h b/CORE/VOSS/inc/vos_lock.h
index 9cce950..14dcd68 100644
--- a/CORE/VOSS/inc/vos_lock.h
+++ b/CORE/VOSS/inc/vos_lock.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2015 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2015, 2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -307,4 +307,12 @@
------------------------------------------------------------------------*/
VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *pLock);
+/**
+ * vos_wake_lock_active() - Check for wake lock state
+ * @lock: lock to be checked
+ *
+ * Return: If active return true else false
+ */
+bool vos_wake_lock_active(vos_wake_lock_t *lock);
+
#endif // __VOSS_LOCK_H
diff --git a/CORE/VOSS/inc/vos_utils.h b/CORE/VOSS/inc/vos_utils.h
index 59ce112..ddb77f4 100644
--- a/CORE/VOSS/inc/vos_utils.h
+++ b/CORE/VOSS/inc/vos_utils.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2016, 2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -76,11 +76,14 @@
Function declarations and documenation
------------------------------------------------------------------------*/
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,0)) || \
+ defined(WLAN_BTAMP_FEATURE)
+
VOS_STATUS vos_crypto_init( v_U32_t *phCryptProv );
VOS_STATUS vos_crypto_deinit( v_U32_t hCryptProv );
-
+#endif
/**
* vos_rand_get_bytes
@@ -97,6 +100,8 @@
*/
VOS_STATUS vos_rand_get_bytes( v_U32_t handle, v_U8_t *pbBuf, v_U32_t numBytes );
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,0)) || \
+ defined(WLAN_BTAMP_FEATURE)
/**
* vos_sha1_hmac_str
@@ -169,6 +174,8 @@
v_U8_t *pDecrypted,
v_U8_t *pKey); /* pointer to authentication key */
+#endif
+
v_U8_t vos_chan_to_band(v_U32_t chan);
void vos_get_wlan_unsafe_channel(v_U16_t *unsafeChannelList,
v_U16_t buffer_size, v_U16_t *unsafeChannelCount);
diff --git a/CORE/VOSS/src/vos_lock.c b/CORE/VOSS/src/vos_lock.c
index 60e0c3d..aaa9e50 100644
--- a/CORE/VOSS/src/vos_lock.c
+++ b/CORE/VOSS/src/vos_lock.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2015 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2015, 2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -482,6 +482,14 @@
return VOS_STATUS_SUCCESS;
}
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *pLock, const char *name)
+{
+ wakeup_source_init(pLock, name);
+ return VOS_STATUS_SUCCESS;
+}
+#else
/*--------------------------------------------------------------------------
\brief vos_wake_lock_init() - initializes a vOSS wake lock
@@ -499,8 +507,18 @@
#endif
return VOS_STATUS_SUCCESS;
}
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+static const char *vos_wake_lock_name(vos_wake_lock_t *pLock)
+{
+ if (pLock->name)
+ return pLock->name;
+ return "UNNAMED_WAKELOCK";
+}
+#else
/*--------------------------------------------------------------------------
* vos_wake_lock_name() - This function returns the name of the wakelock
* @pLock: Pointer to the wakelock
@@ -521,7 +539,19 @@
return "UNNAMED_WAKELOCK";
#endif
}
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+VOS_STATUS vos_wake_lock_acquire(vos_wake_lock_t *pLock, uint32_t reason)
+{
+ vos_log_wlock_diag(reason, vos_wake_lock_name(pLock),
+ WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT,
+ WIFI_POWER_EVENT_WAKELOCK_TAKEN);
+ __pm_stay_awake(pLock);
+ return VOS_STATUS_SUCCESS;
+}
+#else
/*--------------------------------------------------------------------------
\brief vos_wake_lock_acquire() - acquires a wake lock
@@ -545,7 +575,21 @@
return VOS_STATUS_SUCCESS;
}
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+VOS_STATUS vos_wake_lock_timeout_release(vos_wake_lock_t *pLock, v_U32_t msec,
+ uint32_t reason)
+{
+ /*
+ * Wakelock for Rx is frequent.
+ * It is reported only during active debug
+ */
+ __pm_wakeup_event(pLock, msec);
+ return VOS_STATUS_SUCCESS;
+}
+#else
/*--------------------------------------------------------------------------
\brief vos_wake_lock_timeout_release() - release a wake lock with a timeout
@@ -577,7 +621,19 @@
return VOS_STATUS_SUCCESS;
}
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+VOS_STATUS vos_wake_lock_release(vos_wake_lock_t *pLock, uint32_t reason)
+{
+ vos_log_wlock_diag(reason, vos_wake_lock_name(pLock),
+ WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT,
+ WIFI_POWER_EVENT_WAKELOCK_RELEASED);
+ __pm_relax(pLock);
+ return VOS_STATUS_SUCCESS;
+}
+#else
/*--------------------------------------------------------------------------
\brief vos_wake_lock_release() - releases a wake lock
@@ -602,7 +658,16 @@
}
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *pLock)
+{
+ wakeup_source_trash(pLock);
+ return VOS_STATUS_SUCCESS;
+}
+#else
/*--------------------------------------------------------------------------
\brief vos_wake_lock_destroy() - destroys a wake lock
@@ -620,3 +685,20 @@
#endif
return VOS_STATUS_SUCCESS;
}
+#endif
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+bool vos_wake_lock_active(vos_wake_lock_t *lock)
+{
+ return lock->active;
+}
+#else
+bool vos_wake_lock_active(vos_wake_lock_t *lock)
+{
+#if defined(WLAN_OPEN_SOURCE)
+ return wake_lock_active(lock);
+#endif
+ return false;
+}
+#endif
diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
index 307c594..ae26eff 100644
--- a/CORE/VOSS/src/vos_nvitem.c
+++ b/CORE/VOSS/src/vos_nvitem.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -2820,11 +2820,11 @@
/* 20MHz channels */
if (nBandCapability == eCSR_BAND_24)
pr_info("BandCapability is set to 2G only.\n");
- for (i=0,m=0;i<IEEE80211_NUM_BANDS;i++)
+ for (i=0,m=0;i<HDD_NUM_NL80211_BANDS;i++)
{
- if (i == IEEE80211_BAND_2GHZ && nBandCapability == eCSR_BAND_5G) // 5G only
+ if (i == HDD_NL80211_BAND_2GHZ && nBandCapability == eCSR_BAND_5G) // 5G only
continue;
- else if (i == IEEE80211_BAND_5GHZ && nBandCapability == eCSR_BAND_24) // 2G only
+ else if (i == HDD_NL80211_BAND_5GHZ && nBandCapability == eCSR_BAND_24) // 2G only
continue;
if (wiphy->bands[i] == NULL)
{
@@ -3296,7 +3296,7 @@
if (chan <= RF_CHAN_14)
return VOS_FALSE;
- band = IEEE80211_BAND_5GHZ;
+ band = HDD_NL80211_BAND_5GHZ;
freq = vos_chan_to_freq(chan);
wiphy = pHddCtx->wiphy;
@@ -3587,7 +3587,7 @@
hdd_context_t *pHddCtx = (hdd_context_t *)hdd_ctx;
struct wiphy *wiphy = (struct wiphy *)pwiphy;
- for (i = 0, m = 0; i<IEEE80211_NUM_BANDS; i++)
+ for (i = 0, m = 0; i<HDD_NUM_NL80211_BANDS; i++)
{
if (wiphy->bands[i] == NULL)
@@ -3608,9 +3608,9 @@
for (j = 0; j < wiphy->bands[i]->n_channels; j++)
{
- if (IEEE80211_BAND_2GHZ == i && eCSR_BAND_5G == nBandCapability)
+ if (HDD_NL80211_BAND_2GHZ == i && eCSR_BAND_5G == nBandCapability)
wiphy->bands[i]->channels[j].flags |= IEEE80211_CHAN_DISABLED;
- else if (IEEE80211_BAND_5GHZ == i && eCSR_BAND_24 == nBandCapability)
+ else if (HDD_NL80211_BAND_5GHZ == i && eCSR_BAND_24 == nBandCapability)
wiphy->bands[i]->channels[j].flags |= IEEE80211_CHAN_DISABLED;
/* k = (m + j) is internal current channel index for 20MHz channel
@@ -4141,19 +4141,19 @@
(request->initiator == NL80211_REGDOM_SET_BY_USER))
{
if ( pHddCtx->cfg_ini->gEnableStrictRegulatoryForFCC &&
- wiphy->bands[IEEE80211_BAND_5GHZ])
+ wiphy->bands[HDD_NL80211_BAND_5GHZ])
{
- for (j=0; j<wiphy->bands[IEEE80211_BAND_5GHZ]->n_channels; j++)
+ for (j=0; j<wiphy->bands[HDD_NL80211_BAND_5GHZ]->n_channels; j++)
{
// UNII-1 band channels are passive when domain is FCC.
- if ((wiphy->bands[IEEE80211_BAND_5GHZ ]->channels[j].center_freq == 5180 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5200 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5220 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5240) &&
+ if ((wiphy->bands[HDD_NL80211_BAND_5GHZ ]->channels[j].center_freq == 5180 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5200 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5220 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5240) &&
((request->alpha2[0]== 'U'&& request->alpha2[1]=='S') &&
pHddCtx->nEnableStrictRegulatoryForFCC))
{
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].flags |= IEEE80211_CHAN_PASSIVE_SCAN;
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].flags |= IEEE80211_CHAN_PASSIVE_SCAN;
}
}
}
@@ -4249,7 +4249,7 @@
temp_reg_domain = cur_reg_domain = reg_domain;
m = 0;
- for (i = 0; i < IEEE80211_NUM_BANDS; i++)
+ for (i = 0; i < HDD_NUM_NL80211_BANDS; i++)
{
if (wiphy->bands[i] == NULL)
@@ -4655,7 +4655,7 @@
settings. iwiphy->bands doesn't seem to set ht40 flags in kernel
correctly, this may be fixed by later kernel */
- for (i = 0, m = 0; i < IEEE80211_NUM_BANDS; i++)
+ for (i = 0, m = 0; i < HDD_NUM_NL80211_BANDS; i++)
{
if (NULL == wiphy->bands[i])
{
@@ -4680,7 +4680,7 @@
// k = (m + j) is internal current channel index for 20MHz channel
// n is internal channel index for corresponding 40MHz channel
k = m + j;
- if (IEEE80211_BAND_2GHZ == i && eCSR_BAND_5G == nBandCapability) // 5G only
+ if (HDD_NL80211_BAND_2GHZ == i && eCSR_BAND_5G == nBandCapability) // 5G only
{
// Enable social channels for P2P
if ((2412 == wiphy->bands[i]->channels[j].center_freq ||
@@ -4696,7 +4696,7 @@
}
continue;
}
- else if (IEEE80211_BAND_5GHZ == i && eCSR_BAND_24 == nBandCapability) // 2G only
+ else if (HDD_NL80211_BAND_5GHZ == i && eCSR_BAND_24 == nBandCapability) // 2G only
{
wiphy->bands[i]->channels[j].flags |= IEEE80211_CHAN_DISABLED;
continue;
@@ -4752,34 +4752,34 @@
IOCTL operation is inactive */
if ( pHddCtx->cfg_ini->gEnableStrictRegulatoryForFCC &&
- wiphy->bands[IEEE80211_BAND_5GHZ])
+ wiphy->bands[HDD_NL80211_BAND_5GHZ])
{
- for (j=0; j<wiphy->bands[IEEE80211_BAND_5GHZ]->n_channels; j++)
+ for (j=0; j<wiphy->bands[HDD_NL80211_BAND_5GHZ]->n_channels; j++)
{
// UNII-1 band channels are passive when domain is FCC.
- if ((wiphy->bands[IEEE80211_BAND_5GHZ ]->channels[j].center_freq == 5180 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5200 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5220 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5240) &&
+ if ((wiphy->bands[HDD_NL80211_BAND_5GHZ ]->channels[j].center_freq == 5180 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5200 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5220 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5240) &&
((domainIdCurrent == REGDOMAIN_FCC) &&
pHddCtx->nEnableStrictRegulatoryForFCC))
{
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].flags |= IEEE80211_CHAN_PASSIVE_SCAN;
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].flags |= IEEE80211_CHAN_PASSIVE_SCAN;
}
- else if ((wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5180 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5200 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5220 ||
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5240) &&
+ else if ((wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5180 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5200 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5220 ||
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5240) &&
((domainIdCurrent != REGDOMAIN_FCC) ||
!pHddCtx->nEnableStrictRegulatoryForFCC))
{
- wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
+ wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
}
//Marking channels 52-144 as Radar channels if they are enabled
- k = wiphy->bands[IEEE80211_BAND_2GHZ]->n_channels + j;
+ k = wiphy->bands[HDD_NL80211_BAND_2GHZ]->n_channels + j;
- if ((wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5260 ||
+ if ((wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels[j].center_freq == 5260 ||
wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5280 ||
wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5300 ||
wiphy->bands[IEEE80211_BAND_5GHZ]->channels[j].center_freq == 5320 ||
diff --git a/CORE/VOSS/src/vos_sched.h b/CORE/VOSS/src/vos_sched.h
index 09b8038..0e5d612 100644
--- a/CORE/VOSS/src/vos_sched.h
+++ b/CORE/VOSS/src/vos_sched.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -73,7 +73,15 @@
#include "i_vos_types.h"
#include "i_vos_packet.h"
#include <linux/wait.h>
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \
+ defined(WLAN_OPEN_SOURCE)
+#include <linux/device.h>
+#include <linux/pm_wakeup.h>
+#else
#include <linux/wakelock.h>
+#endif
+
#include <vos_timer.h>
diff --git a/CORE/VOSS/src/vos_utils.c b/CORE/VOSS/src/vos_utils.c
index 879c376..9f36857 100644
--- a/CORE/VOSS/src/vos_utils.c
+++ b/CORE/VOSS/src/vos_utils.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2016, 2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -80,18 +80,20 @@
/*----------------------------------------------------------------------------
* Global Data Definitions
* -------------------------------------------------------------------------*/
+
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,0)) || \
+ defined(WLAN_BTAMP_FEATURE)
extern struct crypto_ahash *wcnss_wlan_crypto_alloc_ahash(const char *alg_name,
unsigned int type,
unsigned int mask);
-
extern int wcnss_wlan_crypto_ahash_digest(struct ahash_request *req);
extern void wcnss_wlan_crypto_free_ahash(struct crypto_ahash *tfm);
extern int wcnss_wlan_crypto_ahash_setkey(struct crypto_ahash *tfm, const u8 *key,
unsigned int keylen);
extern struct crypto_ablkcipher *wcnss_wlan_crypto_alloc_ablkcipher(const char *alg_name,
u32 type, u32 mask);
-extern void wcnss_wlan_ablkcipher_request_free(struct ablkcipher_request *req);
extern void wcnss_wlan_crypto_free_ablkcipher(struct crypto_ablkcipher *tfm);
+extern void wcnss_wlan_ablkcipher_request_free(struct ablkcipher_request *req);
/*----------------------------------------------------------------------------
* Static Variable Definitions
@@ -142,6 +144,8 @@
return ( uResult );
}
+#endif
+
/*--------------------------------------------------------------------------
\brief vos_rand_get_bytes() - Generates random byte
@@ -192,6 +196,8 @@
}
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,0)) || \
+ defined(WLAN_BTAMP_FEATURE)
/**
* vos_sha1_hmac_str
*
@@ -719,6 +725,8 @@
return VOS_STATUS_SUCCESS;
}
+#endif
+
v_U8_t vos_chan_to_band(v_U32_t chan)
{
if (chan <= VOS_24_GHZ_CHANNEL_14)
diff --git a/CORE/WDI/WPAL/src/wlan_qct_pal_timer.c b/CORE/WDI/WPAL/src/wlan_qct_pal_timer.c
index 5e6e33a..3b2107d 100644
--- a/CORE/WDI/WPAL/src/wlan_qct_pal_timer.c
+++ b/CORE/WDI/WPAL/src/wlan_qct_pal_timer.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2013, 2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2013, 2017-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -40,6 +40,7 @@
#include "wlan_qct_pal_trace.h"
#include "wlan_qct_os_status.h"
#include "vos_threads.h"
+#include "vos_api.h"
#include <linux/delay.h>
#if defined(ANI_OS_TYPE_ANDROID)
@@ -218,7 +219,7 @@
#if defined(ANI_OS_TYPE_ANDROID)
wpt_uint64 wpalGetArchCounterTime(void)
{
- return arch_counter_get_cntpct();
+ return __vos_get_log_timestamp();
}/*wpalGetArchCounterTime*/
#else
wpt_uint64 wpalGetArchCounterTime(void)
diff --git a/Kbuild b/Kbuild
index dfa683e..baadf29 100644
--- a/Kbuild
+++ b/Kbuild
@@ -88,6 +88,8 @@
endif
endif
+
+ifeq ($(CONFIG_PRIMA_WLAN_BTAMP),y)
############ BAP ############
BAP_DIR := CORE/BAP
BAP_INC_DIR := $(BAP_DIR)/inc
@@ -116,6 +118,7 @@
$(BAP_SRC_DIR)/bapRsnTxRx.o \
$(BAP_SRC_DIR)/btampFsm.o \
$(BAP_SRC_DIR)/btampHCI.o
+endif
############ DXE ############
DXE_DIR := CORE/DXE
@@ -136,8 +139,7 @@
HDD_INC := -I$(WLAN_ROOT)/$(HDD_INC_DIR) \
-I$(WLAN_ROOT)/$(HDD_SRC_DIR)
-HDD_OBJS := $(HDD_SRC_DIR)/bap_hdd_main.o \
- $(HDD_SRC_DIR)/wlan_hdd_assoc.o \
+HDD_OBJS := $(HDD_SRC_DIR)/wlan_hdd_assoc.o \
$(HDD_SRC_DIR)/wlan_hdd_cfg.o \
$(HDD_SRC_DIR)/wlan_hdd_debugfs.o \
$(HDD_SRC_DIR)/wlan_hdd_dev_pwr.o \
@@ -156,6 +158,10 @@
$(HDD_SRC_DIR)/wlan_hdd_wmm.o \
$(HDD_SRC_DIR)/wlan_hdd_wowl.o
+ifeq ($(CONFIG_PRIMA_WLAN_BTAMP),y)
+HDD_OBJS += $(HDD_SRC_DIR)/bap_hdd_main.o
+endif
+
ifeq ($(HAVE_CFG80211),1)
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_cfg80211.o \
$(HDD_SRC_DIR)/wlan_hdd_p2p.o
@@ -500,8 +506,7 @@
LINUX_INC := -Iinclude/linux
-INCS := $(BAP_INC) \
- $(DXE_INC) \
+INCS := $(DXE_INC) \
$(HDD_INC) \
$(LINUX_INC) \
$(MAC_INC) \
@@ -515,6 +520,10 @@
$(WDA_INC) \
$(WDI_INC)
+ifeq ($(CONFIG_PRIMA_WLAN_BTAMP),y)
+INCS += $(BAP_INC)
+endif
+
OBJS := $(BAP_OBJS) \
$(DXE_OBJS) \
$(HDD_OBJS) \
@@ -528,6 +537,10 @@
$(WDA_OBJS) \
$(WDI_OBJS)
+ifeq ($(CONFIG_PRIMA_WLAN_BTAMP),y)
+OBJS += $(BAP_OBJS)
+endif
+
EXTRA_CFLAGS += $(INCS)
EXTRA_CFLAGS += -fno-pic