net/hns3: report Rx drop packets enable configuration
authorWei Hu (Xavier) <xavier.huwei@huawei.com>
Mon, 24 Aug 2020 11:01:28 +0000 (19:01 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 18 Sep 2020 16:55:06 +0000 (18:55 +0200)
Currently, if there are not available Rx buffer descriptors in receiving
direction based on hns3 network engine, incoming packets will always be
dropped by hardware. This patch reports the '.rx_drop_en' information to
DPDK framework in the '.dev_infos_get', '.rxq_info_get' and
'.rx_queue_setup' ops implementation function.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
drivers/net/hns3/hns3_ethdev.c
drivers/net/hns3/hns3_ethdev_vf.c
drivers/net/hns3/hns3_rxtx.c

index 81e7730..bcbbd7e 100644 (file)
@@ -2495,6 +2495,15 @@ hns3_dev_infos_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *info)
                .nb_mtu_seg_max = HNS3_MAX_NON_TSO_BD_PER_PKT,
        };
 
+       info->default_rxconf = (struct rte_eth_rxconf) {
+               /*
+                * If there are no available Rx buffer descriptors, incoming
+                * packets are always dropped by hardware based on hns3 network
+                * engine.
+                */
+               .rx_drop_en = 1,
+       };
+
        info->vmdq_queue_num = 0;
 
        info->reta_size = HNS3_RSS_IND_TBL_SIZE;
index 63089d0..e6c69ce 100644 (file)
@@ -947,6 +947,15 @@ hns3vf_dev_infos_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *info)
                .nb_mtu_seg_max = HNS3_MAX_NON_TSO_BD_PER_PKT,
        };
 
+       info->default_rxconf = (struct rte_eth_rxconf) {
+               /*
+                * If there are no available Rx buffer descriptors, incoming
+                * packets are always dropped by hardware based on hns3 network
+                * engine.
+                */
+               .rx_drop_en = 1,
+       };
+
        info->vmdq_queue_num = 0;
 
        info->reta_size = HNS3_RSS_IND_TBL_SIZE;
index c0f7981..3e5e32e 100644 (file)
@@ -1251,6 +1251,12 @@ hns3_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t nb_desc,
                return -EINVAL;
        }
 
+       if (conf->rx_drop_en == 0)
+               hns3_warn(hw, "if there are no available Rx descriptors,"
+                         "incoming packets are always dropped. input parameter"
+                         " conf->rx_drop_en(%u) is uneffective.",
+                         conf->rx_drop_en);
+
        if (dev->data->rx_queues[idx]) {
                hns3_rx_queue_release(dev->data->rx_queues[idx]);
                dev->data->rx_queues[idx] = NULL;