]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mt76: move mt76x02_mac_poll_tx_status in mt76x02-lib moudle
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Fri, 5 Oct 2018 08:28:34 +0000 (10:28 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 5 Oct 2018 18:05:46 +0000 (20:05 +0200)
Move mt76x02_mac_poll_tx_status in mt76x02_mac.c in order to
be reused by mt76x0 drivers for irq unification.
Moreover introduce mt76x02_trace source file to define mt76x02
trace points

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/Makefile
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
drivers/net/wireless/mediatek/mt76/mt76x02_mac.h
drivers/net/wireless/mediatek/mt76/mt76x02_trace.c [new file with mode: 0644]
drivers/net/wireless/mediatek/mt76/mt76x02_trace.h [new file with mode: 0644]
drivers/net/wireless/mediatek/mt76/mt76x2/mac.h
drivers/net/wireless/mediatek/mt76/mt76x2/pci_core.c
drivers/net/wireless/mediatek/mt76/mt76x2/pci_dma.c
drivers/net/wireless/mediatek/mt76/mt76x2/pci_mac.c
drivers/net/wireless/mediatek/mt76/mt76x2/trace.h

index 09c90eef61a4815c8fe2ddd2e1266dd051367e01..9b8d7488c5454dfe1d17aea07db022b61400bcf1 100644 (file)
@@ -10,10 +10,11 @@ mt76-usb-y := usb.o usb_trace.o usb_mcu.o
 
 CFLAGS_trace.o := -I$(src)
 CFLAGS_usb_trace.o := -I$(src)
+CFLAGS_mt76x02_trace.o := -I$(src)
 
 mt76x02-lib-y := mt76x02_util.o mt76x02_mac.o mt76x02_mcu.o \
                 mt76x02_eeprom.o mt76x02_phy.o mt76x02_mmio.o \
-                mt76x02_txrx.o
+                mt76x02_txrx.o mt76x02_trace.o
 
 mt76x02-usb-y := mt76x02_usb_mcu.o mt76x02_usb_core.o
 
index a5058e4a9b14fbfd538c3d54a0030070ed6d9725..a39c10b61df90d6e3234ae7eae2607d29c5e4878 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include "mt76x02.h"
+#include "mt76x02_trace.h"
 
 enum mt76x02_cipher_type
 mt76x02_mac_get_key_info(struct ieee80211_key_conf *key, u8 *key_data)
@@ -681,3 +682,35 @@ int mt76x02_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
 
        return mt76x02_mac_process_rate(status, rate);
 }
+
+void mt76x02_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq)
+{
+       struct mt76x02_tx_status stat = {};
+       unsigned long flags;
+       u8 update = 1;
+       bool ret;
+
+       if (!test_bit(MT76_STATE_RUNNING, &dev->mt76.state))
+               return;
+
+       trace_mac_txstat_poll(dev);
+
+       while (!irq || !kfifo_is_full(&dev->txstatus_fifo)) {
+               spin_lock_irqsave(&dev->mt76.mmio.irq_lock, flags);
+               ret = mt76x02_mac_load_tx_status(&dev->mt76, &stat);
+               spin_unlock_irqrestore(&dev->mt76.mmio.irq_lock, flags);
+
+               if (!ret)
+                       break;
+
+               trace_mac_txstat_fetch(dev, &stat);
+
+               if (!irq) {
+                       mt76x02_send_tx_status(&dev->mt76, &stat, &update);
+                       continue;
+               }
+
+               kfifo_put(&dev->txstatus_fifo, stat);
+       }
+}
+EXPORT_SYMBOL_GPL(mt76x02_mac_poll_tx_status);
index 857ab2308e8b04d11ff064dc975457dc2b30d7b3..426e68041642a1fa491df6be4702a2353f439700 100644 (file)
@@ -205,4 +205,5 @@ void mt76x02_mac_setaddr(struct mt76_dev *dev, u8 *addr);
 void mt76x02_mac_write_txwi(struct mt76_dev *dev, struct mt76x02_txwi *txwi,
                            struct sk_buff *skb, struct mt76_wcid *wcid,
                            struct ieee80211_sta *sta, int len);
+void mt76x02_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq);
 #endif
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_trace.c b/drivers/net/wireless/mediatek/mt76/mt76x02_trace.c
new file mode 100644 (file)
index 0000000..5b42d2c
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>
+ *
+ * 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 <linux/module.h>
+
+#ifndef __CHECKER__
+#define CREATE_TRACE_POINTS
+#include "mt76x02_trace.h"
+
+#endif
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_trace.h b/drivers/net/wireless/mediatek/mt76/mt76x02_trace.h
new file mode 100644 (file)
index 0000000..98580dd
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>
+ *
+ * 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.
+ */
+
+#if !defined(__MT76x02_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
+#define __MT76x02_TRACE_H
+
+#include <linux/tracepoint.h>
+#include "mt76x02.h"
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM mt76x02
+
+#define MAXNAME                32
+#define DEV_ENTRY      __array(char, wiphy_name, 32)
+#define DEV_ASSIGN     strlcpy(__entry->wiphy_name, wiphy_name(mt76_hw(dev)->wiphy), MAXNAME)
+#define DEV_PR_FMT     "%s"
+#define DEV_PR_ARG     __entry->wiphy_name
+
+#define TXID_ENTRY     __field(u8, wcid) __field(u8, pktid)
+#define TXID_ASSIGN    __entry->wcid = wcid; __entry->pktid = pktid
+#define TXID_PR_FMT    " [%d:%d]"
+#define TXID_PR_ARG    __entry->wcid, __entry->pktid
+
+DECLARE_EVENT_CLASS(dev_evt,
+       TP_PROTO(struct mt76x02_dev *dev),
+       TP_ARGS(dev),
+       TP_STRUCT__entry(
+               DEV_ENTRY
+       ),
+       TP_fast_assign(
+               DEV_ASSIGN;
+       ),
+       TP_printk(DEV_PR_FMT, DEV_PR_ARG)
+);
+
+DEFINE_EVENT(dev_evt, mac_txstat_poll,
+       TP_PROTO(struct mt76x02_dev *dev),
+       TP_ARGS(dev)
+);
+
+TRACE_EVENT(mac_txstat_fetch,
+       TP_PROTO(struct mt76x02_dev *dev,
+                struct mt76x02_tx_status *stat),
+
+       TP_ARGS(dev, stat),
+
+       TP_STRUCT__entry(
+               DEV_ENTRY
+               TXID_ENTRY
+               __field(bool, success)
+               __field(bool, aggr)
+               __field(bool, ack_req)
+               __field(u16, rate)
+               __field(u8, retry)
+       ),
+
+       TP_fast_assign(
+               DEV_ASSIGN;
+               __entry->success = stat->success;
+               __entry->aggr = stat->aggr;
+               __entry->ack_req = stat->ack_req;
+               __entry->wcid = stat->wcid;
+               __entry->pktid = stat->pktid;
+               __entry->rate = stat->rate;
+               __entry->retry = stat->retry;
+       ),
+
+       TP_printk(
+               DEV_PR_FMT TXID_PR_FMT
+               " success:%d aggr:%d ack_req:%d"
+               " rate:%04x retry:%d",
+               DEV_PR_ARG, TXID_PR_ARG,
+               __entry->success, __entry->aggr, __entry->ack_req,
+               __entry->rate, __entry->retry
+       )
+);
+
+#endif
+
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH .
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE mt76x02_trace
+
+#include <trace/define_trace.h>
index 6bd04b74e15a1393d96b6aab41a499f55e199b95..6a6761050035f25246d877f244300ddd3f188f3a 100644 (file)
@@ -49,7 +49,6 @@ int mt76x2_mac_set_beacon(struct mt76x02_dev *dev, u8 vif_idx,
                          struct sk_buff *skb);
 void mt76x2_mac_set_beacon_enable(struct mt76x02_dev *dev, u8 vif_idx, bool val);
 
-void mt76x2_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq);
 void mt76x2_mac_process_tx_status_fifo(struct mt76x02_dev *dev);
 
 void mt76x2_mac_work(struct work_struct *work);
index 1738e025a57ed633de4b5f974d6cca2dfdda3520..2abd891f229a1bd458e800470441bc2cf56608dd 100644 (file)
@@ -61,7 +61,7 @@ irqreturn_t mt76x2_irq_handler(int irq, void *dev_instance)
                mt76_queue_kick(dev, &dev->mt76.q_tx[MT_TXQ_PSD]);
 
        if (intr & MT_INT_TX_STAT) {
-               mt76x2_mac_poll_tx_status(dev, true);
+               mt76x02_mac_poll_tx_status(dev, true);
                tasklet_schedule(&dev->tx_tasklet);
        }
 
index 2859812ac47a94e64e2182c1f529fb9d9dbbcbb4..bfb590d6f288d8cb8b3dcb30e0768272ec8d418e 100644 (file)
@@ -26,7 +26,7 @@ void mt76x2_tx_tasklet(unsigned long data)
        for (i = MT_TXQ_MCU; i >= 0; i--)
                mt76_queue_tx_cleanup(dev, i, false);
 
-       mt76x2_mac_poll_tx_status(dev, false);
+       mt76x02_mac_poll_tx_status(dev, false);
        mt76x02_irq_enable(&dev->mt76, MT_INT_TX_DONE_ALL);
 }
 
index 981633cbd527dc20e7d4e619a5e0e90213e5b73b..8017db8a341bdc0da5d066d4c17da5a0953d0f47 100644 (file)
@@ -28,37 +28,6 @@ void mt76x2_mac_set_bssid(struct mt76x02_dev *dev, u8 idx, const u8 *addr)
                       get_unaligned_le16(addr + 4));
 }
 
-void mt76x2_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq)
-{
-       struct mt76x02_tx_status stat = {};
-       unsigned long flags;
-       u8 update = 1;
-       bool ret;
-
-       if (!test_bit(MT76_STATE_RUNNING, &dev->mt76.state))
-               return;
-
-       trace_mac_txstat_poll(dev);
-
-       while (!irq || !kfifo_is_full(&dev->txstatus_fifo)) {
-               spin_lock_irqsave(&dev->mt76.mmio.irq_lock, flags);
-               ret = mt76x02_mac_load_tx_status(&dev->mt76, &stat);
-               spin_unlock_irqrestore(&dev->mt76.mmio.irq_lock, flags);
-
-               if (!ret)
-                       break;
-
-               trace_mac_txstat_fetch(dev, &stat);
-
-               if (!irq) {
-                       mt76x02_send_tx_status(&dev->mt76, &stat, &update);
-                       continue;
-               }
-
-               kfifo_put(&dev->txstatus_fifo, stat);
-       }
-}
-
 static void
 mt76x2_mac_queue_txdone(struct mt76x02_dev *dev, struct sk_buff *skb,
                        void *txwi_ptr)
@@ -66,7 +35,7 @@ mt76x2_mac_queue_txdone(struct mt76x02_dev *dev, struct sk_buff *skb,
        struct mt76x2_tx_info *txi = mt76x2_skb_tx_info(skb);
        struct mt76x02_txwi *txwi = txwi_ptr;
 
-       mt76x2_mac_poll_tx_status(dev, false);
+       mt76x02_mac_poll_tx_status(dev, false);
 
        txi->tries = 0;
        txi->jiffies = jiffies;
index ef88623fa6c997d5eb1724e31738fc22d80985ac..8a49657380b499ad432a5a2ba76295e0963aef8b 100644 (file)
 #define TXID_PR_FMT    " [%d:%d]"
 #define TXID_PR_ARG    __entry->wcid, __entry->pktid
 
-DECLARE_EVENT_CLASS(dev_evt,
-       TP_PROTO(struct mt76x02_dev *dev),
-       TP_ARGS(dev),
-       TP_STRUCT__entry(
-               DEV_ENTRY
-       ),
-       TP_fast_assign(
-               DEV_ASSIGN;
-       ),
-       TP_printk(DEV_PR_FMT, DEV_PR_ARG)
-);
-
 DECLARE_EVENT_CLASS(dev_txid_evt,
        TP_PROTO(struct mt76x02_dev *dev, u8 wcid, u8 pktid),
        TP_ARGS(dev, wcid, pktid),
@@ -63,54 +51,11 @@ DECLARE_EVENT_CLASS(dev_txid_evt,
        )
 );
 
-DEFINE_EVENT(dev_evt, mac_txstat_poll,
-       TP_PROTO(struct mt76x02_dev *dev),
-       TP_ARGS(dev)
-);
-
 DEFINE_EVENT(dev_txid_evt, mac_txdone_add,
        TP_PROTO(struct mt76x02_dev *dev, u8 wcid, u8 pktid),
        TP_ARGS(dev, wcid, pktid)
 );
 
-TRACE_EVENT(mac_txstat_fetch,
-       TP_PROTO(struct mt76x02_dev *dev,
-                struct mt76x02_tx_status *stat),
-
-       TP_ARGS(dev, stat),
-
-       TP_STRUCT__entry(
-               DEV_ENTRY
-               TXID_ENTRY
-               __field(bool, success)
-               __field(bool, aggr)
-               __field(bool, ack_req)
-               __field(u16, rate)
-               __field(u8, retry)
-       ),
-
-       TP_fast_assign(
-               DEV_ASSIGN;
-               __entry->success = stat->success;
-               __entry->aggr = stat->aggr;
-               __entry->ack_req = stat->ack_req;
-               __entry->wcid = stat->wcid;
-               __entry->pktid = stat->pktid;
-               __entry->rate = stat->rate;
-               __entry->retry = stat->retry;
-       ),
-
-       TP_printk(
-               DEV_PR_FMT TXID_PR_FMT
-               " success:%d aggr:%d ack_req:%d"
-               " rate:%04x retry:%d",
-               DEV_PR_ARG, TXID_PR_ARG,
-               __entry->success, __entry->aggr, __entry->ack_req,
-               __entry->rate, __entry->retry
-       )
-);
-
-
 TRACE_EVENT(dev_irq,
        TP_PROTO(struct mt76x02_dev *dev, u32 val, u32 mask),