summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRon Mercer <ron.mercer@qlogic.com>2007-10-01 20:43:23 +0200
committerJeff Garzik <jeff@garzik.org>2007-10-02 18:55:10 +0200
commit50626297b1beb0a29c0f174be39f36485533216c (patch)
tree2d356ef62c9bd59d8c8fd61b7248661511a8fcb8 /drivers
parentqla3xxx: bugfix: Add memory barrier before accessing rx completion. (diff)
downloadlinux-50626297b1beb0a29c0f174be39f36485533216c.tar.xz
linux-50626297b1beb0a29c0f174be39f36485533216c.zip
qla3xxx: bugfix: Fix VLAN rx completion handling.
Fix 4032 chip undocumented "feature" where bit-8 is set if the inbound completion is for a VLAN. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rwxr-xr-xdrivers/net/qla3xxx.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index c3fe1c7c301c..ea151315050c 100755
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -2249,6 +2249,12 @@ static int ql_tx_rx_clean(struct ql3_adapter *qdev,
net_rsp = qdev->rsp_current;
rmb();
+ /*
+ * Fix 4032 chipe 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: