net: hns3: Fix for rx priv buf allocation when DCB is not supported
authorYunsheng Lin <linyunsheng@huawei.com>
Wed, 20 Sep 2017 10:52:55 +0000 (18:52 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Sep 2017 23:15:39 +0000 (16:15 -0700)
When hdev doesn't support DCB, rx private buffer is not allocated,
otherwise there is not enough buffer for rx shared buffer, causing
buffer allocation process to fail.
This patch fixes by checking the dcb capability in
hclge_rx_buffer_calc.

Fixes: 46a3df9f9718 ("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support")
Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

index e313552bb23dd03c3bd7a6e5e9f2c3d2eaf91964..c660f0caf7092ba1adc55137055e903b80f9c6a6 100644 (file)
@@ -1489,6 +1489,16 @@ int hclge_rx_buffer_calc(struct hclge_dev *hdev, u32 tx_size)
        struct hclge_priv_buf *priv;
        int i;
 
+       /* When DCB is not supported, rx private
+        * buffer is not allocated.
+        */
+       if (!hnae3_dev_dcb_supported(hdev)) {
+               if (!hclge_is_rx_buf_ok(hdev, rx_all))
+                       return -ENOMEM;
+
+               return 0;
+       }
+
        /* step 1, try to alloc private buffer for all enabled tc */
        for (i = 0; i < HCLGE_MAX_TC_NUM; i++) {
                priv = &hdev->priv_buf[i];