Subject: [PATCH 1/1 net-2.6] s2io: enabling VLAN tag stripping at driver initialization

From: Breno Leitao <[email-masked]>
Date: Thu, 04 Sep 2008 14:46:03 -0300

Actually s2io has a bug in VLAN support. VLAN doesn't work except if
you'd opened the interface in promiscuous mode before. 
This happens because VLAN tag stripping is not enable by default (when
the device is loaded). It is only enabled when the device leaves
promiscuous mode.

Signed-off-by: Breno Leitao <[email-masked]>
Signed-off-by: Jay Vosburgh <[email-masked]>

---

diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index a2b0730..e656c80 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -8206,6 +8206,14 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
 	/* Initialize device name */
 	sprintf(sp->name, "%s Neterion %s", dev->name, sp->product_name);
 
+	/* Initialize VLAN tag strip */
+	if (vlan_tag_strip) {
+		val64 = readq(&bar0->rx_pa_cfg);
+		val64 |= RX_PA_CFG_STRIP_VLAN_TAG;
+		writeq(val64, &bar0->rx_pa_cfg);
+		vlan_strip_flag = 1;
+	}
+
 	/*
 	 * Make Link state as off at this point, when the Link change
 	 * interrupt comes the state will be automatically changed to