[PATCH 2/4] net usb asix: Use only 11 bits of header for data size

Philipp Zabel philipp.zabel at gmail.com
Wed Jan 22 17:50:47 EST 2014


From: Marek Vasut <marek.vasut at gmail.com>

The AX88772B uses only 11 bits of the header for the actual size. The other bits
are used for something else. This causes dmesg full of messages:

	asix_rx_fixup() Bad Header Length

This patch trims the check to only 11 bits. I believe on older chips, the
remaining 5 top bits are unused.

Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
Signed-off-by: Philipp Zabel <philipp.zabel at gmail.com>
---
 drivers/net/usb/asix.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
index 8b73bf9..003ebba 100644
--- a/drivers/net/usb/asix.c
+++ b/drivers/net/usb/asix.c
@@ -408,11 +408,11 @@ static int asix_rx_fixup(struct usbnet *dev, void *buf, int len)
 	len -= 4;
 
 	while (len > 0) {
-		if ((header & 0xffff) != ((~header >> 16) & 0xffff))
+		if ((header & 0x07ff) != ((~header >> 16) & 0x07ff))
 			dev_err(&dev->edev.dev, "asix_rx_fixup() Bad Header Length\n");
 
 		/* get the packet length */
-		size = (unsigned short) (header & 0x0000ffff);
+		size = (unsigned short) (header & 0x07ff);
 
 		if (size > 1514) {
 			dev_err(&dev->edev.dev, "asix_rx_fixup() Bad RX Length %d\n", size);
-- 
1.8.5.3




More information about the barebox mailing list