aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt61pci.c
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@kpnplanet.nl>2008-06-16 13:56:31 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-06-26 16:49:16 -0400
commitc4da004857056e6ee034c4110ccdcba659077b7e (patch)
tree641f8d9ddab7b8b6ba41fefc57a517abce15e8e6 /drivers/net/wireless/rt2x00/rt61pci.c
parent30caa6e3d586442f7c3ad081260ee1b22bb123de (diff)
rt2x00: Replace statically allocated DMA buffers with mapped skb's.
The current PCI drivers require a lot of pre-allocated DMA buffers. Reduce this by using dynamically mapped skb's (using pci_map_single) instead of the pre- allocated DMA buffers that are allocated at device start-up time. At the same time move common RX path code into rt2x00lib from rt2x00pci and rt2x00usb, as the RX paths now are now almost the same. Signed-off-by: Gertjan van Wingerde <gwingerde@kpnplanet.nl> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt61pci.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 2a7f30620356..c9f6d4844139 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -1030,11 +1030,12 @@ static void rt61pci_init_rxentry(struct rt2x00_dev *rt2x00dev,
1030 struct queue_entry *entry) 1030 struct queue_entry *entry)
1031{ 1031{
1032 struct queue_entry_priv_pci *entry_priv = entry->priv_data; 1032 struct queue_entry_priv_pci *entry_priv = entry->priv_data;
1033 struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
1033 u32 word; 1034 u32 word;
1034 1035
1035 rt2x00_desc_read(entry_priv->desc, 5, &word); 1036 rt2x00_desc_read(entry_priv->desc, 5, &word);
1036 rt2x00_set_field32(&word, RXD_W5_BUFFER_PHYSICAL_ADDRESS, 1037 rt2x00_set_field32(&word, RXD_W5_BUFFER_PHYSICAL_ADDRESS,
1037 entry_priv->data_dma); 1038 skbdesc->skb_dma);
1038 rt2x00_desc_write(entry_priv->desc, 5, word); 1039 rt2x00_desc_write(entry_priv->desc, 5, word);
1039 1040
1040 rt2x00_desc_read(entry_priv->desc, 0, &word); 1041 rt2x00_desc_read(entry_priv->desc, 0, &word);
@@ -1522,7 +1523,6 @@ static void rt61pci_write_tx_desc(struct rt2x00_dev *rt2x00dev,
1522 struct txentry_desc *txdesc) 1523 struct txentry_desc *txdesc)
1523{ 1524{
1524 struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); 1525 struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb);
1525 struct queue_entry_priv_pci *entry_priv = skbdesc->entry->priv_data;
1526 __le32 *txd = skbdesc->desc; 1526 __le32 *txd = skbdesc->desc;
1527 u32 word; 1527 u32 word;
1528 1528
@@ -1557,7 +1557,7 @@ static void rt61pci_write_tx_desc(struct rt2x00_dev *rt2x00dev,
1557 1557
1558 rt2x00_desc_read(txd, 6, &word); 1558 rt2x00_desc_read(txd, 6, &word);
1559 rt2x00_set_field32(&word, TXD_W6_BUFFER_PHYSICAL_ADDRESS, 1559 rt2x00_set_field32(&word, TXD_W6_BUFFER_PHYSICAL_ADDRESS,
1560 entry_priv->data_dma); 1560 skbdesc->skb_dma);
1561 rt2x00_desc_write(txd, 6, word); 1561 rt2x00_desc_write(txd, 6, word);
1562 1562
1563 if (skbdesc->desc_len > TXINFO_SIZE) { 1563 if (skbdesc->desc_len > TXINFO_SIZE) {
@@ -2302,9 +2302,10 @@ static int rt61pci_probe_hw(struct rt2x00_dev *rt2x00dev)
2302 rt61pci_probe_hw_mode(rt2x00dev); 2302 rt61pci_probe_hw_mode(rt2x00dev);
2303 2303
2304 /* 2304 /*
2305 * This device requires firmware. 2305 * This device requires firmware and DMA mapped skbs.
2306 */ 2306 */
2307 __set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags); 2307 __set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags);
2308 __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
2308 2309
2309 /* 2310 /*
2310 * Set the rssi offset. 2311 * Set the rssi offset.