>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.000000000 +0200 +++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-07-23 17:01:06.000000000 +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(®[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.000000000 +0200 +++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-07-23 17:01:39.000000000 +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(®[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 in the ratemask. */ - if (DEVICE_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { + if (DEVICE_GET_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 1); residual = 0; @@ -1004,7 +1004,7 @@ length_low = (length & 0x3f); } else { - rate = DEVICE_RATE_FIELD(control->tx_rate, RATE); + rate = DEVICE_GET_RATE_FIELD(control->tx_rate, RATE); rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 0); @@ -1018,8 +1018,8 @@ length_low = 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; @@ -2571,89 +2571,18 @@ /* * 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; - - rates[4].rate = 60; - rates[4].val = DEVICE_RATE_6MB; - rates[4].flags = IEEE80211_RATE_OFDM; - rates[4].val2 = DEVICE_RATE_6MB; - rates[4].min_rssi_ack = 0; - rates[4].min_rssi_ack_delta = 0; - - rates[5].rate = 90; - rates[5].val = DEVICE_RATE_9MB; - rates[5].flags = IEEE80211_RATE_OFDM; - rates[5].val2 = DEVICE_RATE_9MB; - rates[5].min_rssi_ack = 0; - rates[5].min_rssi_ack_delta = 0; - - rates[6].rate = 120; - rates[6].val = DEVICE_RATE_12MB; - rates[6].flags = IEEE80211_RATE_OFDM; - rates[6].val2 = DEVICE_RATE_12MB; - rates[6].min_rssi_ack = 0; - rates[6].min_rssi_ack_delta = 0; - - rates[7].rate = 180; - rates[7].val = DEVICE_RATE_18MB; - rates[7].flags = IEEE80211_RATE_OFDM; - rates[7].val2 = DEVICE_RATE_18MB; - rates[7].min_rssi_ack = 0; - rates[7].min_rssi_ack_delta = 0; - - rates[8].rate = 240; - rates[8].val = DEVICE_RATE_24MB; - rates[8].flags = IEEE80211_RATE_OFDM; - rates[8].val2 = DEVICE_RATE_24MB; - rates[8].min_rssi_ack = 0; - rates[8].min_rssi_ack_delta = 0; - - rates[9].rate = 360; - rates[9].val = DEVICE_RATE_36MB; - rates[9].flags = IEEE80211_RATE_OFDM; - rates[9].val2 = DEVICE_RATE_36MB; - rates[9].min_rssi_ack = 0; - rates[9].min_rssi_ack_delta = 0; - - rates[10].rate = 480; - rates[10].val = DEVICE_RATE_48MB; - rates[10].flags = IEEE80211_RATE_OFDM; - rates[10].val2 = DEVICE_RATE_48MB; - rates[10].min_rssi_ack = 0; - rates[10].min_rssi_ack_delta = 0; - - rates[11].rate = 540; - rates[11].val = DEVICE_RATE_54MB; - rates[11].flags = IEEE80211_RATE_OFDM; - rates[11].val2 = DEVICE_RATE_54MB; - rates[11].min_rssi_ack = 0; - rates[11].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); + device_rate_entry(&rates[4], 60, 0x01f, 0x0b, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[5], 90, 0x03f, 0x0f, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[6], 120, 0x07f, 0x0a, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[7], 180, 0x0ff, 0x0e, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[8], 240, 0x1ff, 0x09, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[9], 360, 0x3ff, 0x0d, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[10], 480, 0x7ff, 0x08, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[11], 540, 0xfff, 0x0c, IEEE80211_RATE_OFDM); } static int rt2500pci_init_hw(struct rt2x00_dev *rt2x00dev) diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2500usb.c wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2500usb.c --- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-07-23 16:31:02.000000000 +0200 +++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-07-23 17:02:01.000000000 +0200 @@ -541,10 +541,10 @@ u16 value; u16 preamble; - preamble = DEVICE_RATE_FIELD(rate, PREAMBLE) + preamble = DEVICE_GET_RATE_FIELD(rate, PREAMBLE) ? SHORT_PREAMBLE : PREAMBLE; - reg = DEVICE_RATE_FIELD(rate, RATEMASK); + reg = DEVICE_GET_RATE_FIELD(rate, RATEMASK); rt2x00_register_write(rt2x00dev, TXRX_CSR11, reg); @@ -557,7 +557,7 @@ rt2x00_register_write(rt2x00dev, TXRX_CSR1, reg); rt2x00_register_read(rt2x00dev, TXRX_CSR10, ®); - if (DEVICE_RATE_FIELD(rate, PREAMBLE)) + if (DEVICE_GET_RATE_FIELD(rate, PREAMBLE)) reg |= 0x0004; else reg &= ~0x0004; @@ -819,7 +819,7 @@ * this can be done by checking if bit 4 or higher * is set in the ratemask. */ - if (DEVICE_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { + if (DEVICE_GET_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 1); residual = 0; @@ -830,7 +830,7 @@ length_low = (length & 0x3f); } else { - rate = DEVICE_RATE_FIELD(control->tx_rate, RATE); + rate = DEVICE_GET_RATE_FIELD(control->tx_rate, RATE); rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 0); @@ -844,8 +844,8 @@ length_low = length & 0xff; } - signal = DEVICE_RATE_FIELD(control->tx_rate, PLCP); - if (DEVICE_RATE_FIELD(control->tx_rate, PREAMBLE)) + signal = DEVICE_GET_RATE_FIELD(control->tx_rate, PLCP); + if (DEVICE_GET_RATE_FIELD(control->tx_rate, PREAMBLE)) signal |= 0x08; service = 0x04; @@ -2203,89 +2203,18 @@ /* * 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; - - rates[4].rate = 60; - rates[4].val = DEVICE_RATE_6MB; - rates[4].flags = IEEE80211_RATE_OFDM; - rates[4].val2 = DEVICE_RATE_6MB; - rates[4].min_rssi_ack = 0; - rates[4].min_rssi_ack_delta = 0; - - rates[5].rate = 90; - rates[5].val = DEVICE_RATE_9MB; - rates[5].flags = IEEE80211_RATE_OFDM; - rates[5].val2 = DEVICE_RATE_9MB; - rates[5].min_rssi_ack = 0; - rates[5].min_rssi_ack_delta = 0; - - rates[6].rate = 120; - rates[6].val = DEVICE_RATE_12MB; - rates[6].flags = IEEE80211_RATE_OFDM; - rates[6].val2 = DEVICE_RATE_12MB; - rates[6].min_rssi_ack = 0; - rates[6].min_rssi_ack_delta = 0; - - rates[7].rate = 180; - rates[7].val = DEVICE_RATE_18MB; - rates[7].flags = IEEE80211_RATE_OFDM; - rates[7].val2 = DEVICE_RATE_18MB; - rates[7].min_rssi_ack = 0; - rates[7].min_rssi_ack_delta = 0; - - rates[8].rate = 240; - rates[8].val = DEVICE_RATE_24MB; - rates[8].flags = IEEE80211_RATE_OFDM; - rates[8].val2 = DEVICE_RATE_24MB; - rates[8].min_rssi_ack = 0; - rates[8].min_rssi_ack_delta = 0; - - rates[9].rate = 360; - rates[9].val = DEVICE_RATE_36MB; - rates[9].flags = IEEE80211_RATE_OFDM; - rates[9].val2 = DEVICE_RATE_36MB; - rates[9].min_rssi_ack = 0; - rates[9].min_rssi_ack_delta = 0; - - rates[10].rate = 480; - rates[10].val = DEVICE_RATE_48MB; - rates[10].flags = IEEE80211_RATE_OFDM; - rates[10].val2 = DEVICE_RATE_48MB; - rates[10].min_rssi_ack = 0; - rates[10].min_rssi_ack_delta = 0; - - rates[11].rate = 540; - rates[11].val = DEVICE_RATE_54MB; - rates[11].flags = IEEE80211_RATE_OFDM; - rates[11].val2 = DEVICE_RATE_54MB; - rates[11].min_rssi_ack = 0; - rates[11].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); + device_rate_entry(&rates[4], 60, 0x01f, 0x0b, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[5], 90, 0x03f, 0x0f, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[6], 120, 0x07f, 0x0a, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[7], 180, 0x0ff, 0x0e, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[8], 240, 0x1ff, 0x09, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[9], 360, 0x3ff, 0x0d, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[10], 480, 0x7ff, 0x08, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[11], 540, 0xfff, 0x0c, IEEE80211_RATE_OFDM); } static int rt2500usb_init_hw(struct rt2x00_dev *rt2x00dev) diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2x00.h wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2x00.h --- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt2x00.h 2006-07-23 15:47:08.000000000 +0200 +++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt2x00.h 2006-07-23 16:59:40.000000000 +0200 @@ -872,37 +872,33 @@ #define DEV_PLCP FIELD32(0xff000000) /* - * Macro's for creating the device specific rate value. + * Macro's to set and get specific fields from the device specific val and val2 + * fields inside the ieee80211_rate entry. */ -#define DEVICE_RATE_VALUE(__rate, __mask, __plcp) \ - (int) ((((__rate) << DEV_RATE.bit_offset) & DEV_RATE.bit_mask) | \ - (((__mask) << DEV_RATEMASK.bit_offset) & DEV_RATEMASK.bit_mask) | \ - (((__plcp) << DEV_PLCP.bit_offset) & DEV_PLCP.bit_mask) ) +#define DEVICE_SET_RATE_FIELD(__value, __mask) \ + (int)( ((__value) << DEV_##__mask.bit_offset) & DEV_##__mask.bit_mask ) -#define DEVICE_RATE_PREAMBLE(__value) \ - (int)( (__value) | (1 << DEV_PREAMBLE.bit_offset) ) +#define DEVICE_GET_RATE_FIELD(__value, __mask) \ + (int)( ((__value) & DEV_##__mask.bit_mask) >> DEV_##__mask.bit_offset ) /* - * Macro for reading the device specific rate value. - */ -#define DEVICE_RATE_FIELD(__value, __mask) \ - (int)( ((__value) & DEV_##__mask.bit_mask) >> DEV_##__mask.bit_offset) - -#define DEVICE_RATE_1MB DEVICE_RATE_VALUE(10, 0x001, 0x00) -#define DEVICE_RATE_2MB DEVICE_RATE_VALUE(20, 0x003, 0x01) -#define DEVICE_RATE_2MB_PREAMBLE DEVICE_RATE_PREAMBLE(DEVICE_RATE_2MB) -#define DEVICE_RATE_55MB DEVICE_RATE_VALUE(55, 0x007, 0x02) -#define DEVICE_RATE_55MB_PREAMBLE DEVICE_RATE_PREAMBLE(DEVICE_RATE_55MB) -#define DEVICE_RATE_11MB DEVICE_RATE_VALUE(110, 0x00f, 0x03) -#define DEVICE_RATE_11MB_PREAMBLE DEVICE_RATE_PREAMBLE(DEVICE_RATE_11MB) -#define DEVICE_RATE_6MB DEVICE_RATE_VALUE(60, 0x01f, 0x0b) -#define DEVICE_RATE_9MB DEVICE_RATE_VALUE(90, 0x03f, 0x0f) -#define DEVICE_RATE_12MB DEVICE_RATE_VALUE(120, 0x07f, 0x0a) -#define DEVICE_RATE_18MB DEVICE_RATE_VALUE(180, 0x0ff, 0x0e) -#define DEVICE_RATE_24MB DEVICE_RATE_VALUE(240, 0x1ff, 0x09) -#define DEVICE_RATE_36MB DEVICE_RATE_VALUE(360, 0x3ff, 0x0d) -#define DEVICE_RATE_48MB DEVICE_RATE_VALUE(480, 0x7ff, 0x08) -#define DEVICE_RATE_54MB DEVICE_RATE_VALUE(540, 0xfff, 0x0c) + * Initialize a ieee80211_entry by filling in all fields and correctly + * construct the device specific val and val2 fields. + */ +static inline void device_rate_entry(struct ieee80211_rate *entry, + int rate, int mask, int plcp, int flags) +{ + entry->rate = rate; + entry->val = DEVICE_SET_RATE_FIELD(rate, RATE) | + DEVICE_SET_RATE_FIELD(mask, RATEMASK) | + DEVICE_SET_RATE_FIELD(plcp, PLCP); + entry->flags = flags; + entry->val2 = entry->val | + DEVICE_SET_RATE_FIELD(entry->flags & IEEE80211_RATE_PREAMBLE2, + PREAMBLE); + entry->min_rssi_ack = 0; + entry->min_rssi_ack_delta = 0; +} /* * Duration calculations diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt61pci.c wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt61pci.c --- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-07-23 16:30:48.000000000 +0200 +++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-07-23 17:02:10.000000000 +0200 @@ -953,7 +953,7 @@ u32 value; u32 preamble; - preamble = DEVICE_RATE_FIELD(rate, PREAMBLE) + preamble = DEVICE_GET_RATE_FIELD(rate, PREAMBLE) ? SHORT_PREAMBLE : PREAMBLE; rt2x00_register_read(rt2x00dev, TXRX_CSR0, ®); @@ -1249,7 +1249,7 @@ * this can be done by checking if bit 4 or higher * is set in the ratemask. */ - if (DEVICE_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { + if (DEVICE_GET_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 1); /* @@ -1260,7 +1260,7 @@ length_low = (length & 0x3f); } else { - rate = DEVICE_RATE_FIELD(control->tx_rate, RATE); + rate = DEVICE_GET_RATE_FIELD(control->tx_rate, RATE); rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 0); @@ -1274,8 +1274,8 @@ length_low = 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 = 0x04; @@ -3117,89 +3117,18 @@ /* * 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; - - rates[4].rate = 60; - rates[4].val = DEVICE_RATE_6MB; - rates[4].flags = IEEE80211_RATE_OFDM; - rates[4].val2 = DEVICE_RATE_6MB; - rates[4].min_rssi_ack = 0; - rates[4].min_rssi_ack_delta = 0; - - rates[5].rate = 90; - rates[5].val = DEVICE_RATE_9MB; - rates[5].flags = IEEE80211_RATE_OFDM; - rates[5].val2 = DEVICE_RATE_9MB; - rates[5].min_rssi_ack = 0; - rates[5].min_rssi_ack_delta = 0; - - rates[6].rate = 120; - rates[6].val = DEVICE_RATE_12MB; - rates[6].flags = IEEE80211_RATE_OFDM; - rates[6].val2 = DEVICE_RATE_12MB; - rates[6].min_rssi_ack = 0; - rates[6].min_rssi_ack_delta = 0; - - rates[7].rate = 180; - rates[7].val = DEVICE_RATE_18MB; - rates[7].flags = IEEE80211_RATE_OFDM; - rates[7].val2 = DEVICE_RATE_18MB; - rates[7].min_rssi_ack = 0; - rates[7].min_rssi_ack_delta = 0; - - rates[8].rate = 240; - rates[8].val = DEVICE_RATE_24MB; - rates[8].flags = IEEE80211_RATE_OFDM; - rates[8].val2 = DEVICE_RATE_24MB; - rates[8].min_rssi_ack = 0; - rates[8].min_rssi_ack_delta = 0; - - rates[9].rate = 360; - rates[9].val = DEVICE_RATE_36MB; - rates[9].flags = IEEE80211_RATE_OFDM; - rates[9].val2 = DEVICE_RATE_36MB; - rates[9].min_rssi_ack = 0; - rates[9].min_rssi_ack_delta = 0; - - rates[10].rate = 480; - rates[10].val = DEVICE_RATE_48MB; - rates[10].flags = IEEE80211_RATE_OFDM; - rates[10].val2 = DEVICE_RATE_48MB; - rates[10].min_rssi_ack = 0; - rates[10].min_rssi_ack_delta = 0; - - rates[11].rate = 540; - rates[11].val = DEVICE_RATE_54MB; - rates[11].flags = IEEE80211_RATE_OFDM; - rates[11].val2 = DEVICE_RATE_54MB; - rates[11].min_rssi_ack = 0; - rates[11].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); + device_rate_entry(&rates[4], 60, 0x01f, 0x0b, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[5], 90, 0x03f, 0x0f, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[6], 120, 0x07f, 0x0a, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[7], 180, 0x0ff, 0x0e, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[8], 240, 0x1ff, 0x09, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[9], 360, 0x3ff, 0x0d, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[10], 480, 0x7ff, 0x08, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[11], 540, 0xfff, 0x0c, IEEE80211_RATE_OFDM); } static int rt61pci_init_hw(struct rt2x00_dev *rt2x00dev) diff -rU3 wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt73usb.c wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt73usb.c --- wireless-dev-ethtool/drivers/net/wireless/d80211/rt2x00/rt73usb.c 2006-07-23 16:30:55.000000000 +0200 +++ wireless-dev-rates/drivers/net/wireless/d80211/rt2x00/rt73usb.c 2006-07-23 17:02:18.000000000 +0200 @@ -671,7 +671,7 @@ u32 value; u32 preamble; - preamble = DEVICE_RATE_FIELD(rate, PREAMBLE) + preamble = DEVICE_GET_RATE_FIELD(rate, PREAMBLE) ? SHORT_PREAMBLE : PREAMBLE; rt2x00_register_read(rt2x00dev, TXRX_CSR0, ®); @@ -983,7 +983,7 @@ * this can be done by checking if bit 4 or higher * is set in the ratemask. */ - if (DEVICE_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { + if (DEVICE_GET_RATE_FIELD(control->tx_rate, RATEMASK) & 0x0ff0) { rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 1); /* @@ -994,7 +994,7 @@ length_low = (length & 0x3f); } else { - rate = DEVICE_RATE_FIELD(control->tx_rate, RATE); + rate = DEVICE_GET_RATE_FIELD(control->tx_rate, RATE); rt2x00_set_field32(&txd->word0, TXD_W0_OFDM, 0); @@ -1008,8 +1008,8 @@ length_low = 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 = 0x04; @@ -2612,89 +2612,18 @@ /* * 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; - - rates[4].rate = 60; - rates[4].val = DEVICE_RATE_6MB; - rates[4].flags = IEEE80211_RATE_OFDM; - rates[4].val2 = DEVICE_RATE_6MB; - rates[4].min_rssi_ack = 0; - rates[4].min_rssi_ack_delta = 0; - - rates[5].rate = 90; - rates[5].val = DEVICE_RATE_9MB; - rates[5].flags = IEEE80211_RATE_OFDM; - rates[5].val2 = DEVICE_RATE_9MB; - rates[5].min_rssi_ack = 0; - rates[5].min_rssi_ack_delta = 0; - - rates[6].rate = 120; - rates[6].val = DEVICE_RATE_12MB; - rates[6].flags = IEEE80211_RATE_OFDM; - rates[6].val2 = DEVICE_RATE_12MB; - rates[6].min_rssi_ack = 0; - rates[6].min_rssi_ack_delta = 0; - - rates[7].rate = 180; - rates[7].val = DEVICE_RATE_18MB; - rates[7].flags = IEEE80211_RATE_OFDM; - rates[7].val2 = DEVICE_RATE_18MB; - rates[7].min_rssi_ack = 0; - rates[7].min_rssi_ack_delta = 0; - - rates[8].rate = 240; - rates[8].val = DEVICE_RATE_24MB; - rates[8].flags = IEEE80211_RATE_OFDM; - rates[8].val2 = DEVICE_RATE_24MB; - rates[8].min_rssi_ack = 0; - rates[8].min_rssi_ack_delta = 0; - - rates[9].rate = 360; - rates[9].val = DEVICE_RATE_36MB; - rates[9].flags = IEEE80211_RATE_OFDM; - rates[9].val2 = DEVICE_RATE_36MB; - rates[9].min_rssi_ack = 0; - rates[9].min_rssi_ack_delta = 0; - - rates[10].rate = 480; - rates[10].val = DEVICE_RATE_48MB; - rates[10].flags = IEEE80211_RATE_OFDM; - rates[10].val2 = DEVICE_RATE_48MB; - rates[10].min_rssi_ack = 0; - rates[10].min_rssi_ack_delta = 0; - - rates[11].rate = 540; - rates[11].val = DEVICE_RATE_54MB; - rates[11].flags = IEEE80211_RATE_OFDM; - rates[11].val2 = DEVICE_RATE_54MB; - rates[11].min_rssi_ack = 0; - rates[11].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); + device_rate_entry(&rates[4], 60, 0x01f, 0x0b, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[5], 90, 0x03f, 0x0f, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[6], 120, 0x07f, 0x0a, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[7], 180, 0x0ff, 0x0e, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[8], 240, 0x1ff, 0x09, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[9], 360, 0x3ff, 0x0d, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[10], 480, 0x7ff, 0x08, IEEE80211_RATE_OFDM); + device_rate_entry(&rates[11], 540, 0xfff, 0x0c, IEEE80211_RATE_OFDM); } static int rt73usb_init_hw(struct rt2x00_dev *rt2x00dev) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html