[PATCH 5/24] RT2x00: Clean up device specific rate value initialization
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
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