diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/desc.h')
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/desc.h | 124 | 
1 files changed, 83 insertions, 41 deletions
diff --git a/drivers/net/wireless/ath/ath5k/desc.h b/drivers/net/wireless/ath/ath5k/desc.h index cfd529b548f..8d6c01a49ea 100644 --- a/drivers/net/wireless/ath/ath5k/desc.h +++ b/drivers/net/wireless/ath/ath5k/desc.h @@ -20,25 +20,30 @@   * RX/TX descriptor structures   */ -/* - * Common hardware RX control descriptor +/** + * struct ath5k_hw_rx_ctl - Common hardware RX control descriptor + * @rx_control_0: RX control word 0 + * @rx_control_1: RX control word 1   */  struct ath5k_hw_rx_ctl { -	u32	rx_control_0; /* RX control word 0 */ -	u32	rx_control_1; /* RX control word 1 */ +	u32	rx_control_0; +	u32	rx_control_1;  } __packed __aligned(4);  /* RX control word 1 fields/flags */  #define AR5K_DESC_RX_CTL1_BUF_LEN		0x00000fff /* data buffer length */  #define AR5K_DESC_RX_CTL1_INTREQ		0x00002000 /* RX interrupt request */ -/* - * Common hardware RX status descriptor +/** + * struct ath5k_hw_rx_status - Common hardware RX status descriptor + * @rx_status_0: RX status word 0 + * @rx_status_1: RX status word 1 + *   * 5210, 5211 and 5212 differ only in the fields and flags defined below   */  struct ath5k_hw_rx_status { -	u32	rx_status_0; /* RX status word 0 */ -	u32	rx_status_1; /* RX status word 1 */ +	u32	rx_status_0; +	u32	rx_status_1;  } __packed __aligned(4);  /* 5210/5211 */ @@ -98,17 +103,36 @@ struct ath5k_hw_rx_status {  /**   * enum ath5k_phy_error_code - PHY Error codes + * @AR5K_RX_PHY_ERROR_UNDERRUN: Transmit underrun, [5210] No error + * @AR5K_RX_PHY_ERROR_TIMING: Timing error + * @AR5K_RX_PHY_ERROR_PARITY: Illegal parity + * @AR5K_RX_PHY_ERROR_RATE: Illegal rate + * @AR5K_RX_PHY_ERROR_LENGTH: Illegal length + * @AR5K_RX_PHY_ERROR_RADAR: Radar detect, [5210] 64 QAM rate + * @AR5K_RX_PHY_ERROR_SERVICE: Illegal service + * @AR5K_RX_PHY_ERROR_TOR: Transmit override receive + * @AR5K_RX_PHY_ERROR_OFDM_TIMING: OFDM Timing error [5212+] + * @AR5K_RX_PHY_ERROR_OFDM_SIGNAL_PARITY: OFDM Signal parity error [5212+] + * @AR5K_RX_PHY_ERROR_OFDM_RATE_ILLEGAL: OFDM Illegal rate [5212+] + * @AR5K_RX_PHY_ERROR_OFDM_LENGTH_ILLEGAL: OFDM Illegal length [5212+] + * @AR5K_RX_PHY_ERROR_OFDM_POWER_DROP: OFDM Power drop [5212+] + * @AR5K_RX_PHY_ERROR_OFDM_SERVICE: OFDM Service (?) [5212+] + * @AR5K_RX_PHY_ERROR_OFDM_RESTART: OFDM Restart (?) [5212+] + * @AR5K_RX_PHY_ERROR_CCK_TIMING: CCK Timing error [5212+] + * @AR5K_RX_PHY_ERROR_CCK_HEADER_CRC: Header CRC error [5212+] + * @AR5K_RX_PHY_ERROR_CCK_RATE_ILLEGAL: Illegal rate [5212+] + * @AR5K_RX_PHY_ERROR_CCK_SERVICE: CCK Service (?) [5212+] + * @AR5K_RX_PHY_ERROR_CCK_RESTART: CCK Restart (?) [5212+]   */  enum ath5k_phy_error_code { -	AR5K_RX_PHY_ERROR_UNDERRUN		= 0,	/* Transmit underrun, [5210] No error */ -	AR5K_RX_PHY_ERROR_TIMING		= 1,	/* Timing error */ -	AR5K_RX_PHY_ERROR_PARITY		= 2,	/* Illegal parity */ -	AR5K_RX_PHY_ERROR_RATE			= 3,	/* Illegal rate */ -	AR5K_RX_PHY_ERROR_LENGTH		= 4,	/* Illegal length */ -	AR5K_RX_PHY_ERROR_RADAR			= 5,	/* Radar detect, [5210] 64 QAM rate */ -	AR5K_RX_PHY_ERROR_SERVICE		= 6,	/* Illegal service */ -	AR5K_RX_PHY_ERROR_TOR			= 7,	/* Transmit override receive */ -	/* these are specific to the 5212 */ +	AR5K_RX_PHY_ERROR_UNDERRUN		= 0, +	AR5K_RX_PHY_ERROR_TIMING		= 1, +	AR5K_RX_PHY_ERROR_PARITY		= 2, +	AR5K_RX_PHY_ERROR_RATE			= 3, +	AR5K_RX_PHY_ERROR_LENGTH		= 4, +	AR5K_RX_PHY_ERROR_RADAR			= 5, +	AR5K_RX_PHY_ERROR_SERVICE		= 6, +	AR5K_RX_PHY_ERROR_TOR			= 7,  	AR5K_RX_PHY_ERROR_OFDM_TIMING		= 17,  	AR5K_RX_PHY_ERROR_OFDM_SIGNAL_PARITY	= 18,  	AR5K_RX_PHY_ERROR_OFDM_RATE_ILLEGAL	= 19, @@ -123,12 +147,14 @@ enum ath5k_phy_error_code {  	AR5K_RX_PHY_ERROR_CCK_RESTART		= 31,  }; -/* - * 5210/5211 hardware 2-word TX control descriptor +/** + * struct ath5k_hw_2w_tx_ctl  - 5210/5211 hardware 2-word TX control descriptor + * @tx_control_0: TX control word 0 + * @tx_control_1: TX control word 1   */  struct ath5k_hw_2w_tx_ctl { -	u32	tx_control_0; /* TX control word 0 */ -	u32	tx_control_1; /* TX control word 1 */ +	u32	tx_control_0; +	u32	tx_control_1;  } __packed __aligned(4);  /* TX control word 0 fields/flags */ @@ -177,14 +203,18 @@ struct ath5k_hw_2w_tx_ctl {  #define AR5K_AR5210_TX_DESC_FRAME_TYPE_PIFS	4  #define AR5K_AR5211_TX_DESC_FRAME_TYPE_PRESP	4 -/* - * 5212 hardware 4-word TX control descriptor +/** + * struct ath5k_hw_4w_tx_ctl - 5212 hardware 4-word TX control descriptor + * @tx_control_0: TX control word 0 + * @tx_control_1: TX control word 1 + * @tx_control_2: TX control word 2 + * @tx_control_3: TX control word 3   */  struct ath5k_hw_4w_tx_ctl { -	u32	tx_control_0; /* TX control word 0 */ -	u32	tx_control_1; /* TX control word 1 */ -	u32	tx_control_2; /* TX control word 2 */ -	u32	tx_control_3; /* TX control word 3 */ +	u32	tx_control_0; +	u32	tx_control_1; +	u32	tx_control_2; +	u32	tx_control_3;  } __packed __aligned(4);  /* TX control word 0 fields/flags */ @@ -238,12 +268,14 @@ struct ath5k_hw_4w_tx_ctl {  #define AR5K_4W_TX_DESC_CTL3_RTS_CTS_RATE	0x01f00000 /* RTS or CTS rate */  #define AR5K_4W_TX_DESC_CTL3_RTS_CTS_RATE_S	20 -/* - * Common TX status descriptor +/** + * struct ath5k_hw_tx_status - Common TX status descriptor + * @tx_status_0: TX status word 0 + * @tx_status_1: TX status word 1   */  struct ath5k_hw_tx_status { -	u32	tx_status_0; /* TX status word 0 */ -	u32	tx_status_1; /* TX status word 1 */ +	u32	tx_status_0; +	u32	tx_status_1;  } __packed __aligned(4);  /* TX status word 0 fields/flags */ @@ -276,37 +308,47 @@ struct ath5k_hw_tx_status {  #define AR5K_DESC_TX_STATUS1_COMP_SUCCESS_5212	0x00800000 /* [5212] compression status */  #define AR5K_DESC_TX_STATUS1_XMIT_ANTENNA_5212	0x01000000 /* [5212] transmit antenna */ -/* - * 5210/5211 hardware TX descriptor +/** + * struct ath5k_hw_5210_tx_desc - 5210/5211 hardware TX descriptor + * @tx_ctl: The &struct ath5k_hw_2w_tx_ctl + * @tx_stat: The &struct ath5k_hw_tx_status   */  struct ath5k_hw_5210_tx_desc {  	struct ath5k_hw_2w_tx_ctl	tx_ctl;  	struct ath5k_hw_tx_status	tx_stat;  } __packed __aligned(4); -/* - * 5212 hardware TX descriptor +/** + * struct ath5k_hw_5212_tx_desc - 5212 hardware TX descriptor + * @tx_ctl: The &struct ath5k_hw_4w_tx_ctl + * @tx_stat: The &struct ath5k_hw_tx_status   */  struct ath5k_hw_5212_tx_desc {  	struct ath5k_hw_4w_tx_ctl	tx_ctl;  	struct ath5k_hw_tx_status	tx_stat;  } __packed __aligned(4); -/* - * Common hardware RX descriptor +/** + * struct ath5k_hw_all_rx_desc - Common hardware RX descriptor + * @rx_ctl: The &struct ath5k_hw_rx_ctl + * @rx_stat: The &struct ath5k_hw_rx_status   */  struct ath5k_hw_all_rx_desc {  	struct ath5k_hw_rx_ctl		rx_ctl;  	struct ath5k_hw_rx_status	rx_stat;  } __packed __aligned(4); -/* - * Atheros hardware DMA descriptor +/** + * struct ath5k_desc - Atheros hardware DMA descriptor + * @ds_link: Physical address of the next descriptor + * @ds_data: Physical address of data buffer (skb) + * @ud: Union containing hw_5xxx_tx_desc structs and hw_all_rx_desc + *   * This is read and written to by the hardware   */  struct ath5k_desc { -	u32	ds_link;	/* physical address of the next descriptor */ -	u32	ds_data;	/* physical address of data buffer (skb) */ +	u32	ds_link; +	u32	ds_data;  	union {  		struct ath5k_hw_5210_tx_desc	ds_tx5210;  |