rt2x00: Add SIFS/PIFS/DIFS/EIFS defines
Subsystems (3)
PATCH 15/26 rt2x00: Add SIFS/PIFS/DIFS/EIFS defines
Introduce new defines for the SIFS, PIFS, EIFS, DIFS, and make use of it in the drivers.
Signed-off-by Ivo van Doorn <[email protected]>
---
drivers/net/wireless/d80211/rt2x00/rt2400pci.c +20 -32
@@ -524,24 +524,22 @@ int short_slot_time) {u32 reg; -u32 value; - - short_slot_time = short_slot_time ?SHORT_SLOT_TIME :SLOT_TIME ;rt2x00_register_read (rt2x00dev,CSR11 , ®); -rt2x00_set_field32 (®,CSR11_SLOT_TIME , short_slot_time); +rt2x00_set_field32 (®,CSR11_SLOT_TIME , + short_slot_time ?SHORT_SLOT_TIME :SLOT_TIME );rt2x00_register_write (rt2x00dev,CSR11 , reg);rt2x00_register_read (rt2x00dev,CSR18 , ®);rt2x00_set_field32 (®,CSR18_SIFS ,SIFS ); -rt2x00_set_field32 (®,CSR18_PIFS ,SIFS + short_slot_time); +rt2x00_set_field32 (®,CSR18_PIFS , + short_slot_time ?SHORT_PIFS :PIFS );rt2x00_register_write (rt2x00dev,CSR18 , reg);rt2x00_register_read (rt2x00dev,CSR19 , ®); - value =SIFS + (2 * short_slot_time); -rt2x00_set_field32 (®,CSR19_DIFS , value); - value =SIFS +get_duration (IEEE80211_HEADER +ACK_SIZE ,10 ); -rt2x00_set_field32 (®,CSR19_EIFS , value); +rt2x00_set_field32 (®,CSR19_DIFS , + short_slot_time ?SHORT_DIFS :DIFS ); +rt2x00_set_field32 (®,CSR19_EIFS ,EIFS );rt2x00_register_write (rt2x00dev,CSR19 , reg);rt2x00_register_read (rt2x00dev,TXCSR1 , ®);
@@ -553,36 +551,26 @@static void rt2400pci_config_rate (struct rt2x00_dev *rt2x00dev,const int rate) {struct ieee80211_conf *conf = &rt2x00dev->hw->conf; -u32 reg[4 ]; +u32 reg;u32 value;u32 preamble; preamble =DEVICE_GET_RATE_FIELD (rate,PREAMBLE ) ?SHORT_PREAMBLE :PREAMBLE ; -/* -* Extract the allowed ratemask from the device specific rate value, -* We need to set ARCSR1 to the basic rate mask so we need to mask -* off the non-basic rates. -*/ - reg[0 ] =DEVICE_GET_RATE_FIELD (rate,RATEMASK ) &DEV_BASIC_RATE ; - -rt2x00_register_write (rt2x00dev,ARCSR1 , reg[0 ]); - -rt2x00_register_read (rt2x00dev,TXCSR1 , ®[0 ]); - value =SIFS +PLCP - + (2 * ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? -SHORT_SLOT_TIME :SLOT_TIME )) - + preamble - +get_duration (ACK_SIZE ,10 ); -rt2x00_set_field32 (®[0 ],TXCSR1_ACK_TIMEOUT , value); - value =SIFS +PLCP - + preamble - +get_duration (ACK_SIZE ,10 ); -rt2x00_set_field32 (®[0 ],TXCSR1_ACK_CONSUME_TIME , value); -rt2x00_register_write (rt2x00dev,TXCSR1 , reg[0 ]); + reg =DEVICE_GET_RATE_FIELD (rate,RATEMASK ) &DEV_BASIC_RATE ; +rt2x00_register_write (rt2x00dev,ARCSR1 , reg); + +rt2x00_register_read (rt2x00dev,TXCSR1 , ®); + value = ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? +SHORT_DIFS :DIFS ) + +PLCP + preamble +get_duration (ACK_SIZE ,10 ); +rt2x00_set_field32 (®,TXCSR1_ACK_TIMEOUT , value); + value =SIFS +PLCP + preamble +get_duration (ACK_SIZE ,10 ); +rt2x00_set_field32 (®,TXCSR1_ACK_CONSUME_TIME , value); +rt2x00_register_write (rt2x00dev,TXCSR1 , reg); - preamble =DEVICE_GET_RATE_FIELD (rate,PREAMBLE ) ?8 :0 ; + preamble =DEVICE_GET_RATE_FIELD (rate,PREAMBLE ) ?0x08 :0x00 ;rt2x00_register_write (rt2x00dev,ARCSR2 ,0x00700400 | preamble);rt2x00_register_write (rt2x00dev,ARCSR3 ,0x00380401 | preamble);
drivers/net/wireless/d80211/rt2x00/rt2500pci.c +20 -32
80 lines not on this page · raw message
drivers/net/wireless/d80211/rt2x00/rt2500usb.c +8 -15
@@ -625,11 +625,11 @@ }static void rt2500usb_config_duration (struct rt2x00_dev *rt2x00dev, -int short_slot_time) +unsigned short short_slot_time) { short_slot_time = short_slot_time ?SHORT_SLOT_TIME :SLOT_TIME ; -rt2x00_register_write (rt2x00dev,MAC_CSR10 , (u16 )short_slot_time); +rt2x00_register_write (rt2x00dev,MAC_CSR10 , short_slot_time); }static void rt2500usb_config_rate (struct rt2x00_dev *rt2x00dev,const int rate)
@@ -642,29 +642,22 @@ preamble =DEVICE_GET_RATE_FIELD (rate,PREAMBLE ) ?SHORT_PREAMBLE :PREAMBLE ; -/* -* Extract the allowed ratemask from the device specific rate value, -* We need to set TXRX_CSR11 to the basic rate mask so we need to mask -* off the non-basic rates. -*/ reg =DEVICE_GET_RATE_FIELD (rate,RATEMASK ) &DEV_BASIC_RATE ;rt2x00_register_write (rt2x00dev,TXRX_CSR11 , reg);rt2x00_register_read (rt2x00dev,TXRX_CSR1 , ®); - value =SIFS +PLCP - + (2 * ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? -SHORT_SLOT_TIME :SLOT_TIME )) - + preamble - +get_duration (ACK_SIZE ,10 ); + value = ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? +SHORT_DIFS :DIFS ) + +PLCP + preamble +get_duration (ACK_SIZE ,10 );rt2x00_set_field16 (®,TXRX_CSR1_ACK_TIMEOUT , value);rt2x00_register_write (rt2x00dev,TXRX_CSR1 , reg);rt2x00_register_read (rt2x00dev,TXRX_CSR10 , ®); -if (DEVICE_GET_RATE_FIELD (rate,PREAMBLE )) - reg |=0x0004 ; +if (preamble ==SHORT_PREAMBLE ) +rt2x00_set_field16 (®,TXRX_CSR10_AUTORESPOND_PREAMBLE ,1 );else - reg &= ~0x0004 ; +rt2x00_set_field16 (®,TXRX_CSR10_AUTORESPOND_PREAMBLE ,0 );rt2x00_register_write (rt2x00dev,TXRX_CSR10 , reg); }
drivers/net/wireless/d80211/rt2x00/rt2x00.h +7 -2
@@ -107,17 +107,22 @@#define CLEAR_FLAGS (__dev) ( (__dev)->flags = 0 )/* -* Standard timning and size defines. +* Standard timing and size defines. */ #define ACK_SIZE 14#define IEEE80211_HEADER 24#define PLCP 48#define BEACON 100 -#define SIFS 10#define PREAMBLE 144#define SHORT_PREAMBLE 72#define SLOT_TIME 20#define SHORT_SLOT_TIME 9 +#define SIFS 10 +#define PIFS ( SIFS + SLOT_TIME ) +#define SHORT_PIFS ( SIFS + SHORT_SLOT_TIME ) +#define DIFS ( PIFS + SLOT_TIME ) +#define SHORT_DIFS ( SHORT_PIFS + SHORT_SLOT_TIME ) +#define EIFS ( SIFS + (8 * (IEEE80211_HEADER + ACK_SIZE)) )/* * IEEE802.11 header defines
drivers/net/wireless/d80211/rt2x00/rt61pci.c +4 -8
@@ -818,7 +818,6 @@ int short_slot_time) {u32 reg; -u32 value; short_slot_time = short_slot_time ?SHORT_SLOT_TIME :SLOT_TIME ;
@@ -829,8 +828,7 @@rt2x00_register_read (rt2x00dev,MAC_CSR8 , ®);rt2x00_set_field32 (®,MAC_CSR8_SIFS ,SIFS );rt2x00_set_field32 (®,MAC_CSR8_SIFS_AFTER_RX_OFDM ,3 ); - value =SIFS +get_duration (IEEE80211_HEADER +ACK_SIZE ,10 ); -rt2x00_set_field32 (®,MAC_CSR8_EIFS , value); +rt2x00_set_field32 (®,MAC_CSR8_EIFS ,EIFS );rt2x00_register_write (rt2x00dev,MAC_CSR8 , reg);rt2x00_register_read (rt2x00dev,TXRX_CSR0 , ®);
@@ -862,11 +860,9 @@rt2x00_register_write (rt2x00dev,TXRX_CSR5 , reg);rt2x00_register_read (rt2x00dev,TXRX_CSR0 , ®); - value =SIFS +PLCP - + (2 * ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? -SHORT_SLOT_TIME :SLOT_TIME )) - + preamble - +get_duration (ACK_SIZE ,10 ); + value = ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? +SHORT_DIFS :DIFS ) + +PLCP + preamble +get_duration (ACK_SIZE ,10 );rt2x00_set_field32 (®,TXRX_CSR0_RX_ACK_TIMEOUT , value);rt2x00_register_write (rt2x00dev,TXRX_CSR0 , reg);
drivers/net/wireless/d80211/rt2x00/rt73usb.c +4 -13
@@ -708,7 +708,6 @@ int short_slot_time) {u32 reg; -u32 value; short_slot_time = short_slot_time ?SHORT_SLOT_TIME :SLOT_TIME ;
@@ -719,8 +718,7 @@rt2x00_register_read (rt2x00dev,MAC_CSR8 , ®);rt2x00_set_field32 (®,MAC_CSR8_SIFS ,SIFS );rt2x00_set_field32 (®,MAC_CSR8_SIFS_AFTER_RX_OFDM ,3 ); - value =SIFS +get_duration (IEEE80211_HEADER +ACK_SIZE ,10 ); -rt2x00_set_field32 (®,MAC_CSR8_EIFS , value); +rt2x00_set_field32 (®,MAC_CSR8_EIFS ,EIFS );rt2x00_register_write (rt2x00dev,MAC_CSR8 , reg);rt2x00_register_read (rt2x00dev,TXRX_CSR0 , ®);
@@ -742,21 +740,14 @@ preamble =DEVICE_GET_RATE_FIELD (rate,PREAMBLE ) ?SHORT_PREAMBLE :PREAMBLE ; -/* -* Extract the allowed ratemask from the device specific rate value, -* We need to set TXRX_CSR5 to the basic rate mask so we need to mask -* off the non-basic rates. -*/ reg =DEVICE_GET_RATE_FIELD (rate,RATEMASK ) &DEV_BASIC_RATE ;rt2x00_register_write (rt2x00dev,TXRX_CSR5 , reg);rt2x00_register_read (rt2x00dev,TXRX_CSR0 , ®); - value =SIFS +PLCP - + (2 * ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? -SHORT_SLOT_TIME :SLOT_TIME )) - + preamble - +get_duration (ACK_SIZE ,10 ); + value = ((conf->flags &IEEE80211_CONF_SHORT_SLOT_TIME ) ? +SHORT_DIFS :DIFS ) + +PLCP + preamble +get_duration (ACK_SIZE ,10 );rt2x00_set_field32 (®,TXRX_CSR0_RX_ACK_TIMEOUT , value);rt2x00_register_write (rt2x00dev,TXRX_CSR0 , reg);