| From 72e53b8f6b98abffa4a8cb36c096d89b67e6fa81 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 28 Aug 2021 16:23:15 +0200 |
| Subject: net: qualcomm: fix QCA7000 checksum handling |
| |
| From: Stefan Wahren <stefan.wahren@i2se.com> |
| |
| [ Upstream commit 429205da6c834447a57279af128bdd56ccd5225e ] |
| |
| Based on tests the QCA7000 doesn't support checksum offloading. So assume |
| ip_summed is CHECKSUM_NONE and let the kernel take care of the checksum |
| handling. This fixes data transfer issues in noisy environments. |
| |
| Reported-by: Michael Heimpold <michael.heimpold@in-tech.com> |
| Fixes: 291ab06ecf67 ("net: qualcomm: new Ethernet over SPI driver for QCA7000") |
| Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/qualcomm/qca_spi.c | 2 +- |
| drivers/net/ethernet/qualcomm/qca_uart.c | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c |
| index 9d188931bc09..afd49c7fd87f 100644 |
| --- a/drivers/net/ethernet/qualcomm/qca_spi.c |
| +++ b/drivers/net/ethernet/qualcomm/qca_spi.c |
| @@ -413,7 +413,7 @@ qcaspi_receive(struct qcaspi *qca) |
| skb_put(qca->rx_skb, retcode); |
| qca->rx_skb->protocol = eth_type_trans( |
| qca->rx_skb, qca->rx_skb->dev); |
| - qca->rx_skb->ip_summed = CHECKSUM_UNNECESSARY; |
| + skb_checksum_none_assert(qca->rx_skb); |
| netif_rx_ni(qca->rx_skb); |
| qca->rx_skb = netdev_alloc_skb_ip_align(net_dev, |
| net_dev->mtu + VLAN_ETH_HLEN); |
| diff --git a/drivers/net/ethernet/qualcomm/qca_uart.c b/drivers/net/ethernet/qualcomm/qca_uart.c |
| index db6068cd7a1f..466e9d07697a 100644 |
| --- a/drivers/net/ethernet/qualcomm/qca_uart.c |
| +++ b/drivers/net/ethernet/qualcomm/qca_uart.c |
| @@ -107,7 +107,7 @@ qca_tty_receive(struct serdev_device *serdev, const unsigned char *data, |
| skb_put(qca->rx_skb, retcode); |
| qca->rx_skb->protocol = eth_type_trans( |
| qca->rx_skb, qca->rx_skb->dev); |
| - qca->rx_skb->ip_summed = CHECKSUM_UNNECESSARY; |
| + skb_checksum_none_assert(qca->rx_skb); |
| netif_rx_ni(qca->rx_skb); |
| qca->rx_skb = netdev_alloc_skb_ip_align(netdev, |
| netdev->mtu + |
| -- |
| 2.30.2 |
| |