Commit 61aa21f2 authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman

Staging: et131x: Clean up the rx status word types

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent dc26ffc7
...@@ -797,21 +797,19 @@ PMP_RFD nic_rx_pkts(struct et131x_adapter *etdev) ...@@ -797,21 +797,19 @@ PMP_RFD nic_rx_pkts(struct et131x_adapter *etdev)
uint16_t bindex; uint16_t bindex;
u32 len; u32 len;
PKT_STAT_DESC_WORD0_t Word0; PKT_STAT_DESC_WORD0_t Word0;
u32 word1;
/* RX Status block is written by the DMA engine prior to every /* RX Status block is written by the DMA engine prior to every
* interrupt. It contains the next to be used entry in the Packet * interrupt. It contains the next to be used entry in the Packet
* Status Ring, and also the two Free Buffer rings. * Status Ring, and also the two Free Buffer rings.
*/ */
status = (PRX_STATUS_BLOCK_t) rx_local->pRxStatusVa; status = (PRX_STATUS_BLOCK_t) rx_local->pRxStatusVa;
word1 = status->Word1 >> 16; /* Get the useful bits */
/* FIXME: tidy later when conversions complete */ /* Check the PSR and wrap bits do not match */
if (status->Word1.bits.PSRoffset == if ((word1 & 0x1FFF) == (rx_local->local_psr_full & 0x1FFF))
(rx_local->local_psr_full & 0xFFF) &&
status->Word1.bits.PSRwrap ==
((rx_local->local_psr_full >> 12) & 1)) {
/* Looks like this ring is not updated yet */ /* Looks like this ring is not updated yet */
return NULL; return NULL;
}
/* The packet status ring indicates that data is available. */ /* The packet status ring indicates that data is available. */
psr = (PPKT_STAT_DESC_t) (rx_local->pPSRingVa) + psr = (PPKT_STAT_DESC_t) (rx_local->pPSRingVa) +
......
...@@ -211,36 +211,20 @@ typedef struct _PKT_STAT_DESC_t { ...@@ -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 * 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 * 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. * 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 * 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 * it sits in free memory, and is pointed to by 0x101c / 0x1020
*/ */
typedef struct _rx_status_block_t { typedef struct _rx_status_block_t {
u32 Word0; u32 Word0;
RXSTAT_WORD1_t Word1; u32 Word1;
} RX_STATUS_BLOCK_t, *PRX_STATUS_BLOCK_t; } RX_STATUS_BLOCK_t, *PRX_STATUS_BLOCK_t;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment