From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jennifer Dahm Subject: [RFC PATCH 1/2] net: macb: Add CAP to disable hardware TX checksum offloading Date: Fri, 25 May 2018 16:44:13 -0500 Message-ID: <1527284654-24835-2-git-send-email-jennifer.dahm@ni.com> References: <1527284654-24835-1-git-send-email-jennifer.dahm@ni.com> Mime-Version: 1.0 Content-Type: text/plain Cc: Nathan Sullivan , Jennifer Dahm To: , "David S . Miller" , Nicolas Ferre Return-path: Received: from mx0a-00010702.pphosted.com ([148.163.156.75]:34260 "EHLO mx0b-00010702.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1030291AbeEYVoa (ORCPT ); Fri, 25 May 2018 17:44:30 -0400 In-Reply-To: <1527284654-24835-1-git-send-email-jennifer.dahm@ni.com> Sender: netdev-owner@vger.kernel.org List-ID: Certain PHYs have significant bugs in their TX checksum offloading that cannot be solved in software. In order to accommodate these PHYS, add a CAP to disable this hardware. Signed-off-by: Jennifer Dahm --- drivers/net/ethernet/cadence/macb.h | 1 + drivers/net/ethernet/cadence/macb_main.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h index 8665982..6b85e97 100644 --- a/drivers/net/ethernet/cadence/macb.h +++ b/drivers/net/ethernet/cadence/macb.h @@ -635,6 +635,7 @@ #define MACB_CAPS_USRIO_DISABLED 0x00000010 #define MACB_CAPS_JUMBO 0x00000020 #define MACB_CAPS_GEM_HAS_PTP 0x00000040 +#define MACB_CAPS_DISABLE_TX_HW_CSUM 0x00000080 #define MACB_CAPS_FIFO_MODE 0x10000000 #define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000 #define MACB_CAPS_SG_DISABLED 0x40000000 diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 3e93df5..a5d564b 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -3360,8 +3360,12 @@ static int macb_init(struct platform_device *pdev) dev->hw_features |= MACB_NETIF_LSO; /* Checksum offload is only available on gem with packet buffer */ - if (macb_is_gem(bp) && !(bp->caps & MACB_CAPS_FIFO_MODE)) - dev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_RXCSUM; + if (macb_is_gem(bp) && !(bp->caps & MACB_CAPS_FIFO_MODE)) { + if (!(bp->caps & MACB_CAPS_DISABLE_TX_HW_CSUM)) + dev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_RXCSUM; + else + dev->hw_features |= NETIF_F_RXCSUM; + } if (bp->caps & MACB_CAPS_SG_DISABLED) dev->hw_features &= ~NETIF_F_SG; dev->features = dev->hw_features; -- 2.7.4