Patch "net/mlx5e: Fix parsing of vlan packets when updating lro header" has been added to the 4.7-stable tree
This is a note to let you know that I've just added the patch titled
net/mlx5e: Fix parsing of vlan packets when updating lro header
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-mlx5e-fix-parsing-of-vlan-packets-when-updating-lro-header.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Sep 21 10:05:18 CEST 2016
From: Gal Pressman <[email protected]>
Date: Wed, 7 Sep 2016 19:08:01 +0300
Subject: net/mlx5e: Fix parsing of vlan packets when updating lro header
From: Gal Pressman <[email protected]>
[ Upstream commit cd17d230dd060a12f7451c0caeedb3fd5158eaf9 ]
Currently vlan tagged packets were not parsed correctly and assumed to be regular IPv4/IPv6 packets.
We should check for 802.1Q/802.1ad tags and update the lro header accordingly.
This fixes the use case where LRO is on and rxvlan is off (vlan stripping is off).
--- drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +15 -7
@@ -648,24 +648,32 @@ bool mlx5e_post_rx_wqes(struct mlx5e_rqstatic void mlx5e_lro_update_hdr (struct sk_buff *skb,struct mlx5_cqe64 *cqe,u32 cqe_bcnt) { -struct ethhdr *eth = (struct ethhdr *)(skb->data); -struct iphdr *ipv4 = (struct iphdr *)(skb->data +ETH_HLEN ); -struct ipv6hdr *ipv6 = (struct ipv6hdr *)(skb->data +ETH_HLEN ); +struct ethhdr *eth = (struct ethhdr *)(skb->data); +struct iphdr *ipv4; +struct ipv6hdr *ipv6;struct tcphdr *tcp; +int network_depth =0 ; +__be16 proto; +u16 tot_len;u8 l4_hdr_type =get_cqe_l4_hdr_type (cqe);int tcp_ack = ((CQE_L4_HDR_TYPE_TCP_ACK_NO_DATA == l4_hdr_type) || (CQE_L4_HDR_TYPE_TCP_ACK_AND_DATA == l4_hdr_type)); -u16 tot_len = cqe_bcnt -ETH_HLEN ; + skb->mac_len =ETH_HLEN ; + proto =__vlan_get_protocol (skb, eth->h_proto, &network_depth); -if (eth->h_proto ==htons (ETH_P_IP )) { - tcp = (struct tcphdr *)(skb->data +ETH_HLEN + + ipv4 = (struct iphdr *)(skb->data + network_depth); + ipv6 = (struct ipv6hdr *)(skb->data + network_depth); + tot_len = cqe_bcnt - network_depth; + +if (proto ==htons (ETH_P_IP )) { + tcp = (struct tcphdr *)(skb->data + network_depth +sizeof (struct iphdr )); ipv6 =NULL ;skb_shinfo (skb)->gso_type =SKB_GSO_TCPV4 ; }else { - tcp = (struct tcphdr *)(skb->data +ETH_HLEN + + tcp = (struct tcphdr *)(skb->data + network_depth +sizeof (struct ipv6hdr )); ipv4 =NULL ;skb_shinfo (skb)->gso_type =SKB_GSO_TCPV6 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/net-mlx5e-fix-parsing-of-vlan-packets-when-updating-lro-header.patch