[PATCH 5/24] RT2x00: Clean up device specific rate value initialization

2006-07-26 Thread Ivo van Doorn
From Ivo van Doorn [EMAIL PROTECTED]

ieee80211_rate structure should be initialized by device_rate_entry
And the creation of the device specific rate value can be optimized
and made more clearer.

Signed-off-by: Ivo van Doorn [EMAIL PROTECTED]

---

diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 
wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
--- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 
2006-07-23 16:30:58.0 +0200
+++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2400pci.c   
2006-07-23 17:01:06.0 +0200
@@ -680,10 +680,10 @@
u32 value;
u32 preamble;
 
-   preamble = DEVICE_RATE_FIELD(rate, PREAMBLE)
+   preamble = DEVICE_GET_RATE_FIELD(rate, PREAMBLE)
? SHORT_PREAMBLE : PREAMBLE;
 
-   reg[0] = DEVICE_RATE_FIELD(rate, RATEMASK);
+   reg[0] = DEVICE_GET_RATE_FIELD(rate, RATEMASK);
 
rt2x00_register_write(rt2x00dev, ARCSR1, reg[0]);
 
@@ -699,7 +699,7 @@
rt2x00_set_field32(reg[0], TXCSR1_ACK_CONSUME_TIME, value);
rt2x00_register_write(rt2x00dev, TXCSR1, reg[0]);
 
-   value = DEVICE_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
+   value = DEVICE_GET_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
 
reg[0] = cpu_to_le32(0x00700400 | value);   /* ARCSR2 */
reg[1] = cpu_to_le32(0x00380401 | value);   /* ARCSR3 */
@@ -919,9 +919,9 @@
 * Convert length to microseconds.
 */
residual = get_duration_res(length,
-   DEVICE_RATE_FIELD(control-tx_rate, RATE));
+   DEVICE_GET_RATE_FIELD(control-tx_rate, RATE));
length = get_duration(length,
-   DEVICE_RATE_FIELD(control-tx_rate, RATE));
+   DEVICE_GET_RATE_FIELD(control-tx_rate, RATE));
 
if (residual)
length++;
@@ -939,8 +939,8 @@
length_high = 0x8000 | 0x0700 | (length  8);
length_low = 0x8000 | 0x0800 | (length  0xff);
 
-   signal = 0x8500 | DEVICE_RATE_FIELD(control-tx_rate, PLCP);
-   if (DEVICE_RATE_FIELD(control-tx_rate, PREAMBLE))
+   signal = 0x8500 | DEVICE_GET_RATE_FIELD(control-tx_rate, PLCP);
+   if (DEVICE_GET_RATE_FIELD(control-tx_rate, PREAMBLE))
signal |= 0x0008;
 
service = 0x0600 | 0x0004;
@@ -2370,33 +2370,10 @@
/*
 * Rates initialization.
 */
-   rates[0].rate = 10;
-   rates[0].val = DEVICE_RATE_1MB;
-   rates[0].flags = IEEE80211_RATE_CCK;
-   rates[0].val2 = DEVICE_RATE_1MB;
-   rates[0].min_rssi_ack = 0;
-   rates[0].min_rssi_ack_delta = 0;
-
-   rates[1].rate = 20;
-   rates[1].val = DEVICE_RATE_2MB;
-   rates[1].flags = IEEE80211_RATE_CCK_2;
-   rates[1].val2 = DEVICE_RATE_2MB_PREAMBLE;
-   rates[1].min_rssi_ack = 0;
-   rates[1].min_rssi_ack_delta = 0;
-
-   rates[2].rate = 55;
-   rates[2].val = DEVICE_RATE_55MB;
-   rates[2].flags = IEEE80211_RATE_CCK_2;
-   rates[2].val2 = DEVICE_RATE_55MB_PREAMBLE;
-   rates[2].min_rssi_ack = 0;
-   rates[2].min_rssi_ack_delta = 0;
-
-   rates[3].rate = 110;
-   rates[3].val = DEVICE_RATE_11MB;
-   rates[3].flags = IEEE80211_RATE_CCK_2;
-   rates[3].val2 = DEVICE_RATE_11MB_PREAMBLE;
-   rates[3].min_rssi_ack = 0;
-   rates[3].min_rssi_ack_delta = 0;
+   device_rate_entry(rates[0], 10, 0x001, 0x00, IEEE80211_RATE_CCK);
+   device_rate_entry(rates[1], 20, 0x003, 0x01, IEEE80211_RATE_CCK_2);
+   device_rate_entry(rates[2], 55, 0x007, 0x02, IEEE80211_RATE_CCK_2);
+   device_rate_entry(rates[3], 110, 0x00f, 0x03, IEEE80211_RATE_CCK_2);
 }
 
 static int rt2400pci_init_hw(struct rt2x00_dev *rt2x00dev)
diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 
wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
--- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 
2006-07-23 16:31:10.0 +0200
+++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2500pci.c   
2006-07-23 17:01:39.0 +0200
@@ -725,10 +725,10 @@
u32 value;
u32 preamble;
 
-   preamble = DEVICE_RATE_FIELD(rate, PREAMBLE)
+   preamble = DEVICE_GET_RATE_FIELD(rate, PREAMBLE)
? SHORT_PREAMBLE : PREAMBLE;
 
-   reg[0] = DEVICE_RATE_FIELD(rate, RATEMASK);
+   reg[0] = DEVICE_GET_RATE_FIELD(rate, RATEMASK);
 
rt2x00_register_write(rt2x00dev, ARCSR1, reg[0]);
 
@@ -744,7 +744,7 @@
rt2x00_set_field32(reg[0], TXCSR1_ACK_CONSUME_TIME, value);
rt2x00_register_write(rt2x00dev, TXCSR1, reg[0]);
 
-   value = DEVICE_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
+   value = DEVICE_GET_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
 
reg[0] = cpu_to_le32(0x00700400 | value);   /* ARCSR2 */
reg[1] = cpu_to_le32(0x00380401 | value);   /* ARCSR3 */
@@ -993,7 +993,7 @@
 * this can be done by checking if bit 4 or higher
 * is 

Re: [PATCH 5/24] RT2x00: Clean up device specific rate value initialization

2006-07-26 Thread Ivo van Doorn
From Ivo van Doorn [EMAIL PROTECTED]

ieee80211_rate structure should be initialized by device_rate_entry
And the creation of the device specific rate value can be optimized
and made more clearer.

Signed-off-by: Ivo van Doorn [EMAIL PROTECTED]

diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 
wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
--- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 
2006-07-23 16:30:58.0 +0200
+++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2400pci.c   
2006-07-23 17:01:06.0 +0200
@@ -680,10 +680,10 @@
u32 value;
u32 preamble;
 
-   preamble = DEVICE_RATE_FIELD(rate, PREAMBLE)
+   preamble = DEVICE_GET_RATE_FIELD(rate, PREAMBLE)
? SHORT_PREAMBLE : PREAMBLE;
 
-   reg[0] = DEVICE_RATE_FIELD(rate, RATEMASK);
+   reg[0] = DEVICE_GET_RATE_FIELD(rate, RATEMASK);
 
rt2x00_register_write(rt2x00dev, ARCSR1, reg[0]);
 
@@ -699,7 +699,7 @@
rt2x00_set_field32(reg[0], TXCSR1_ACK_CONSUME_TIME, value);
rt2x00_register_write(rt2x00dev, TXCSR1, reg[0]);
 
-   value = DEVICE_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
+   value = DEVICE_GET_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
 
reg[0] = cpu_to_le32(0x00700400 | value);   /* ARCSR2 */
reg[1] = cpu_to_le32(0x00380401 | value);   /* ARCSR3 */
@@ -919,9 +919,9 @@
 * Convert length to microseconds.
 */
residual = get_duration_res(length,
-   DEVICE_RATE_FIELD(control-tx_rate, RATE));
+   DEVICE_GET_RATE_FIELD(control-tx_rate, RATE));
length = get_duration(length,
-   DEVICE_RATE_FIELD(control-tx_rate, RATE));
+   DEVICE_GET_RATE_FIELD(control-tx_rate, RATE));
 
if (residual)
length++;
@@ -939,8 +939,8 @@
length_high = 0x8000 | 0x0700 | (length  8);
length_low = 0x8000 | 0x0800 | (length  0xff);
 
-   signal = 0x8500 | DEVICE_RATE_FIELD(control-tx_rate, PLCP);
-   if (DEVICE_RATE_FIELD(control-tx_rate, PREAMBLE))
+   signal = 0x8500 | DEVICE_GET_RATE_FIELD(control-tx_rate, PLCP);
+   if (DEVICE_GET_RATE_FIELD(control-tx_rate, PREAMBLE))
signal |= 0x0008;
 
service = 0x0600 | 0x0004;
@@ -2370,33 +2370,10 @@
/*
 * Rates initialization.
 */
-   rates[0].rate = 10;
-   rates[0].val = DEVICE_RATE_1MB;
-   rates[0].flags = IEEE80211_RATE_CCK;
-   rates[0].val2 = DEVICE_RATE_1MB;
-   rates[0].min_rssi_ack = 0;
-   rates[0].min_rssi_ack_delta = 0;
-
-   rates[1].rate = 20;
-   rates[1].val = DEVICE_RATE_2MB;
-   rates[1].flags = IEEE80211_RATE_CCK_2;
-   rates[1].val2 = DEVICE_RATE_2MB_PREAMBLE;
-   rates[1].min_rssi_ack = 0;
-   rates[1].min_rssi_ack_delta = 0;
-
-   rates[2].rate = 55;
-   rates[2].val = DEVICE_RATE_55MB;
-   rates[2].flags = IEEE80211_RATE_CCK_2;
-   rates[2].val2 = DEVICE_RATE_55MB_PREAMBLE;
-   rates[2].min_rssi_ack = 0;
-   rates[2].min_rssi_ack_delta = 0;
-
-   rates[3].rate = 110;
-   rates[3].val = DEVICE_RATE_11MB;
-   rates[3].flags = IEEE80211_RATE_CCK_2;
-   rates[3].val2 = DEVICE_RATE_11MB_PREAMBLE;
-   rates[3].min_rssi_ack = 0;
-   rates[3].min_rssi_ack_delta = 0;
+   device_rate_entry(rates[0], 10, 0x001, 0x00, IEEE80211_RATE_CCK);
+   device_rate_entry(rates[1], 20, 0x003, 0x01, IEEE80211_RATE_CCK_2);
+   device_rate_entry(rates[2], 55, 0x007, 0x02, IEEE80211_RATE_CCK_2);
+   device_rate_entry(rates[3], 110, 0x00f, 0x03, IEEE80211_RATE_CCK_2);
 }
 
 static int rt2400pci_init_hw(struct rt2x00_dev *rt2x00dev)
diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 
wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
--- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 
2006-07-23 16:31:10.0 +0200
+++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2500pci.c   
2006-07-23 17:01:39.0 +0200
@@ -725,10 +725,10 @@
u32 value;
u32 preamble;
 
-   preamble = DEVICE_RATE_FIELD(rate, PREAMBLE)
+   preamble = DEVICE_GET_RATE_FIELD(rate, PREAMBLE)
? SHORT_PREAMBLE : PREAMBLE;
 
-   reg[0] = DEVICE_RATE_FIELD(rate, RATEMASK);
+   reg[0] = DEVICE_GET_RATE_FIELD(rate, RATEMASK);
 
rt2x00_register_write(rt2x00dev, ARCSR1, reg[0]);
 
@@ -744,7 +744,7 @@
rt2x00_set_field32(reg[0], TXCSR1_ACK_CONSUME_TIME, value);
rt2x00_register_write(rt2x00dev, TXCSR1, reg[0]);
 
-   value = DEVICE_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
+   value = DEVICE_GET_RATE_FIELD(rate, PREAMBLE) ? 8 : 0;
 
reg[0] = cpu_to_le32(0x00700400 | value);   /* ARCSR2 */
reg[1] = cpu_to_le32(0x00380401 | value);   /* ARCSR3 */
@@ -993,7 +993,7 @@
 * this can be done by checking if bit 4 or higher
 * is set