diff options
author | Peng Li <lipeng321@huawei.com> | 2018-12-20 11:52:05 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-12-19 23:47:59 -0800 |
commit | 31a16f99e02c2e0b40a5fb05d66f5e56721027e2 (patch) | |
tree | 9137713e33a8ba7c136705d1116e9252ec53701f /drivers/net/ethernet/hisilicon | |
parent | 8edc2285b7285c5fbffe438dc8113260d3e76656 (diff) | |
download | linux-stable-31a16f99e02c2e0b40a5fb05d66f5e56721027e2.tar.gz linux-stable-31a16f99e02c2e0b40a5fb05d66f5e56721027e2.tar.bz2 linux-stable-31a16f99e02c2e0b40a5fb05d66f5e56721027e2.zip |
net: hns3: fix the descriptor index when get rss type
Driver gets rss information from the last descriptor of the packet.
When driver handle the rss type, ring->next_to_clean indicates the
first descriptor of next packet.
This patch fix the descriptor index with "ring->next_to_clean - 1".
Fixes: 232fc64b6e62 ("net: hns3: Add HW RSS hash information to RX skb")
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/hisilicon')
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index 624b8a733db5..d3b9aaf96c1c 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -2550,9 +2550,16 @@ static void hns3_set_gro_param(struct sk_buff *skb, u32 l234info, static void hns3_set_rx_skb_rss_type(struct hns3_enet_ring *ring, struct sk_buff *skb) { - struct hns3_desc *desc = &ring->desc[ring->next_to_clean]; struct hnae3_handle *handle = ring->tqp->handle; enum pkt_hash_types rss_type; + struct hns3_desc *desc; + int last_bd; + + /* When driver handle the rss type, ring->next_to_clean indicates the + * first descriptor of next packet, need -1 here. + */ + last_bd = (ring->next_to_clean - 1 + ring->desc_num) % ring->desc_num; + desc = &ring->desc[last_bd]; if (le32_to_cpu(desc->rx.rss_hash)) rss_type = handle->kinfo.rss_type; |