ACK/Cmnt: [PATCH 1/1][SRU][B] net: hns3: pad the short frame before sending to the hardware

Kleber Souza kleber.souza at canonical.com
Tue Feb 25 16:42:53 UTC 2020


On 24.02.20 17:47, Taihsiang Ho (tai271828) wrote:
> From: Yunsheng Lin <linyunsheng at huawei.com>
> 
> BugLink: http://bugs.launchpad.net/bugs/1860320
> 
> The hardware can not handle short frames below or equal to 32
> bytes according to the hardware user manual, and it will trigger
> a RAS error when the frame's length is below 33 bytes.
> 
> This patch pads the SKB when skb->len is below 33 bytes before
> sending it to hardware.
> 
> Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
> Signed-off-by: Yunsheng Lin <linyunsheng at huawei.com>
> Signed-off-by: Huazhong Tan <tanhuazhong at huawei.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (backported from commit 36c67349a1a1c88b9cf11d7ca7762ababdb38867)
> Signed-off-by: Taihsiang Ho (tai271828) <taihsiang.ho at canonical.com>

Clean cherry-pick and specific to platform driver.

Acked-by: Kleber Sacilotto de Souza <kleber.souza at canonical.com>


Please nominate the bug report against the affected package and series
when sending kernel patches to the ML. I have fixed it adding the
nominations to linux -> bionic.

Is this patch needed for newer series as well?


Kleber


> ---
>  drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
> index a6b834c6d323..f5f24c065a8b 100644
> --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
> +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
> @@ -32,6 +32,8 @@ static const char hns3_driver_string[] =
>  static const char hns3_copyright[] = "Copyright (c) 2017 Huawei Corporation.";
>  static struct hnae3_client client;
>  
> +#define HNS3_MIN_TX_LEN		33U
> +
>  /* hns3_pci_tbl - PCI Device ID Table
>   *
>   * Last entry must be all 0s
> @@ -1224,6 +1226,10 @@ netdev_tx_t hns3_nic_net_xmit(struct sk_buff *skb, struct net_device *netdev)
>  	int ret;
>  	int i;
>  
> +	/* Hardware can only handle short frames above 32 bytes */
> +	if (skb_put_padto(skb, HNS3_MIN_TX_LEN))
> +		return NETDEV_TX_OK;
> +
>  	/* Prefetch the data used later */
>  	prefetch(skb->data);
>  
> 




More information about the kernel-team mailing list