net: hns3: fix a wrong checking in the hclge_tx_buffer_calc()
Only the TC is enabled, we need to check whether the buffer is enough,
otherwise it may lead to a wrong -ENOMEM case.
Fixes: 9ffe79a9c2
("net: hns3: Support for dynamically assigning tx buffer to TC")
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3a586422a5
commit
b6b4f987c5
|
@ -1506,13 +1506,14 @@ static int hclge_tx_buffer_calc(struct hclge_dev *hdev,
|
|||
for (i = 0; i < HCLGE_MAX_TC_NUM; i++) {
|
||||
struct hclge_priv_buf *priv = &buf_alloc->priv_buf[i];
|
||||
|
||||
if (total_size < hdev->tx_buf_size)
|
||||
return -ENOMEM;
|
||||
if (hdev->hw_tc_map & BIT(i)) {
|
||||
if (total_size < hdev->tx_buf_size)
|
||||
return -ENOMEM;
|
||||
|
||||
if (hdev->hw_tc_map & BIT(i))
|
||||
priv->tx_buf_size = hdev->tx_buf_size;
|
||||
else
|
||||
} else {
|
||||
priv->tx_buf_size = 0;
|
||||
}
|
||||
|
||||
total_size -= priv->tx_buf_size;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue