Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 2983

kernel-2.6.18-238.el5.src.rpm

From: Marcus Barrow <mbarrow@redhat.com>
Date: Fri, 19 Oct 2007 14:19:48 -0400
Subject: [net] qla3xxx: new 4032 does not work with VLAN
Message-id: 20071019181948.30942.86529.sendpatchset@shell.boston.redhat.com
O-Subject: [Bug 253785][QLogic][RHEL 5.2 bug] qla3xxx - new 4032 does not work with VLAN.
Bugzilla: 253785

BZ 253785

If an interface owned by the qla3xxx driver (4032 chip) is used in a VLAN,
inbound completions will not be handled and passed to the TCP/IP stack.

This patch has been accepted upstream. It applies cleanly
to the current 5.1 build. It is low risk and has been tested
at QLogic.

I changed the version string from RHEL5U1 to RHEL5U2.

Acked-by: Andy Gospodarek <gospo@redhat.com>

diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index 28f1bcb..1600945 100644
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -39,7 +39,7 @@
 
 #define DRV_NAME  	"qla3xxx"
 #define DRV_STRING 	"QLogic ISP3XXX Network Driver"
-#define DRV_VERSION	"v2.03.00-k4-RHEL5U1"
+#define DRV_VERSION	"v2.03.00-k4-RHEL5U2"
 #define PFX		DRV_NAME " "
 
 static const char ql3xxx_driver_name[] = DRV_NAME;
@@ -2262,6 +2262,12 @@ static int ql_tx_rx_clean(struct ql3_adapter *qdev,
 
 		net_rsp = qdev->rsp_current;
 		rmb();
+		/*
+		 * Fix 4032 chip undocumented "feature" where bit-8 is set if the
+		 * inbound completion is for a VLAN.
+		 */
+		if (qdev->device_id == QL3032_DEVICE_ID)
+			net_rsp->opcode &= 0x7f;
 		switch (net_rsp->opcode) {
 
 		case OPCODE_OB_MAC_IOCB_FN0: