wil6210: remove rtap_include_phy_info module param
authorMaya Erez <merez@codeaurora.org>
Fri, 22 Feb 2019 14:20:59 +0000 (16:20 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 28 Feb 2019 09:24:09 +0000 (11:24 +0200)
Due to a HW issue in PHY info collection rtap_include_phy_info is not
in use, hence can be removed.

Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wil6210/txrx.c
drivers/net/wireless/ath/wil6210/txrx.h
drivers/net/wireless/ath/wil6210/wmi.c

index 3e1c831ab2fbe892ddfbd6b88d62197bd500bf66..4d286fbaa7b7d93c4b1ef8bab0207d7985db163c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2012-2017 Qualcomm Atheros, Inc.
- * Copyright (c) 2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
 #include "trace.h"
 #include "txrx_edma.h"
 
-static bool rtap_include_phy_info;
-module_param(rtap_include_phy_info, bool, 0444);
-MODULE_PARM_DESC(rtap_include_phy_info,
-                " Include PHY info in the radiotap header, default - no");
-
 bool rx_align_2;
 module_param(rx_align_2, bool, 0444);
 MODULE_PARM_DESC(rx_align_2, " align Rx buffers on 4*n+2, default - no");
@@ -332,87 +327,34 @@ static void wil_rx_add_radiotap_header(struct wil6210_priv *wil,
                u8 mcs_flags;
                u8 mcs_index;
        } __packed;
-       struct wil6210_rtap_vendor {
-               struct wil6210_rtap rtap;
-               /* vendor */
-               u8 vendor_oui[3] __aligned(2);
-               u8 vendor_ns;
-               __le16 vendor_skip;
-               u8 vendor_data[0];
-       } __packed;
        struct vring_rx_desc *d = wil_skb_rxdesc(skb);
-       struct wil6210_rtap_vendor *rtap_vendor;
+       struct wil6210_rtap *rtap;
        int rtap_len = sizeof(struct wil6210_rtap);
-       int phy_length = 0; /* phy info header size, bytes */
-       static char phy_data[128];
        struct ieee80211_channel *ch = wil->monitor_chandef.chan;
 
-       if (rtap_include_phy_info) {
-               rtap_len = sizeof(*rtap_vendor) + sizeof(*d);
-               /* calculate additional length */
-               if (d->dma.status & RX_DMA_STATUS_PHY_INFO) {
-                       /**
-                        * PHY info starts from 8-byte boundary
-                        * there are 8-byte lines, last line may be partially
-                        * written (HW bug), thus FW configures for last line
-                        * to be excessive. Driver skips this last line.
-                        */
-                       int len = min_t(int, 8 + sizeof(phy_data),
-                                       wil_rxdesc_phy_length(d));
-
-                       if (len > 8) {
-                               void *p = skb_tail_pointer(skb);
-                               void *pa = PTR_ALIGN(p, 8);
-
-                               if (skb_tailroom(skb) >= len + (pa - p)) {
-                                       phy_length = len - 8;
-                                       memcpy(phy_data, pa, phy_length);
-                               }
-                       }
-               }
-               rtap_len += phy_length;
-       }
-
        if (skb_headroom(skb) < rtap_len &&
            pskb_expand_head(skb, rtap_len, 0, GFP_ATOMIC)) {
                wil_err(wil, "Unable to expand headroom to %d\n", rtap_len);
                return;
        }
 
-       rtap_vendor = skb_push(skb, rtap_len);
-       memset(rtap_vendor, 0, rtap_len);
+       rtap = skb_push(skb, rtap_len);
+       memset(rtap, 0, rtap_len);
 
-       rtap_vendor->rtap.rthdr.it_version = PKTHDR_RADIOTAP_VERSION;
-       rtap_vendor->rtap.rthdr.it_len = cpu_to_le16(rtap_len);
-       rtap_vendor->rtap.rthdr.it_present = cpu_to_le32(
-                       (1 << IEEE80211_RADIOTAP_FLAGS) |
+       rtap->rthdr.it_version = PKTHDR_RADIOTAP_VERSION;
+       rtap->rthdr.it_len = cpu_to_le16(rtap_len);
+       rtap->rthdr.it_present = cpu_to_le32((1 << IEEE80211_RADIOTAP_FLAGS) |
                        (1 << IEEE80211_RADIOTAP_CHANNEL) |
                        (1 << IEEE80211_RADIOTAP_MCS));
        if (d->dma.status & RX_DMA_STATUS_ERROR)
-               rtap_vendor->rtap.flags |= IEEE80211_RADIOTAP_F_BADFCS;
-
-       rtap_vendor->rtap.chnl_freq = cpu_to_le16(ch ? ch->center_freq : 58320);
-       rtap_vendor->rtap.chnl_flags = cpu_to_le16(0);
-
-       rtap_vendor->rtap.mcs_present = IEEE80211_RADIOTAP_MCS_HAVE_MCS;
-       rtap_vendor->rtap.mcs_flags = 0;
-       rtap_vendor->rtap.mcs_index = wil_rxdesc_mcs(d);
-
-       if (rtap_include_phy_info) {
-               rtap_vendor->rtap.rthdr.it_present |= cpu_to_le32(1 <<
-                               IEEE80211_RADIOTAP_VENDOR_NAMESPACE);
-               /* OUI for Wilocity 04:ce:14 */
-               rtap_vendor->vendor_oui[0] = 0x04;
-               rtap_vendor->vendor_oui[1] = 0xce;
-               rtap_vendor->vendor_oui[2] = 0x14;
-               rtap_vendor->vendor_ns = 1;
-               /* Rx descriptor + PHY data  */
-               rtap_vendor->vendor_skip = cpu_to_le16(sizeof(*d) +
-                                                      phy_length);
-               memcpy(rtap_vendor->vendor_data, (void *)d, sizeof(*d));
-               memcpy(rtap_vendor->vendor_data + sizeof(*d), phy_data,
-                      phy_length);
-       }
+               rtap->flags |= IEEE80211_RADIOTAP_F_BADFCS;
+
+       rtap->chnl_freq = cpu_to_le16(ch ? ch->center_freq : 58320);
+       rtap->chnl_flags = cpu_to_le16(0);
+
+       rtap->mcs_present = IEEE80211_RADIOTAP_MCS_HAVE_MCS;
+       rtap->mcs_flags = 0;
+       rtap->mcs_index = wil_rxdesc_mcs(d);
 }
 
 static bool wil_is_rx_idle(struct wil6210_priv *wil)
index 9d83be4818399c8779ab3cafc9da4759d594b316..bc81444b710627a3afe4a9257ae1d743a68b129e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2012-2016 Qualcomm Atheros, Inc.
- * Copyright (c) 2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -530,11 +530,6 @@ static inline int wil_rxdesc_mcast(struct vring_rx_desc *d)
        return WIL_GET_BITS(d->mac.d1, 13, 14);
 }
 
-static inline int wil_rxdesc_phy_length(struct vring_rx_desc *d)
-{
-       return WIL_GET_BITS(d->dma.d0, 16, 29);
-}
-
 static inline struct vring_rx_desc *wil_skb_rxdesc(struct sk_buff *skb)
 {
        return (void *)skb->cb;
index 345f05969190094bd795d8acf320cb76bba2995d..b1ba519b0ca9b64af51e87d0296cf4d5443f86c5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2012-2017 Qualcomm Atheros, Inc.
- * Copyright (c) 2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -2516,7 +2516,7 @@ int wmi_rx_chain_add(struct wil6210_priv *wil, struct wil_ring *vring)
                if (ch)
                        cmd.sniffer_cfg.channel = ch->hw_value - 1;
                cmd.sniffer_cfg.phy_info_mode =
-                       cpu_to_le32(ndev->type == ARPHRD_IEEE80211_RADIOTAP);
+                       cpu_to_le32(WMI_SNIFFER_PHY_INFO_DISABLED);
                cmd.sniffer_cfg.phy_support =
                        cpu_to_le32((wil->monitor_flags & MONITOR_FLAG_CONTROL)
                                    ? WMI_SNIFFER_CP : WMI_SNIFFER_BOTH_PHYS);