Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52fe29e4 authored by Sarveshwar Bandi's avatar Sarveshwar Bandi Committed by David S. Miller
Browse files

be2net: Fix to avoid hardware workaround when not needed



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: default avatarSarveshwar Bandi <sarveshwar.bandi@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0fbe0d47
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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)

	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 */