• Yunsheng Lin's avatar
    net: hns3: fix for not calculating TX BD send size correctly · 48ae74c9
    Yunsheng Lin authored
    With GRO and fraglist support, the SKB can be aggregated to
    a total size of 65535, and when that SKB is forwarded through
    a bridge, the size of the SKB may be pushed to exceed the size
    of 65535 when br_dev_queue_push_xmit() is called.
    
    The max send size of BD supported by the HW is 65535, when a SKB
    with a headlen of over 65535 is sent to the driver, the driver
    needs to use multi BD to send the linear data, and the send size
    of the last BD is calculated incorrectly by the driver who is
    using '&' operation, which causes a TX error.
    
    Use '%' operation to fix this problem.
    
    Fixes: 3fe13ed9 ("net: hns3: avoid mult + div op in critical data path")
    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>
    48ae74c9
hns3_enet.h 15.5 KB