]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mt76: unify rxwi parsing between mt76x2 and mt76x0 drivers
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Thu, 4 Oct 2018 21:53:11 +0000 (23:53 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 5 Oct 2018 18:05:45 +0000 (20:05 +0200)
Unify rxwi parsing between mt76x2 and mt76x0. Remove the following
routines:
- mt76x0_phy_get_rssi
- mt76x0_queue_rx_skb
- mt76x0_mac_process_rx
Moreover remove mt76x2/common.c and mt76x0/mac.h since are empty files
Enable CCMP PN sw validation

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
17 files changed:
drivers/net/wireless/mediatek/mt76/mt76x0/initvals.h
drivers/net/wireless/mediatek/mt76/mt76x0/mac.c
drivers/net/wireless/mediatek/mt76/mt76x0/mac.h [deleted file]
drivers/net/wireless/mediatek/mt76/mt76x0/main.c
drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0.h
drivers/net/wireless/mediatek/mt76/mt76x0/phy.c
drivers/net/wireless/mediatek/mt76/mt76x0/trace.h
drivers/net/wireless/mediatek/mt76/mt76x0/tx.c
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
drivers/net/wireless/mediatek/mt76/mt76x02_util.c
drivers/net/wireless/mediatek/mt76/mt76x02_util.h
drivers/net/wireless/mediatek/mt76/mt76x2/Makefile
drivers/net/wireless/mediatek/mt76/mt76x2/common.c [deleted file]
drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2.h
drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c

index 6f26dc6dabde31f1b1043c88e7ff82e6c67e01ee..236dce6860b465782d5504008b02915dca05fb4c 100644 (file)
@@ -83,7 +83,8 @@ static const struct mt76_reg_pair mt76x0_mac_reg_table[] = {
        { MT_LDO_CTRL_1,                0x6B006464 },
        { MT_HT_BASIC_RATE,             0x00004003 },
        { MT_HT_CTRL_CFG,               0x000001FF },
-       { MT_TXOP_HLDR_ET,              0x00000000 }
+       { MT_TXOP_HLDR_ET,              0x00000000 },
+       { MT_PN_PAD_MODE,               0x00000003 },
 };
 
 static const struct mt76_reg_pair mt76x0_bbp_init_tab[] = {
index 5fe035323762d9ec673c55b76113c2079265076e..793297cd6bf1d85f06a68d407243392d4d0fe6e3 100644 (file)
@@ -195,46 +195,3 @@ void mt76x0_mac_set_ampdu_factor(struct mt76x02_dev *dev)
        mt76_wr(dev, MT_MAX_LEN_CFG, 0xa0fff |
                   FIELD_PREP(MT_MAX_LEN_CFG_AMPDU, min_factor));
 }
-
-u32 mt76x0_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
-                         void *rxi)
-{
-       struct mt76_rx_status *status = (struct mt76_rx_status *) skb->cb;
-       struct mt76x02_rxwi *rxwi = rxi;
-       u32 len, ctl = le32_to_cpu(rxwi->ctl);
-       u16 rate = le16_to_cpu(rxwi->rate);
-       struct mt76x02_sta *sta;
-       int rssi, pad_len = 0;
-       u8 wcid;
-
-       len = FIELD_GET(MT_RXWI_CTL_MPDU_LEN, ctl);
-       if (WARN_ON(len < 10))
-               return 0;
-
-       if (rxwi->rxinfo & cpu_to_le32(MT_RXINFO_DECRYPT)) {
-               status->flag |= RX_FLAG_DECRYPTED;
-               status->flag |= RX_FLAG_IV_STRIPPED | RX_FLAG_MMIC_STRIPPED;
-       }
-
-       if (rxwi->rxinfo & MT_RXINFO_L2PAD)
-               pad_len += 2;
-
-       wcid = FIELD_GET(MT_RXWI_CTL_WCID, ctl);
-       sta = mt76x02_rx_get_sta(&dev->mt76, wcid);
-
-       mt76x02_remove_hdr_pad(skb, pad_len);
-
-       pskb_trim(skb, len);
-       status->chains = BIT(0);
-       rssi = mt76x0_phy_get_rssi(dev, rxwi);
-       status->chain_signal[0] = status->signal = rssi;
-       status->freq = dev->mt76.chandef.chan->center_freq;
-       status->band = dev->mt76.chandef.chan->band;
-
-       if (sta) {
-               ewma_signal_add(&sta->rssi, status->signal);
-               sta->inactive_count = 0;
-       }
-
-       return mt76x02_mac_process_rate(status, rate);
-}
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/mac.h b/drivers/net/wireless/mediatek/mt76/mt76x0/mac.h
deleted file mode 100644 (file)
index c022284..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
- * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#ifndef __MT76_MAC_H
-#define __MT76_MAC_H
-
-u32 mt76x0_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
-                         void *rxi);
-#endif
index 1f89570bb08bb33a455d73fe8bc9289280f758bc..7803aa00491ee97ff0ccfdfd42cb1eb3e05369d1 100644 (file)
@@ -14,7 +14,6 @@
  */
 
 #include "mt76x0.h"
-#include "mac.h"
 #include "../mt76x02_util.h"
 #include <linux/etherdevice.h>
 
index 418a3cc76b439461dd2e699029e943ad6af8b329..640f6cd6ef1cefcb7151d205a78aa389f759a912 100644 (file)
@@ -74,7 +74,6 @@ void mt76x0_agc_restore(struct mt76x02_dev *dev);
 int mt76x0_phy_set_channel(struct mt76x02_dev *dev,
                            struct cfg80211_chan_def *chandef);
 void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev);
-int mt76x0_phy_get_rssi(struct mt76x02_dev *dev, struct mt76x02_rxwi *rxwi);
 void mt76x0_phy_set_txpower(struct mt76x02_dev *dev);
 
 /* MAC */
@@ -88,7 +87,5 @@ void mt76x0_mac_set_ampdu_factor(struct mt76x02_dev *dev);
 /* TX */
 void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
                struct sk_buff *skb);
-void mt76x0_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
-                        struct sk_buff *skb);
 
 #endif
index 9296ccd53ce64fcf5f8d4727d4f5537d1fa207f9..4850a2db18d7e3ebb89cd9edd83df958ecf6e49f 100644 (file)
@@ -226,13 +226,6 @@ mt76x0_bbp_set_ctrlch(struct mt76x02_dev *dev, enum nl80211_chan_width width,
        mt76_rmw_field(dev, MT_BBP(TXBE, 0), MT_BBP_TXBE_R0_CTRL_CHAN, ctrl);
 }
 
-int mt76x0_phy_get_rssi(struct mt76x02_dev *dev, struct mt76x02_rxwi *rxwi)
-{
-       struct mt76x02_rx_freq_cal *caldata = &dev->cal.rx;
-
-       return rxwi->rssi[0] + caldata->rssi_offset[0] - caldata->lna_gain;
-}
-
 static void mt76x0_vco_cal(struct mt76x02_dev *dev, u8 channel)
 {
        u8 val;
index 36bbdd58516370e61489860a656555580179883e..75d1d6738c342bcb44884b918352f6741caa3cd9 100644 (file)
@@ -17,7 +17,6 @@
 
 #include <linux/tracepoint.h>
 #include "mt76x0.h"
-#include "mac.h"
 
 #undef TRACE_SYSTEM
 #define TRACE_SYSTEM mt76x0
index dd630fcfaa0874663fcebf4824a28b4156be5d4e..34d115be3447b5da70d87ac5844a3a3cb99429ee 100644 (file)
@@ -45,19 +45,3 @@ void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
        mt76_tx(&dev->mt76, control->sta, wcid, skb);
 }
 EXPORT_SYMBOL_GPL(mt76x0_tx);
-
-void mt76x0_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
-                        struct sk_buff *skb)
-{
-       struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
-       void *rxwi = skb->data;
-
-       skb_pull(skb, sizeof(struct mt76x02_rxwi));
-       if (mt76x0_mac_process_rx(dev, skb, rxwi)) {
-               dev_kfree_skb(skb);
-               return;
-       }
-
-       mt76_rx(&dev->mt76, q, skb);
-}
-EXPORT_SYMBOL_GPL(mt76x0_queue_rx_skb);
index 656a31c02f7320b919c010c74c752d2b6f17a855..7bcdaf9fe0a99d74669c7422bb505b67d3094c64 100644 (file)
@@ -218,7 +218,7 @@ static int mt76x0u_probe(struct usb_interface *usb_intf,
                .tx_prepare_skb = mt76x02u_tx_prepare_skb,
                .tx_complete_skb = mt76x02_tx_complete_skb,
                .tx_status_data = mt76x02_tx_status_data,
-               .rx_skb = mt76x0_queue_rx_skb,
+               .rx_skb = mt76x02_queue_rx_skb,
        };
        struct usb_device *usb_dev = interface_to_usbdev(usb_intf);
        struct mt76x02_dev *dev;
index 859b6c5c4117b057d1b9404875214f61297e5b3d..a743f1c5fa558749aa02f04969d80bf222f9f270 100644 (file)
@@ -686,4 +686,3 @@ int mt76x02_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
 
        return mt76x02_mac_process_rate(status, rate);
 }
-EXPORT_SYMBOL_GPL(mt76x02_mac_process_rx);
index b12db0a108d3f4cc493a1fab33cef240de5a42b8..543f7723b038240b6773905452a5cde232894ae7 100644 (file)
@@ -20,6 +20,7 @@
 #include "mt76x02_dma.h"
 #include "mt76x02_regs.h"
 #include "mt76x02_mac.h"
+#include "mt76x02_util.h"
 
 #define CCK_RATE(_idx, _rate) {                                        \
        .bitrate = _rate,                                       \
@@ -531,4 +532,27 @@ void mt76x02_set_beacon_offsets(struct mt76_dev *dev)
 }
 EXPORT_SYMBOL_GPL(mt76x02_set_beacon_offsets);
 
+void mt76x02_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
+                         struct sk_buff *skb)
+{
+       struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
+       void *rxwi = skb->data;
+
+       if (q == MT_RXQ_MCU) {
+               /* this is used just by mmio code */
+               skb_queue_tail(&mdev->mmio.mcu.res_q, skb);
+               wake_up(&mdev->mmio.mcu.wait);
+               return;
+       }
+
+       skb_pull(skb, sizeof(struct mt76x02_rxwi));
+       if (mt76x02_mac_process_rx(dev, skb, rxwi)) {
+               dev_kfree_skb(skb);
+               return;
+       }
+
+       mt76_rx(mdev, q, skb);
+}
+EXPORT_SYMBOL_GPL(mt76x02_queue_rx_skb);
+
 MODULE_LICENSE("Dual BSD/GPL");
index 660bab285387257bb9dbd96c6900cbb5f1770638..d442057273aa3fd53ad3715c96a03d128a414610 100644 (file)
@@ -141,6 +141,8 @@ void mt76x02_tx_complete(struct mt76_dev *dev, struct sk_buff *skb);
 void mt76x02_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q,
                            struct mt76_queue_entry *e, bool flush);
 bool mt76x02_tx_status_data(struct mt76_dev *dev, u8 *update);
+void mt76x02_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
+                         struct sk_buff *skb);
 
 extern const u16 mt76x02_beacon_offsets[16];
 void mt76x02_set_beacon_offsets(struct mt76_dev *dev);
index 560c46e02ec7b72f0e7245fbc5952155ece38391..043bfd737edf2ccd63c4206bb398e219e219e9b0 100644 (file)
@@ -3,8 +3,7 @@ obj-$(CONFIG_MT76x2E) += mt76x2e.o
 obj-$(CONFIG_MT76x2U) += mt76x2u.o
 
 mt76x2-common-y := \
-       eeprom.o tx.o mac.o init.o common.o phy.o \
-       debugfs.o mcu.o
+       eeprom.o tx.o mac.o init.o phy.o debugfs.o mcu.o
 
 mt76x2e-y := \
        pci.o pci_dma.o pci_main.o pci_init.o pci_tx.o \
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/common.c b/drivers/net/wireless/mediatek/mt76/mt76x2/common.c
deleted file mode 100644 (file)
index d953c65..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>
- * Copyright (C) 2018 Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "mt76x2.h"
-#include "../mt76x02_mac.h"
-
-void mt76x2_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
-                        struct sk_buff *skb)
-{
-       struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
-       void *rxwi = skb->data;
-
-       if (q == MT_RXQ_MCU) {
-               /* this is used just by mmio code */
-               skb_queue_tail(&mdev->mmio.mcu.res_q, skb);
-               wake_up(&mdev->mmio.mcu.wait);
-               return;
-       }
-
-       skb_pull(skb, sizeof(struct mt76x02_rxwi));
-       if (mt76x02_mac_process_rx(dev, skb, rxwi)) {
-               dev_kfree_skb(skb);
-               return;
-       }
-
-       mt76_rx(&dev->mt76, q, skb);
-}
-EXPORT_SYMBOL_GPL(mt76x2_queue_rx_skb);
index 238cbf1eb14c997852e24d218b98b30885d60e02..fc5a09478d14aac3287b63cf89b7e1a79c520755 100644 (file)
@@ -101,8 +101,6 @@ void mt76x2_mac_set_tx_protection(struct mt76x02_dev *dev, u32 val);
 void mt76x2_pre_tbtt_tasklet(unsigned long arg);
 
 void mt76x2_rx_poll_complete(struct mt76_dev *mdev, enum mt76_rxq_id q);
-void mt76x2_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
-                        struct sk_buff *skb);
 
 void mt76x2_sta_ps(struct mt76_dev *dev, struct ieee80211_sta *sta, bool ps);
 
index 2b38f97c310368dbd3d837bea3f4eb82453a179b..c8077d4a62aa22949495fabfd90e521d87070ad1 100644 (file)
@@ -359,7 +359,7 @@ struct mt76x02_dev *mt76x2_alloc_device(struct device *pdev)
                .update_survey = mt76x2_update_channel,
                .tx_prepare_skb = mt76x2_tx_prepare_skb,
                .tx_complete_skb = mt76x2_tx_complete_skb,
-               .rx_skb = mt76x2_queue_rx_skb,
+               .rx_skb = mt76x02_queue_rx_skb,
                .rx_poll_complete = mt76x2_rx_poll_complete,
                .sta_ps = mt76x2_sta_ps,
                .get_tx_txpwr_adj = mt76x2_tx_get_txpwr_adj,
index 57687df83268705b5adedf3e0e2921cfe5f03149..6d12b67cce117b38cacf07926b03e7fc327edc15 100644 (file)
@@ -141,7 +141,7 @@ struct mt76x02_dev *mt76x2u_alloc_device(struct device *pdev)
                .tx_prepare_skb = mt76x02u_tx_prepare_skb,
                .tx_complete_skb = mt76x02_tx_complete_skb,
                .tx_status_data = mt76x02_tx_status_data,
-               .rx_skb = mt76x2_queue_rx_skb,
+               .rx_skb = mt76x02_queue_rx_skb,
        };
        struct mt76x02_dev *dev;
        struct mt76_dev *mdev;