diff options
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00queue.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00queue.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.h | 5 |
15 files changed, 42 insertions, 11 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index fb02d118075b..b4310d798f94 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
@@ -1373,7 +1373,6 @@ static void rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
1373 | rt2x00dev->hw->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | | 1373 | rt2x00dev->hw->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | |
1374 | IEEE80211_HW_SIGNAL_DBM; | 1374 | IEEE80211_HW_SIGNAL_DBM; |
1375 | rt2x00dev->hw->extra_tx_headroom = 0; | 1375 | rt2x00dev->hw->extra_tx_headroom = 0; |
1376 | rt2x00dev->hw->queues = 2; | ||
1377 | 1376 | ||
1378 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); | 1377 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); |
1379 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, | 1378 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, |
@@ -1620,6 +1619,7 @@ static const struct rt2x00_ops rt2400pci_ops = { | |||
1620 | .max_ap_intf = 1, | 1619 | .max_ap_intf = 1, |
1621 | .eeprom_size = EEPROM_SIZE, | 1620 | .eeprom_size = EEPROM_SIZE, |
1622 | .rf_size = RF_SIZE, | 1621 | .rf_size = RF_SIZE, |
1622 | .tx_queues = NUM_TX_QUEUES, | ||
1623 | .rx = &rt2400pci_queue_rx, | 1623 | .rx = &rt2400pci_queue_rx, |
1624 | .tx = &rt2400pci_queue_tx, | 1624 | .tx = &rt2400pci_queue_tx, |
1625 | .bcn = &rt2400pci_queue_bcn, | 1625 | .bcn = &rt2400pci_queue_bcn, |
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.h b/drivers/net/wireless/rt2x00/rt2400pci.h index a5210f9a3360..e9aa326be9f6 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.h +++ b/drivers/net/wireless/rt2x00/rt2400pci.h | |||
@@ -52,6 +52,11 @@ | |||
52 | #define RF_SIZE 0x0010 | 52 | #define RF_SIZE 0x0010 |
53 | 53 | ||
54 | /* | 54 | /* |
55 | * Number of TX queues. | ||
56 | */ | ||
57 | #define NUM_TX_QUEUES 2 | ||
58 | |||
59 | /* | ||
55 | * Control/Status Registers(CSR). | 60 | * Control/Status Registers(CSR). |
56 | * Some values are set in TU, whereas 1 TU == 1024 us. | 61 | * Some values are set in TU, whereas 1 TU == 1024 us. |
57 | */ | 62 | */ |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 1724ce90f8b1..54aaa8375a2c 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
@@ -1692,7 +1692,6 @@ static void rt2500pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
1692 | IEEE80211_HW_SIGNAL_DBM; | 1692 | IEEE80211_HW_SIGNAL_DBM; |
1693 | 1693 | ||
1694 | rt2x00dev->hw->extra_tx_headroom = 0; | 1694 | rt2x00dev->hw->extra_tx_headroom = 0; |
1695 | rt2x00dev->hw->queues = 2; | ||
1696 | 1695 | ||
1697 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); | 1696 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); |
1698 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, | 1697 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, |
@@ -1933,6 +1932,7 @@ static const struct rt2x00_ops rt2500pci_ops = { | |||
1933 | .max_ap_intf = 1, | 1932 | .max_ap_intf = 1, |
1934 | .eeprom_size = EEPROM_SIZE, | 1933 | .eeprom_size = EEPROM_SIZE, |
1935 | .rf_size = RF_SIZE, | 1934 | .rf_size = RF_SIZE, |
1935 | .tx_queues = NUM_TX_QUEUES, | ||
1936 | .rx = &rt2500pci_queue_rx, | 1936 | .rx = &rt2500pci_queue_rx, |
1937 | .tx = &rt2500pci_queue_tx, | 1937 | .tx = &rt2500pci_queue_tx, |
1938 | .bcn = &rt2500pci_queue_bcn, | 1938 | .bcn = &rt2500pci_queue_bcn, |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.h b/drivers/net/wireless/rt2x00/rt2500pci.h index 13899550465a..ea93b8f423a9 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.h +++ b/drivers/net/wireless/rt2x00/rt2500pci.h | |||
@@ -63,6 +63,11 @@ | |||
63 | #define RF_SIZE 0x0014 | 63 | #define RF_SIZE 0x0014 |
64 | 64 | ||
65 | /* | 65 | /* |
66 | * Number of TX queues. | ||
67 | */ | ||
68 | #define NUM_TX_QUEUES 2 | ||
69 | |||
70 | /* | ||
66 | * Control/Status Registers(CSR). | 71 | * Control/Status Registers(CSR). |
67 | * Some values are set in TU, whereas 1 TU == 1024 us. | 72 | * Some values are set in TU, whereas 1 TU == 1024 us. |
68 | */ | 73 | */ |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 7df06ece1b45..661cf3d7212a 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -1590,7 +1590,6 @@ static void rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
1590 | IEEE80211_HW_SIGNAL_DBM; | 1590 | IEEE80211_HW_SIGNAL_DBM; |
1591 | 1591 | ||
1592 | rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE; | 1592 | rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE; |
1593 | rt2x00dev->hw->queues = 2; | ||
1594 | 1593 | ||
1595 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev); | 1594 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev); |
1596 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, | 1595 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, |
@@ -1826,6 +1825,7 @@ static const struct rt2x00_ops rt2500usb_ops = { | |||
1826 | .max_ap_intf = 1, | 1825 | .max_ap_intf = 1, |
1827 | .eeprom_size = EEPROM_SIZE, | 1826 | .eeprom_size = EEPROM_SIZE, |
1828 | .rf_size = RF_SIZE, | 1827 | .rf_size = RF_SIZE, |
1828 | .tx_queues = NUM_TX_QUEUES, | ||
1829 | .rx = &rt2500usb_queue_rx, | 1829 | .rx = &rt2500usb_queue_rx, |
1830 | .tx = &rt2500usb_queue_tx, | 1830 | .tx = &rt2500usb_queue_tx, |
1831 | .bcn = &rt2500usb_queue_bcn, | 1831 | .bcn = &rt2500usb_queue_bcn, |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.h b/drivers/net/wireless/rt2x00/rt2500usb.h index a37a068d0c71..7d50098f0cc5 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.h +++ b/drivers/net/wireless/rt2x00/rt2500usb.h | |||
@@ -63,6 +63,11 @@ | |||
63 | #define RF_SIZE 0x0014 | 63 | #define RF_SIZE 0x0014 |
64 | 64 | ||
65 | /* | 65 | /* |
66 | * Number of TX queues. | ||
67 | */ | ||
68 | #define NUM_TX_QUEUES 2 | ||
69 | |||
70 | /* | ||
66 | * Control/Status Registers(CSR). | 71 | * Control/Status Registers(CSR). |
67 | * Some values are set in TU, whereas 1 TU == 1024 us. | 72 | * Some values are set in TU, whereas 1 TU == 1024 us. |
68 | */ | 73 | */ |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 65614841f748..6f7b34fac16c 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -591,6 +591,7 @@ struct rt2x00_ops { | |||
591 | const unsigned int max_ap_intf; | 591 | const unsigned int max_ap_intf; |
592 | const unsigned int eeprom_size; | 592 | const unsigned int eeprom_size; |
593 | const unsigned int rf_size; | 593 | const unsigned int rf_size; |
594 | const unsigned int tx_queues; | ||
594 | const struct data_queue_desc *rx; | 595 | const struct data_queue_desc *rx; |
595 | const struct data_queue_desc *tx; | 596 | const struct data_queue_desc *tx; |
596 | const struct data_queue_desc *bcn; | 597 | const struct data_queue_desc *bcn; |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index e1368f709858..46c377873f16 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -975,6 +975,11 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev) | |||
975 | return status; | 975 | return status; |
976 | 976 | ||
977 | /* | 977 | /* |
978 | * Initialize HW fields. | ||
979 | */ | ||
980 | rt2x00dev->hw->queues = rt2x00dev->ops->tx_queues; | ||
981 | |||
982 | /* | ||
978 | * Register HW. | 983 | * Register HW. |
979 | */ | 984 | */ |
980 | status = ieee80211_register_hw(rt2x00dev->hw); | 985 | status = ieee80211_register_hw(rt2x00dev->hw); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index 767e0ffce04e..c5cedb29b87d 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
@@ -456,7 +456,7 @@ int rt2x00mac_get_tx_stats(struct ieee80211_hw *hw, | |||
456 | struct rt2x00_dev *rt2x00dev = hw->priv; | 456 | struct rt2x00_dev *rt2x00dev = hw->priv; |
457 | unsigned int i; | 457 | unsigned int i; |
458 | 458 | ||
459 | for (i = 0; i < hw->queues; i++) { | 459 | for (i = 0; i < rt2x00dev->ops->tx_queues; i++) { |
460 | stats[i].len = rt2x00dev->tx[i].length; | 460 | stats[i].len = rt2x00dev->tx[i].length; |
461 | stats[i].limit = rt2x00dev->tx[i].limit; | 461 | stats[i].limit = rt2x00dev->tx[i].limit; |
462 | stats[i].count = rt2x00dev->tx[i].count; | 462 | stats[i].count = rt2x00dev->tx[i].count; |
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index e5b861f8416d..95f8dd3462f6 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c | |||
@@ -34,7 +34,7 @@ struct data_queue *rt2x00queue_get_queue(struct rt2x00_dev *rt2x00dev, | |||
34 | { | 34 | { |
35 | int atim = test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags); | 35 | int atim = test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags); |
36 | 36 | ||
37 | if (queue < rt2x00dev->hw->queues && rt2x00dev->tx) | 37 | if (queue < rt2x00dev->ops->tx_queues && rt2x00dev->tx) |
38 | return &rt2x00dev->tx[queue]; | 38 | return &rt2x00dev->tx[queue]; |
39 | 39 | ||
40 | if (!rt2x00dev->bcn) | 40 | if (!rt2x00dev->bcn) |
@@ -255,11 +255,11 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) | |||
255 | /* | 255 | /* |
256 | * We need the following queues: | 256 | * We need the following queues: |
257 | * RX: 1 | 257 | * RX: 1 |
258 | * TX: hw->queues | 258 | * TX: ops->tx_queues |
259 | * Beacon: 1 | 259 | * Beacon: 1 |
260 | * Atim: 1 (if required) | 260 | * Atim: 1 (if required) |
261 | */ | 261 | */ |
262 | rt2x00dev->data_queues = 2 + rt2x00dev->hw->queues + req_atim; | 262 | rt2x00dev->data_queues = 2 + rt2x00dev->ops->tx_queues + req_atim; |
263 | 263 | ||
264 | queue = kzalloc(rt2x00dev->data_queues * sizeof(*queue), GFP_KERNEL); | 264 | queue = kzalloc(rt2x00dev->data_queues * sizeof(*queue), GFP_KERNEL); |
265 | if (!queue) { | 265 | if (!queue) { |
@@ -272,7 +272,7 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) | |||
272 | */ | 272 | */ |
273 | rt2x00dev->rx = queue; | 273 | rt2x00dev->rx = queue; |
274 | rt2x00dev->tx = &queue[1]; | 274 | rt2x00dev->tx = &queue[1]; |
275 | rt2x00dev->bcn = &queue[1 + rt2x00dev->hw->queues]; | 275 | rt2x00dev->bcn = &queue[1 + rt2x00dev->ops->tx_queues]; |
276 | 276 | ||
277 | /* | 277 | /* |
278 | * Initialize queue parameters. | 278 | * Initialize queue parameters. |
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h index 3f7cfa9b7da5..4bde98ba3c60 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.h +++ b/drivers/net/wireless/rt2x00/rt2x00queue.h | |||
@@ -397,7 +397,7 @@ struct data_queue_desc { | |||
397 | * the end of the TX queue array. | 397 | * the end of the TX queue array. |
398 | */ | 398 | */ |
399 | #define tx_queue_end(__dev) \ | 399 | #define tx_queue_end(__dev) \ |
400 | &(__dev)->tx[(__dev)->hw->queues] | 400 | &(__dev)->tx[(__dev)->ops->tx_queues] |
401 | 401 | ||
402 | /** | 402 | /** |
403 | * queue_loop - Loop through the queues within a specific range (HELPER MACRO). | 403 | * queue_loop - Loop through the queues within a specific range (HELPER MACRO). |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index 5d690ee1befa..68d2216131b2 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -2257,7 +2257,6 @@ static void rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
2257 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | | 2257 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | |
2258 | IEEE80211_HW_SIGNAL_DBM; | 2258 | IEEE80211_HW_SIGNAL_DBM; |
2259 | rt2x00dev->hw->extra_tx_headroom = 0; | 2259 | rt2x00dev->hw->extra_tx_headroom = 0; |
2260 | rt2x00dev->hw->queues = 4; | ||
2261 | 2260 | ||
2262 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); | 2261 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); |
2263 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, | 2262 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, |
@@ -2489,6 +2488,7 @@ static const struct rt2x00_ops rt61pci_ops = { | |||
2489 | .max_ap_intf = 4, | 2488 | .max_ap_intf = 4, |
2490 | .eeprom_size = EEPROM_SIZE, | 2489 | .eeprom_size = EEPROM_SIZE, |
2491 | .rf_size = RF_SIZE, | 2490 | .rf_size = RF_SIZE, |
2491 | .tx_queues = NUM_TX_QUEUES, | ||
2492 | .rx = &rt61pci_queue_rx, | 2492 | .rx = &rt61pci_queue_rx, |
2493 | .tx = &rt61pci_queue_tx, | 2493 | .tx = &rt61pci_queue_tx, |
2494 | .bcn = &rt61pci_queue_bcn, | 2494 | .bcn = &rt61pci_queue_bcn, |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.h b/drivers/net/wireless/rt2x00/rt61pci.h index 3511bba7ff65..c5a04b9329d2 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.h +++ b/drivers/net/wireless/rt2x00/rt61pci.h | |||
@@ -54,6 +54,11 @@ | |||
54 | #define RF_SIZE 0x0014 | 54 | #define RF_SIZE 0x0014 |
55 | 55 | ||
56 | /* | 56 | /* |
57 | * Number of TX queues. | ||
58 | */ | ||
59 | #define NUM_TX_QUEUES 4 | ||
60 | |||
61 | /* | ||
57 | * PCI registers. | 62 | * PCI registers. |
58 | */ | 63 | */ |
59 | 64 | ||
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index d98002cfe091..2191d8b94a89 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -1831,7 +1831,6 @@ static void rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) | |||
1831 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | | 1831 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | |
1832 | IEEE80211_HW_SIGNAL_DBM; | 1832 | IEEE80211_HW_SIGNAL_DBM; |
1833 | rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE; | 1833 | rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE; |
1834 | rt2x00dev->hw->queues = 4; | ||
1835 | 1834 | ||
1836 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev); | 1835 | SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev); |
1837 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, | 1836 | SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, |
@@ -2079,6 +2078,7 @@ static const struct rt2x00_ops rt73usb_ops = { | |||
2079 | .max_ap_intf = 4, | 2078 | .max_ap_intf = 4, |
2080 | .eeprom_size = EEPROM_SIZE, | 2079 | .eeprom_size = EEPROM_SIZE, |
2081 | .rf_size = RF_SIZE, | 2080 | .rf_size = RF_SIZE, |
2081 | .tx_queues = NUM_TX_QUEUES, | ||
2082 | .rx = &rt73usb_queue_rx, | 2082 | .rx = &rt73usb_queue_rx, |
2083 | .tx = &rt73usb_queue_tx, | 2083 | .tx = &rt73usb_queue_tx, |
2084 | .bcn = &rt73usb_queue_bcn, | 2084 | .bcn = &rt73usb_queue_bcn, |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.h b/drivers/net/wireless/rt2x00/rt73usb.h index 06d687425fef..25cdcc9bf7c4 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.h +++ b/drivers/net/wireless/rt2x00/rt73usb.h | |||
@@ -54,6 +54,11 @@ | |||
54 | #define RF_SIZE 0x0014 | 54 | #define RF_SIZE 0x0014 |
55 | 55 | ||
56 | /* | 56 | /* |
57 | * Number of TX queues. | ||
58 | */ | ||
59 | #define NUM_TX_QUEUES 4 | ||
60 | |||
61 | /* | ||
57 | * USB registers. | 62 | * USB registers. |
58 | */ | 63 | */ |
59 | 64 | ||