diff --git a/debian/changelog b/debian/changelog index 0a14915b3..2635482f2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Tue, 16 Jul 2013 08:19:29 +0200 diff --git a/debian/patches/bugfix/all/be2net-Fix-to-avoid-hardware-workaround-when-not-nee.patch b/debian/patches/bugfix/all/be2net-Fix-to-avoid-hardware-workaround-when-not-nee.patch new file mode 100644 index 000000000..28c4ce220 --- /dev/null +++ b/debian/patches/bugfix/all/be2net-Fix-to-avoid-hardware-workaround-when-not-nee.patch @@ -0,0 +1,46 @@ +From: Sarveshwar Bandi +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 +Signed-off-by: David S. Miller +--- + 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 */ diff --git a/debian/patches/series b/debian/patches/series index fc32c10f9..640b76efb 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -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