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/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])
{