summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYunsheng Lin2017-09-20 12:52:55 +0200
committerDavid S. Miller2017-09-21 01:15:39 +0200
commitd602a52540c9b92e0dd152cfe1d0848c23f08894 (patch)
treeda8352640716efba6e7aa006cd5fc8059348c3ab
parentnet: hns3: Fix for rx_priv_buf_alloc not setting rx shared buffer (diff)
downloadkernel-qcow2-linux-d602a52540c9b92e0dd152cfe1d0848c23f08894.tar.gz
kernel-qcow2-linux-d602a52540c9b92e0dd152cfe1d0848c23f08894.tar.xz
kernel-qcow2-linux-d602a52540c9b92e0dd152cfe1d0848c23f08894.zip
net: hns3: Fix for rx priv buf allocation when DCB is not supported
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>
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index e313552bb23d..c660f0caf709 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -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];