mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 14:12:51 +00:00
Staging: et131x: Clean up the rx status word types
Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
dc26ffc772
commit
61aa21f208
@ -797,21 +797,19 @@ PMP_RFD nic_rx_pkts(struct et131x_adapter *etdev)
|
||||
uint16_t bindex;
|
||||
u32 len;
|
||||
PKT_STAT_DESC_WORD0_t Word0;
|
||||
u32 word1;
|
||||
|
||||
/* RX Status block is written by the DMA engine prior to every
|
||||
* interrupt. It contains the next to be used entry in the Packet
|
||||
* Status Ring, and also the two Free Buffer rings.
|
||||
*/
|
||||
status = (PRX_STATUS_BLOCK_t) rx_local->pRxStatusVa;
|
||||
word1 = status->Word1 >> 16; /* Get the useful bits */
|
||||
|
||||
/* FIXME: tidy later when conversions complete */
|
||||
if (status->Word1.bits.PSRoffset ==
|
||||
(rx_local->local_psr_full & 0xFFF) &&
|
||||
status->Word1.bits.PSRwrap ==
|
||||
((rx_local->local_psr_full >> 12) & 1)) {
|
||||
/* Check the PSR and wrap bits do not match */
|
||||
if ((word1 & 0x1FFF) == (rx_local->local_psr_full & 0x1FFF))
|
||||
/* Looks like this ring is not updated yet */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* The packet status ring indicates that data is available. */
|
||||
psr = (PPKT_STAT_DESC_t) (rx_local->pPSRingVa) +
|
||||
|
@ -211,36 +211,20 @@ typedef struct _PKT_STAT_DESC_t {
|
||||
* RXSTAT_WORD1_t structure holds part of the status bits of the Rx DMA engine
|
||||
* that get copied out to memory by the ET-1310. Word 3 is a 32 bit word
|
||||
* which contains the Packet Status Ring available offset.
|
||||
*
|
||||
* bit 0-15 reserved
|
||||
* bit 16-27 PSRoffset
|
||||
* bit 28 PSRwrap
|
||||
* bit 29-31 unused
|
||||
*/
|
||||
|
||||
#define RXSTAT1_OFFSET 16
|
||||
#define RXSTAT1_MASK 0xFFF
|
||||
#define RXSTAT1_WRAP 0x10000000
|
||||
|
||||
typedef union _rxstat_word1_t {
|
||||
u32 value;
|
||||
struct {
|
||||
#ifdef _BIT_FIELDS_HTOL
|
||||
u32 PSRunused:3; /* bits 29-31 */
|
||||
u32 PSRwrap:1; /* bit 28 */
|
||||
u32 PSRoffset:12; /* bits 16-27 */
|
||||
u32 reserved:16; /* bits 0-15 */
|
||||
#else
|
||||
u32 reserved:16; /* bits 0-15 */
|
||||
u32 PSRoffset:12; /* bits 16-27 */
|
||||
u32 PSRwrap:1; /* bit 28 */
|
||||
u32 PSRunused:3; /* bits 29-31 */
|
||||
#endif
|
||||
} bits;
|
||||
} RXSTAT_WORD1_t, *PRXSTAT_WORD1_t;
|
||||
|
||||
/*
|
||||
* RX_STATUS_BLOCK_t is sructure representing the status of the Rx DMA engine
|
||||
* it sits in free memory, and is pointed to by 0x101c / 0x1020
|
||||
*/
|
||||
typedef struct _rx_status_block_t {
|
||||
u32 Word0;
|
||||
RXSTAT_WORD1_t Word1;
|
||||
u32 Word1;
|
||||
} RX_STATUS_BLOCK_t, *PRX_STATUS_BLOCK_t;
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user