Skip to content

Commit

Permalink
typhoon: missed rx overruns on big-endian
Browse files Browse the repository at this point in the history
rxBuffCleared is little-endian; we miss le32_to_cpu() in checks for
rx ring overruns.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Al Viro authored and Jeff Garzik committed Dec 23, 2007
1 parent b46281f commit 8a5ed9e
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions drivers/net/typhoon.c
Original file line number Diff line number Diff line change
Expand Up @@ -1596,7 +1596,7 @@ typhoon_recycle_rx_skb(struct typhoon *tp, u32 idx)
struct rx_free *r;

if((ring->lastWrite + sizeof(*r)) % (RXFREE_ENTRIES * sizeof(*r)) ==
indexes->rxBuffCleared) {
le32_to_cpu(indexes->rxBuffCleared)) {
/* no room in ring, just drop the skb
*/
dev_kfree_skb_any(rxb->skb);
Expand Down Expand Up @@ -1627,7 +1627,7 @@ typhoon_alloc_rx_skb(struct typhoon *tp, u32 idx)
rxb->skb = NULL;

if((ring->lastWrite + sizeof(*r)) % (RXFREE_ENTRIES * sizeof(*r)) ==
indexes->rxBuffCleared)
le32_to_cpu(indexes->rxBuffCleared))
return -ENOMEM;

skb = dev_alloc_skb(PKT_BUF_SZ);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/typhoon.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ struct typhoon_indexes {
volatile __le32 txLoCleared;
volatile __le32 txHiCleared;
volatile __le32 rxLoReady;
volatile __u32 rxBuffCleared; /* AV: really? */
volatile __le32 rxBuffCleared;
volatile __le32 cmdCleared;
volatile __le32 respReady;
volatile __le32 rxHiReady;
Expand Down

0 comments on commit 8a5ed9e

Please sign in to comment.