Staging: et131x: Clean up the rx status word types
authorAlan Cox <alan@linux.intel.com>
Mon, 18 Jan 2010 15:33:34 +0000 (15:33 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 4 Mar 2010 00:42:50 +0000 (16:42 -0800)
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/et131x/et1310_rx.c
drivers/staging/et131x/et1310_rx.h

index ee6436a..0e12709 100644 (file)
@@ -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) +
index afa670e..a46788d 100644 (file)
@@ -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;
 
 /*