Patch "drivers: net: xgene: Fix Rx checksum validation logic" has been added to the 4.9-stable tree
This is a note to let you know that I've just added the patch titled
drivers: net: xgene: Fix Rx checksum validation logic
to the 4.9-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:
drivers-net-xgene-fix-rx-checksum-validation-logic.patch
and it can be found in the queue-4.9 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 Sun Mar 18 16:55:33 CET 2018
From: Iyappan Subramanian <[email protected]>
Date: Wed, 15 Mar 2017 13:27:18 -0700
Subject: drivers: net: xgene: Fix Rx checksum validation logic
From: Iyappan Subramanian <[email protected]>
[ Upstream commit 0a0400c3094b5d5cedd479ddbf1329de74c09c4b ]
This patch fixes Rx checksum validation logic and
adds NETIF_F_RXCSUM flag.
--- drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 27 ++++++++++++++--------- 1 file changed, 17 insertions(+), 10 deletions(-)
drivers/net/ethernet/apm/xgene/xgene_enet_main.c +17 -10
@@ -505,14 +505,24 @@ static netdev_tx_t xgene_enet_start_xmitreturn NETDEV_TX_OK ; } -static void xgene_enet_skip_csum (struct sk_buff *skb) +static void xgene_enet_rx_csum (struct sk_buff *skb) { +struct net_device *ndev = skb->dev;struct iphdr *iph =ip_hdr (skb); -if (!ip_is_fragment (iph) || - (iph->protocol !=IPPROTO_TCP && iph->protocol !=IPPROTO_UDP )) { - skb->ip_summed =CHECKSUM_UNNECESSARY ; - } +if (!(ndev->features &NETIF_F_RXCSUM )) +return ; + +if (skb->protocol !=htons (ETH_P_IP )) +return ; + +if (ip_is_fragment (iph)) +return ; + +if (iph->protocol !=IPPROTO_TCP && iph->protocol !=IPPROTO_UDP ) +return ; + + skb->ip_summed =CHECKSUM_UNNECESSARY ; } static int xgene_enet_rx_frame(struct xgene_enet_desc_ring *rx_ring,
@@ -555,10 +565,7 @@ static int xgene_enet_rx_frame(struct xgskb_checksum_none_assert (skb); skb->protocol =eth_type_trans (skb, ndev); -if (likely ((ndev->features &NETIF_F_IP_CSUM ) && - skb->protocol ==htons (ETH_P_IP ))) { -xgene_enet_skip_csum (skb); - } +xgene_enet_rx_csum (skb); rx_ring->rx_packets++; rx_ring->rx_bytes += datalen;
@@ -1725,7 +1732,7 @@ static int xgene_enet_probe(struct platfxgene_enet_setup_ops (pdata);if (pdata->phy_mode ==PHY_INTERFACE_MODE_XGMII ) { - ndev->features |=NETIF_F_TSO ; + ndev->features |=NETIF_F_TSO |NETIF_F_RXCSUM ;spin_lock_init (&pdata->mss_lock); } ndev->hw_features = ndev->features;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/drivers-net-xgene-fix-wrong-logical-operation.patch queue-4.9/drivers-net-xgene-fix-hardware-checksum-setting.patch queue-4.9/drivers-net-xgene-fix-rx-checksum-validation-logic.patch queue-4.9/drivers-net-phy-xgene-fix-mdio-write.patch