OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | From 2bbea7645c3d095014a080db170941818650e141 Mon Sep 17 00:00:00 2001 |
2 | From: Stanislaw Gruszka <sgruszka@redhat.com> |
||
3 | Date: Sat, 9 Feb 2019 12:08:33 +0100 |
||
4 | X-Patchwork-Submitter: Stanislaw Gruszka <sgruszka@redhat.com> |
||
5 | X-Patchwork-Id: 10804441 |
||
6 | X-Patchwork-Delegate: kvalo@adurom.com |
||
7 | Subject: [PATCH 23/28] rt2800: move txstatus pending routine |
||
8 | |||
9 | Move rt2800usb_txstatus_pending routine to rt2800lib. It will be reused |
||
10 | by rt2800mmio code. |
||
11 | |||
12 | Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> |
||
13 | --- |
||
14 | .../net/wireless/ralink/rt2x00/rt2800lib.c | 17 ++++++++++++++ |
||
15 | .../net/wireless/ralink/rt2x00/rt2800lib.h | 1 + |
||
16 | .../net/wireless/ralink/rt2x00/rt2800usb.c | 22 +++---------------- |
||
17 | 3 files changed, 21 insertions(+), 19 deletions(-) |
||
18 | |||
19 | --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c |
||
20 | +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c |
||
21 | @@ -1183,6 +1183,23 @@ bool rt2800_txstatus_timeout(struct rt2x |
||
22 | } |
||
23 | EXPORT_SYMBOL_GPL(rt2800_txstatus_timeout); |
||
24 | |||
25 | +/* |
||
26 | + * test if there is an entry in any TX queue for which DMA is done |
||
27 | + * but the TX status has not been returned yet |
||
28 | + */ |
||
29 | +bool rt2800_txstatus_pending(struct rt2x00_dev *rt2x00dev) |
||
30 | +{ |
||
31 | + struct data_queue *queue; |
||
32 | + |
||
33 | + tx_queue_for_each(rt2x00dev, queue) { |
||
34 | + if (rt2x00queue_get_entry(queue, Q_INDEX_DMA_DONE) != |
||
35 | + rt2x00queue_get_entry(queue, Q_INDEX_DONE)) |
||
36 | + return true; |
||
37 | + } |
||
38 | + return false; |
||
39 | +} |
||
40 | +EXPORT_SYMBOL_GPL(rt2800_txstatus_pending); |
||
41 | + |
||
42 | void rt2800_txdone_nostatus(struct rt2x00_dev *rt2x00dev) |
||
43 | { |
||
44 | struct data_queue *queue; |
||
45 | --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h |
||
46 | +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h |
||
47 | @@ -198,6 +198,7 @@ void rt2800_txdone_entry(struct queue_en |
||
48 | void rt2800_txdone(struct rt2x00_dev *rt2x00dev, unsigned int quota); |
||
49 | void rt2800_txdone_nostatus(struct rt2x00_dev *rt2x00dev); |
||
50 | bool rt2800_txstatus_timeout(struct rt2x00_dev *rt2x00dev); |
||
51 | +bool rt2800_txstatus_pending(struct rt2x00_dev *rt2x00dev); |
||
52 | |||
53 | void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc); |
||
54 | void rt2800_clear_beacon(struct queue_entry *entry); |
||
55 | --- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c |
||
56 | +++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c |
||
57 | @@ -100,22 +100,6 @@ static void rt2800usb_stop_queue(struct |
||
58 | } |
||
59 | } |
||
60 | |||
61 | -/* |
||
62 | - * test if there is an entry in any TX queue for which DMA is done |
||
63 | - * but the TX status has not been returned yet |
||
64 | - */ |
||
65 | -static bool rt2800usb_txstatus_pending(struct rt2x00_dev *rt2x00dev) |
||
66 | -{ |
||
67 | - struct data_queue *queue; |
||
68 | - |
||
69 | - tx_queue_for_each(rt2x00dev, queue) { |
||
70 | - if (rt2x00queue_get_entry(queue, Q_INDEX_DMA_DONE) != |
||
71 | - rt2x00queue_get_entry(queue, Q_INDEX_DONE)) |
||
72 | - return true; |
||
73 | - } |
||
74 | - return false; |
||
75 | -} |
||
76 | - |
||
77 | #define TXSTATUS_READ_INTERVAL 1000000 |
||
78 | |||
79 | static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev, |
||
80 | @@ -145,7 +129,7 @@ static bool rt2800usb_tx_sta_fifo_read_c |
||
81 | if (rt2800_txstatus_timeout(rt2x00dev)) |
||
82 | queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work); |
||
83 | |||
84 | - if (rt2800usb_txstatus_pending(rt2x00dev)) { |
||
85 | + if (rt2800_txstatus_pending(rt2x00dev)) { |
||
86 | /* Read register after 1 ms */ |
||
87 | hrtimer_start(&rt2x00dev->txstatus_timer, |
||
88 | TXSTATUS_READ_INTERVAL, |
||
89 | @@ -160,7 +144,7 @@ stop_reading: |
||
90 | * clear_bit someone could do rt2x00usb_interrupt_txdone, so recheck |
||
91 | * here again if status reading is needed. |
||
92 | */ |
||
93 | - if (rt2800usb_txstatus_pending(rt2x00dev) && |
||
94 | + if (rt2800_txstatus_pending(rt2x00dev) && |
||
95 | !test_and_set_bit(TX_STATUS_READING, &rt2x00dev->flags)) |
||
96 | return true; |
||
97 | else |
||
98 | @@ -489,7 +473,7 @@ static void rt2800usb_work_txdone(struct |
||
99 | * if the medium is busy, thus the TX_STA_FIFO entry is |
||
100 | * also delayed -> use a timer to retrieve it. |
||
101 | */ |
||
102 | - if (rt2800usb_txstatus_pending(rt2x00dev)) |
||
103 | + if (rt2800_txstatus_pending(rt2x00dev)) |
||
104 | rt2800usb_async_read_tx_status(rt2x00dev); |
||
105 | } |
||
106 | } |