aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@gmail.com>2010-06-29 15:41:40 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-30 15:00:50 -0400
commite513a0b6f1bf8e1b59b0e1382d4e7ef3d344d535 (patch)
tree6cc2ff94dd486eb4b5eb7b6d2aabc0bff4b033c5 /drivers/net/wireless
parent78eea11b0e6ae5771bc19cc46984f1cdcbbb6ba1 (diff)
rt2x00: Move common txdone handling to rt2x00lib_txdone.
Now that the write_tx_data functions are merged, also merge the relevant parts of the txdone handling into common code, rather than {usb,pci} specific code. Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2800pci.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c15
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00pci.c31
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00pci.h8
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c11
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c4
8 files changed, 20 insertions, 55 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 1ad3596cb41e..3bedf566c8ee 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -1229,7 +1229,7 @@ static void rt2400pci_txdone(struct rt2x00_dev *rt2x00dev,
1229 } 1229 }
1230 txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT); 1230 txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT);
1231 1231
1232 rt2x00pci_txdone(entry, &txdesc); 1232 rt2x00lib_txdone(entry, &txdesc);
1233 } 1233 }
1234} 1234}
1235 1235
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 2771ae707a34..69d231d83952 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1365,7 +1365,7 @@ static void rt2500pci_txdone(struct rt2x00_dev *rt2x00dev,
1365 } 1365 }
1366 txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT); 1366 txdesc.retry = rt2x00_get_field32(word, TXD_W0_RETRY_COUNT);
1367 1367
1368 rt2x00pci_txdone(entry, &txdesc); 1368 rt2x00lib_txdone(entry, &txdesc);
1369 } 1369 }
1370} 1370}
1371 1371
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 615a865351a2..894a43a8909e 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -905,7 +905,7 @@ static void rt2800pci_txdone(struct rt2x00_dev *rt2x00dev)
905 if (txdesc.retry) 905 if (txdesc.retry)
906 __set_bit(TXDONE_FALLBACK, &txdesc.flags); 906 __set_bit(TXDONE_FALLBACK, &txdesc.flags);
907 907
908 rt2x00pci_txdone(entry, &txdesc); 908 rt2x00lib_txdone(entry, &txdesc);
909 } 909 }
910} 910}
911 911
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index a914855099b7..12ee7bdedd02 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -211,6 +211,21 @@ void rt2x00lib_txdone(struct queue_entry *entry,
211 bool success; 211 bool success;
212 212
213 /* 213 /*
214 * Unmap the skb.
215 */
216 rt2x00queue_unmap_skb(rt2x00dev, entry->skb);
217
218 /*
219 * Remove the extra tx headroom from the skb.
220 */
221 skb_pull(entry->skb, rt2x00dev->ops->extra_tx_headroom);
222
223 /*
224 * Signal that the TX descriptor is no longer in the skb.
225 */
226 skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
227
228 /*
214 * Remove L2 padding which was added during 229 * Remove L2 padding which was added during
215 */ 230 */
216 if (test_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags)) 231 if (test_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags))
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
index 1c9ccc30b6a4..fc9da8358784 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
@@ -60,37 +60,6 @@ int rt2x00pci_regbusy_read(struct rt2x00_dev *rt2x00dev,
60} 60}
61EXPORT_SYMBOL_GPL(rt2x00pci_regbusy_read); 61EXPORT_SYMBOL_GPL(rt2x00pci_regbusy_read);
62 62
63/*
64 * TX/RX data handlers.
65 */
66void rt2x00pci_txdone(struct queue_entry *entry,
67 struct txdone_entry_desc *txdesc)
68{
69 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
70 struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
71
72 /*
73 * Unmap the skb.
74 */
75 rt2x00queue_unmap_skb(rt2x00dev, entry->skb);
76
77 /*
78 * Remove the extra tx headroom from the skb.
79 */
80 skb_pull(entry->skb, rt2x00dev->ops->extra_tx_headroom);
81
82 /*
83 * Signal that the TX descriptor is no longer in the skb.
84 */
85 skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
86
87 /*
88 * Pass on to rt2x00lib.
89 */
90 rt2x00lib_txdone(entry, txdesc);
91}
92EXPORT_SYMBOL_GPL(rt2x00pci_txdone);
93
94void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) 63void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev)
95{ 64{
96 struct data_queue *queue = rt2x00dev->rx; 65 struct data_queue *queue = rt2x00dev->rx;
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.h b/drivers/net/wireless/rt2x00/rt2x00pci.h
index 2dca18532f2e..b854d62ff99b 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.h
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.h
@@ -99,14 +99,6 @@ struct queue_entry_priv_pci {
99}; 99};
100 100
101/** 101/**
102 * rt2x00pci_txdone - Handle TX done events.
103 * @entry: The queue entry for which a TX done event was received.
104 * @txdesc: The TX done descriptor for the entry.
105 */
106void rt2x00pci_txdone(struct queue_entry *entry,
107 struct txdone_entry_desc *txdesc);
108
109/**
110 * rt2x00pci_rxdone - Handle RX done events 102 * rt2x00pci_rxdone - Handle RX done events
111 * @rt2x00dev: Device pointer, see &struct rt2x00_dev. 103 * @rt2x00dev: Device pointer, see &struct rt2x00_dev.
112 */ 104 */
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index f78ebb4d8cf1..a22837c560fd 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -171,7 +171,6 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb)
171{ 171{
172 struct queue_entry *entry = (struct queue_entry *)urb->context; 172 struct queue_entry *entry = (struct queue_entry *)urb->context;
173 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; 173 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
174 struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
175 struct txdone_entry_desc txdesc; 174 struct txdone_entry_desc txdesc;
176 175
177 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags) || 176 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags) ||
@@ -179,16 +178,6 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb)
179 return; 178 return;
180 179
181 /* 180 /*
182 * Remove the descriptor from the front of the skb.
183 */
184 skb_pull(entry->skb, entry->queue->desc_size);
185
186 /*
187 * Signal that the TX descriptor is no longer in the skb.
188 */
189 skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
190
191 /*
192 * Obtain the status about this packet. 181 * Obtain the status about this packet.
193 * Note that when the status is 0 it does not mean the 182 * Note that when the status is 0 it does not mean the
194 * frame was send out correctly. It only means the frame 183 * frame was send out correctly. It only means the frame
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index cb6e20a1046e..1e74f8c1b9c5 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2108,7 +2108,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
2108 __set_bit(TXDONE_UNKNOWN, &txdesc.flags); 2108 __set_bit(TXDONE_UNKNOWN, &txdesc.flags);
2109 txdesc.retry = 0; 2109 txdesc.retry = 0;
2110 2110
2111 rt2x00pci_txdone(entry_done, &txdesc); 2111 rt2x00lib_txdone(entry_done, &txdesc);
2112 entry_done = rt2x00queue_get_entry(queue, Q_INDEX_DONE); 2112 entry_done = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
2113 } 2113 }
2114 2114
@@ -2135,7 +2135,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
2135 if (txdesc.retry) 2135 if (txdesc.retry)
2136 __set_bit(TXDONE_FALLBACK, &txdesc.flags); 2136 __set_bit(TXDONE_FALLBACK, &txdesc.flags);
2137 2137
2138 rt2x00pci_txdone(entry, &txdesc); 2138 rt2x00lib_txdone(entry, &txdesc);
2139 } 2139 }
2140} 2140}
2141 2141