net: hns3: add handling for xmit skb with recursive fraglist
mainline inclusion from mainline-v5.13-rc1 commit d5d5e0193ee8f88efbbc7f1471087255657bc19a category: feature bugzilla: NA CVE: NA ---------------------------- Currently hns3 driver only handle the xmit skb with one level of fraglist skb, add handling for multi level by calling hns3_tx_bd_num() recursively when calculating bd num and calling hns3_fill_skb_to_desc() recursively when filling tx desc. When the skb has a fraglist level of 24, the skb is simply dropped and stats.max_recursion_level is added to record the error. Move the stat handling from hns3_nic_net_xmit() to hns3_nic_maybe_stop_tx() in order to handle different error stat and add the 'max_recursion_level' and 'hw_limitation' stat. Note that the max recursive level as 24 is chose according to below: commit 48a1df65 ("skbuff: return -EMSGSIZE in skb_to_sgvec to prevent overflow"). And that we are not able to find a testcase to verify the recursive fraglist case, so Fixes tag is not provided. Reported-by:Barry Song <song.bao.hua@hisilicon.com> Signed-off-by:
Yunsheng Lin <linyunsheng@huawei.com> Signed-off-by:
Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by:
Yonglong Liu <liuyonglong@huawei.com> Reviewed-by:
li yongxin <liyongxin1@huawei.com> Signed-off-by:
Yang Yingliang <yangyingliang@huawei.com>
Showing
- drivers/net/ethernet/hisilicon/hns3/hns3_enet.c 72 additions, 45 deletionsdrivers/net/ethernet/hisilicon/hns3/hns3_enet.c
- drivers/net/ethernet/hisilicon/hns3/hns3_enet.h 2 additions, 0 deletionsdrivers/net/ethernet/hisilicon/hns3/hns3_enet.h
- drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c 2 additions, 0 deletionsdrivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
Please register or sign in to comment