[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1206374009-1292-2-git-send-email-afleming@freescale.com>
Date: Mon, 24 Mar 2008 10:53:27 -0500
From: Andy Fleming <afleming@...escale.com>
To: jeff@...zik.org
Cc: netdev@...r.kernel.org, Andy Fleming <afleming@...escale.com>,
Dai Haruki <dai.haruki@...escale.com>
Subject: [PATCH v2.6.26] Only process completed frames
If the LAST bit is not set in the RxBD, it's possible we're processing an
incomplete frame, which is bad. While we're at it, add a constant for
the error bitmask, so the whole if-clause fits on one line, and is more
legible.
Signed-off-by: Dai Haruki <dai.haruki@...escale.com>
Signed-off-by: Andy Fleming <afleming@...escale.com>
---
drivers/net/gianfar.c | 4 +---
drivers/net/gianfar.h | 3 +++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 0ab4b26..a59edf7 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -1526,9 +1526,7 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit)
rmb();
skb = priv->rx_skbuff[priv->skb_currx];
- if (!(bdp->status &
- (RXBD_LARGE | RXBD_SHORT | RXBD_NONOCTET
- | RXBD_CRCERR | RXBD_OVERRUN | RXBD_TRUNCATED))) {
+ if ((bdp->status & RXBD_LAST) && !(bdp->status & RXBD_ERR)) {
/* Increment the number of packets */
dev->stats.rx_packets++;
howmany++;
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
index 46cd773..26eb6ab 100644
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -340,6 +340,9 @@ extern const char gfar_driver_version[];
#define RXBD_OVERRUN 0x0002
#define RXBD_TRUNCATED 0x0001
#define RXBD_STATS 0x01ff
+#define RXBD_ERR (RXBD_LARGE | RXBD_SHORT | RXBD_NONOCTET \
+ | RXBD_CRCERR | RXBD_OVERRUN \
+ | RXBD_TRUNCATED)
/* Rx FCB status field bits */
#define RXFCB_VLN 0x8000
--
1.5.4.23.gef5b9
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists