]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.20/net-hns3-add-dma_rmb-for-rx-description.patch
51aff99951cbf5930a0fe38e8668348dd4efc68e
[thirdparty/kernel/stable-queue.git] / queue-4.20 / net-hns3-add-dma_rmb-for-rx-description.patch
1 From foo@baz Thu Mar 14 23:20:15 PDT 2019
2 From: Jian Shen <shenjian15@huawei.com>
3 Date: Wed, 6 Mar 2019 11:26:37 +0800
4 Subject: net: hns3: add dma_rmb() for rx description
5
6 From: Jian Shen <shenjian15@huawei.com>
7
8 [ Upstream commit d394d33bee22421b39a0bcdc51ca6d68ba308625 ]
9
10 HW can not guarantee complete write desc->rx.size, even though
11 HNS3_RXD_VLD_B has been set. Driver needs to add dma_rmb()
12 instruction to make sure desc->rx.size is always valid.
13
14 Fixes: e55970950556 ("net: hns3: Add handling of GRO Pkts not fully RX'ed in NAPI poll")
15 Signed-off-by: Jian Shen <shenjian15@huawei.com>
16 Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
17 Signed-off-by: David S. Miller <davem@davemloft.net>
18 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19 ---
20 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 3 +++
21 1 file changed, 3 insertions(+)
22
23 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
24 +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
25 @@ -2373,6 +2373,9 @@ static int hns3_handle_rx_bd(struct hns3
26 length = le16_to_cpu(desc->rx.size);
27 bd_base_info = le32_to_cpu(desc->rx.bd_base_info);
28
29 + /* make sure HW write desc complete */
30 + dma_rmb();
31 +
32 /* Check valid BD */
33 if (unlikely(!hnae3_get_bit(bd_base_info, HNS3_RXD_VLD_B)))
34 return -EFAULT;