net/dpaa2: support configuring dpdmux max Rx frame length
authorHemant Agrawal <hemant.agrawal@nxp.com>
Wed, 24 Feb 2021 12:42:57 +0000 (18:12 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 24 Feb 2021 17:03:30 +0000 (18:03 +0100)
This patch introduce a new PMD API, which can help the applications
to configure the max frame length for a given dpdmux interface

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/net/dpaa2/dpaa2_mux.c
drivers/net/dpaa2/rte_pmd_dpaa2.h
drivers/net/dpaa2/version.map

index f8366e8..b397d33 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2018-2020 NXP
+ * Copyright 2018-2021 NXP
  */
 
 #include <sys/queue.h>
@@ -205,6 +205,32 @@ creation_error:
        return NULL;
 }
 
+int
+rte_pmd_dpaa2_mux_rx_frame_len(uint32_t dpdmux_id, uint16_t max_rx_frame_len)
+{
+       struct dpaa2_dpdmux_dev *dpdmux_dev;
+       int ret;
+
+       /* Find the DPDMUX from dpdmux_id in our list */
+       dpdmux_dev = get_dpdmux_from_id(dpdmux_id);
+       if (!dpdmux_dev) {
+               DPAA2_PMD_ERR("Invalid dpdmux_id: %d", dpdmux_id);
+               return -1;
+       }
+
+       ret = dpdmux_set_max_frame_length(&dpdmux_dev->dpdmux,
+                       CMD_PRI_LOW, dpdmux_dev->token, max_rx_frame_len);
+       if (ret) {
+               DPAA2_PMD_ERR("DPDMUX:Unable to set mtu. check config %d", ret);
+               return ret;
+       }
+
+       DPAA2_PMD_INFO("dpdmux mtu set as %u",
+                       DPAA2_MAX_RX_PKT_LEN - RTE_ETHER_CRC_LEN);
+
+       return ret;
+}
+
 static int
 dpaa2_create_dpdmux_device(int vdev_fd __rte_unused,
                           struct vfio_device_info *obj_info __rte_unused,
index ec8df75..7204a8f 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2018-2020 NXP
+ * Copyright 2018-2021 NXP
  */
 
 #ifndef _RTE_PMD_DPAA2_H
@@ -40,6 +40,22 @@ rte_pmd_dpaa2_mux_flow_create(uint32_t dpdmux_id,
                              struct rte_flow_item *pattern[],
                              struct rte_flow_action *actions[]);
 
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
+ *
+ * demultiplex interface max rx frame length configure
+ *
+ * @param dpdmux_id
+ *    ID of the DPDMUX MC object.
+ * @param max_rx_frame_len
+ *    maximum receive frame length (will be checked to be minimux of all dpnis)
+ *
+ */
+__rte_experimental
+int
+rte_pmd_dpaa2_mux_rx_frame_len(uint32_t dpdmux_id, uint16_t max_rx_frame_len);
+
 /**
  * @warning
  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
index 72d1b2b..b50da13 100644 (file)
@@ -3,6 +3,9 @@ EXPERIMENTAL {
 
        rte_pmd_dpaa2_mux_flow_create;
        rte_pmd_dpaa2_set_custom_hash;
+
+       # added in 21.05
+       rte_pmd_dpaa2_mux_rx_frame_len;
 };
 
 INTERNAL {