• Yunsheng Lin's avatar
    net: hns3: add handling for xmit skb with recursive fraglist · d5d5e019
    Yunsheng Lin authored
    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: default avatarBarry Song <song.bao.hua@hisilicon.com>
    Signed-off-by: default avatarYunsheng Lin <linyunsheng@huawei.com>
    Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d5d5e019
hns3_enet.h 16.1 KB