From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Ferre Subject: Re: [RFC PATCH 1/2] net: macb: Add CAP to disable hardware TX checksum offloading Date: Mon, 4 Jun 2018 17:13:28 +0200 Message-ID: References: <1527284654-24835-1-git-send-email-jennifer.dahm@ni.com> <1527284654-24835-2-git-send-email-jennifer.dahm@ni.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Cc: Nathan Sullivan To: Jennifer Dahm , , "David S . Miller" Return-path: Received: from esa4.microchip.iphmx.com ([68.232.154.123]:22433 "EHLO esa4.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752017AbeFDPPj (ORCPT ); Mon, 4 Jun 2018 11:15:39 -0400 In-Reply-To: <1527284654-24835-2-git-send-email-jennifer.dahm@ni.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 25/05/2018 at 23:44, Jennifer Dahm wrote: > 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 Nitpicking: "DISABLED" tends to be at the end of the name... > #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)) Why not the other way around? negating a "disabled" feature is always challenge ;-) > + 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; > -- Nicolas Ferre