be2net: Fix to avoid hardware workaround when not needed

svn path=/dists/sid/linux/; revision=20365
This commit is contained in:
Ben Hutchings 2013-07-18 03:47:49 +00:00
parent 6b298896bb
commit b70783d289
3 changed files with 48 additions and 0 deletions

1
debian/changelog vendored
View File

@ -6,6 +6,7 @@ linux (3.10.1-2) UNRELEASED; urgency=low
[ Ben Hutchings ]
* udeb: Add snd-cmi8328 and snd-scs1x to sound-modules, thanks to
Samuel Thibault (Closes: #717183)
* be2net: Fix to avoid hardware workaround when not needed
-- Arnaud Patard <arnaud.patard@rtp-net.org> Tue, 16 Jul 2013 08:19:29 +0200

View File

@ -0,0 +1,46 @@
From: Sarveshwar Bandi <sarveshwar.bandi@emulex.com>
Date: Tue, 16 Jul 2013 12:44:02 +0530
Subject: be2net: Fix to avoid hardware workaround when not needed
Origin: https://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit?id=52fe29e4bb614367c108b717c6d7fe5953eb7af3
Hardware workaround requesting hardware to skip vlan insertion is necessary
only when umc or qnq is enabled. Enabling this workaround in other scenarios
could cause controller to stall.
Signed-off-by: Sarveshwar Bandi <sarveshwar.bandi@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/emulex/benet/be_main.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 2df48bb..181edb5 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -782,16 +782,22 @@ static struct sk_buff *be_insert_vlan_in_pkt(struct be_adapter *adapter,
if (vlan_tx_tag_present(skb))
vlan_tag = be_get_tx_vlan_tag(adapter, skb);
- else if (qnq_async_evt_rcvd(adapter) && adapter->pvid)
- vlan_tag = adapter->pvid;
+
+ if (qnq_async_evt_rcvd(adapter) && adapter->pvid) {
+ if (!vlan_tag)
+ vlan_tag = adapter->pvid;
+ /* f/w workaround to set skip_hw_vlan = 1, informs the F/W to
+ * skip VLAN insertion
+ */
+ if (skip_hw_vlan)
+ *skip_hw_vlan = true;
+ }
if (vlan_tag) {
skb = __vlan_put_tag(skb, htons(ETH_P_8021Q), vlan_tag);
if (unlikely(!skb))
return skb;
skb->vlan_tci = 0;
- if (skip_hw_vlan)
- *skip_hw_vlan = true;
}
/* Insert the outer VLAN, if any */

View File

@ -105,3 +105,4 @@ bugfix/all/alx-fix-ethtool-support-code.patch
bugfix/all/alx-remove-WoL-support.patch
bugfix/all/alx-fix-lockdep-annotation.patch
bugfix/all/xen-blkback-Check-device-permissions-before-allowing.patch
bugfix/all/be2net-Fix-to-avoid-hardware-workaround-when-not-nee.patch