Message ID | 1579056405-30385-1-git-send-email-tanhuazhong@huawei.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net] net: hns3: pad the short frame before sending to the hardware | expand |
From: Huazhong Tan <tanhuazhong@huawei.com> Date: Wed, 15 Jan 2020 10:46:45 +0800 > From: Yunsheng Lin <linyunsheng@huawei.com> > > 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@huawei.com> > Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Applied and queued up for -stable.
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index 69545dd..b3deb5e 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -54,6 +54,8 @@ MODULE_PARM_DESC(debug, " Network interface message level setting"); #define HNS3_INNER_VLAN_TAG 1 #define HNS3_OUTER_VLAN_TAG 2 +#define HNS3_MIN_TX_LEN 33U + /* hns3_pci_tbl - PCI Device ID Table * * Last entry must be all 0s @@ -1405,6 +1407,10 @@ netdev_tx_t hns3_nic_net_xmit(struct sk_buff *skb, struct net_device *netdev) int bd_num = 0; int ret; + /* 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);