Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 186694
b: refs/heads/master
c: 61aa21f
h: refs/heads/master
v: v3
  • Loading branch information
Alan Cox authored and Greg Kroah-Hartman committed Mar 4, 2010
1 parent 86a359d commit 7b3f16b
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dc26ffc7729e5a35c7019a6fb7d306005fdae518
refs/heads/master: 61aa21f208314496c4fa6c28c4a96c610831ed5e
10 changes: 4 additions & 6 deletions trunk/drivers/staging/et131x/et1310_rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) +
Expand Down
28 changes: 6 additions & 22 deletions trunk/drivers/staging/et131x/et1310_rx.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/*
Expand Down

0 comments on commit 7b3f16b

Please sign in to comment.