mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
cxgb4/cxgb4vf: Fixes regression in perf when tx vlan offload is disabled
The commit637d3e9973
("cxgb4: Discard the packet if the length is greater than mtu") introduced a regression in the VLAN interface performance when Tx VLAN offload is disabled. Check if skb is tagged, regardless of whether it is hardware accelerated or not. Presently we were checking only for hardware acclereated one, which caused performance to drop to ~0.17Mbps on a 10GbE adapter for VLAN interface, when tx vlan offload is turned off using ethtool. The ethernet head length calculation was going wrong in this case, and driver ended up dropping packets. Fixes:637d3e9973
("cxgb4: Discard the packet if the length is greater than mtu") Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b2df430b52
commit
8d09e6b8b9
@ -1192,7 +1192,7 @@ out_free: dev_kfree_skb_any(skb);
|
|||||||
|
|
||||||
/* Discard the packet if the length is greater than mtu */
|
/* Discard the packet if the length is greater than mtu */
|
||||||
max_pkt_len = ETH_HLEN + dev->mtu;
|
max_pkt_len = ETH_HLEN + dev->mtu;
|
||||||
if (skb_vlan_tag_present(skb))
|
if (skb_vlan_tagged(skb))
|
||||||
max_pkt_len += VLAN_HLEN;
|
max_pkt_len += VLAN_HLEN;
|
||||||
if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
|
if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
@ -1188,7 +1188,7 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
|
|
||||||
/* Discard the packet if the length is greater than mtu */
|
/* Discard the packet if the length is greater than mtu */
|
||||||
max_pkt_len = ETH_HLEN + dev->mtu;
|
max_pkt_len = ETH_HLEN + dev->mtu;
|
||||||
if (skb_vlan_tag_present(skb))
|
if (skb_vlan_tagged(skb))
|
||||||
max_pkt_len += VLAN_HLEN;
|
max_pkt_len += VLAN_HLEN;
|
||||||
if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
|
if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
Loading…
Reference in New Issue
Block a user