aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43/xmit.h
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2008-03-29 16:01:16 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-04-08 15:05:56 -0400
commit5100d5ac81b9330dc57e35adbe50923ba6107b8f (patch)
tree48224236b50703606c97c05ec077fde4880fc3b9 /drivers/net/wireless/b43/xmit.h
parent3109ece1114293b8201d9c140d02d7ce9a9fa387 (diff)
b43: Add PIO support for PCMCIA devices
This adds PIO support back (D'oh!) for PCMCIA devices. This is a complete rewrite of the old PIO code. It does actually work and we get reasonable performance out of it on a modern machine. On a PowerBook G4 I get a few MBit for TX and a few more for RX. So it doesn't work as well as DMA (of course), but it's a _lot_ faster than the old PIO code (only got a few kBit with that). The limiting factor is the host CPU speed. So it will generate 100% CPU usage when the network interface is heavily loaded. A voluntary preemption point in the RX path makes sure Desktop Latency isn't hurt. PIO is needed for 16bit PCMCIA devices, as we really don't want to poke with the braindead DMA mechanisms on PCMCIA sockets. Additionally, not all PCMCIA sockets do actually support DMA in 16bit mode (mine doesn't). Signed-off-by: Michael Buesch <mb@bu3sch.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/b43/xmit.h')
-rw-r--r--drivers/net/wireless/b43/xmit.h17
1 files changed, 2 insertions, 15 deletions
diff --git a/drivers/net/wireless/b43/xmit.h b/drivers/net/wireless/b43/xmit.h
index bf58a8a85258..4f26988a5132 100644
--- a/drivers/net/wireless/b43/xmit.h
+++ b/drivers/net/wireless/b43/xmit.h
@@ -207,18 +207,6 @@ enum {
207 B43_TXST_SUPP_ABNACK, /* Afterburner NACK */ 207 B43_TXST_SUPP_ABNACK, /* Afterburner NACK */
208}; 208};
209 209
210/* Transmit Status as received through DMA/PIO on old chips */
211struct b43_hwtxstatus {
212 PAD_BYTES(4);
213 __le16 cookie;
214 u8 flags;
215 u8 count;
216 PAD_BYTES(2);
217 __le16 seq;
218 u8 phy_stat;
219 PAD_BYTES(1);
220} __attribute__ ((__packed__));
221
222/* Receive header for v4 firmware. */ 210/* Receive header for v4 firmware. */
223struct b43_rxhdr_fw4 { 211struct b43_rxhdr_fw4 {
224 __le16 frame_len; /* Frame length */ 212 __le16 frame_len; /* Frame length */
@@ -295,9 +283,8 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr);
295 283
296void b43_handle_txstatus(struct b43_wldev *dev, 284void b43_handle_txstatus(struct b43_wldev *dev,
297 const struct b43_txstatus *status); 285 const struct b43_txstatus *status);
298 286bool b43_fill_txstatus_report(struct ieee80211_tx_status *report,
299void b43_handle_hwtxstatus(struct b43_wldev *dev, 287 const struct b43_txstatus *status);
300 const struct b43_hwtxstatus *hw);
301 288
302void b43_tx_suspend(struct b43_wldev *dev); 289void b43_tx_suspend(struct b43_wldev *dev);
303void b43_tx_resume(struct b43_wldev *dev); 290void b43_tx_resume(struct b43_wldev *dev);