net/dpaa: support loopback API
authorHemant Agrawal <hemant.agrawal@nxp.com>
Wed, 10 Jan 2018 10:46:37 +0000 (16:16 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 16 Jan 2018 17:47:49 +0000 (18:47 +0100)
PMD specific API is being added as an EXPERIMENTAL API

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
doc/api/doxy-api-index.md
doc/api/doxy-api.conf
drivers/net/dpaa/Makefile
drivers/net/dpaa/dpaa_ethdev.c
drivers/net/dpaa/rte_pmd_dpaa.h [new file with mode: 0644]
drivers/net/dpaa/rte_pmd_dpaa_version.map

index 3492702..38314af 100644 (file)
@@ -60,6 +60,7 @@ The public API headers are grouped by topics:
   [ixgbe]              (@ref rte_pmd_ixgbe.h),
   [i40e]               (@ref rte_pmd_i40e.h),
   [bnxt]               (@ref rte_pmd_bnxt.h),
+  [dpaa]               (@ref rte_pmd_dpaa.h),
   [crypto_scheduler]   (@ref rte_cryptodev_scheduler.h)
 
 - **memory**:
index b2cbe94..09e3232 100644 (file)
@@ -33,6 +33,7 @@ INPUT                   = doc/api/doxy-api-index.md \
                           drivers/crypto/scheduler \
                           drivers/net/bnxt \
                           drivers/net/bonding \
+                          drivers/net/dpaa \
                           drivers/net/i40e \
                           drivers/net/ixgbe \
                           drivers/net/softnic \
index e5f662f..b1fc5a0 100644 (file)
@@ -34,4 +34,7 @@ LDLIBS += -lrte_mempool_dpaa
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs
 
+# install this header file
+SYMLINK-$(CONFIG_RTE_LIBRTE_DPAA_PMD)-include := rte_pmd_dpaa.h
+
 include $(RTE_SDK)/mk/rte.lib.mk
index de016ab..85ccea4 100644 (file)
@@ -38,6 +38,7 @@
 
 #include <dpaa_ethdev.h>
 #include <dpaa_rxtx.h>
+#include <rte_pmd_dpaa.h>
 
 #include <fsl_usd.h>
 #include <fsl_qman.h>
@@ -84,6 +85,8 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
                offsetof(struct dpaa_if_stats, tund)},
 };
 
+static struct rte_dpaa_driver rte_dpaa_pmd;
+
 static int
 dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 {
@@ -707,6 +710,45 @@ static struct eth_dev_ops dpaa_devops = {
        .fw_version_get           = dpaa_fw_version_get,
 };
 
+static bool
+is_device_supported(struct rte_eth_dev *dev, struct rte_dpaa_driver *drv)
+{
+       if (strcmp(dev->device->driver->name,
+                  drv->driver.name))
+               return false;
+
+       return true;
+}
+
+static bool
+is_dpaa_supported(struct rte_eth_dev *dev)
+{
+       return is_device_supported(dev, &rte_dpaa_pmd);
+}
+
+int
+rte_pmd_dpaa_set_tx_loopback(uint8_t port, uint8_t on)
+{
+       struct rte_eth_dev *dev;
+       struct dpaa_if *dpaa_intf;
+
+       RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV);
+
+       dev = &rte_eth_devices[port];
+
+       if (!is_dpaa_supported(dev))
+               return -ENOTSUP;
+
+       dpaa_intf = dev->data->dev_private;
+
+       if (on)
+               fman_if_loopback_enable(dpaa_intf->fif);
+       else
+               fman_if_loopback_disable(dpaa_intf->fif);
+
+       return 0;
+}
+
 static int dpaa_fc_set_default(struct dpaa_if *dpaa_intf)
 {
        struct rte_eth_fc_conf *fc_conf;
diff --git a/drivers/net/dpaa/rte_pmd_dpaa.h b/drivers/net/dpaa/rte_pmd_dpaa.h
new file mode 100644 (file)
index 0000000..9614be8
--- /dev/null
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright 2018 NXP
+ */
+
+#ifndef _PMD_DPAA_H_
+#define _PMD_DPAA_H_
+
+/**
+ * @file rte_pmd_dpaa.h
+ *
+ * NXP dpaa PMD specific functions.
+ *
+ * @warning
+ * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
+ *
+ */
+
+#include <rte_ethdev.h>
+
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
+ *
+ * Enable/Disable TX loopback
+ *
+ * @param port
+ *    The port identifier of the Ethernet device.
+ * @param on
+ *    1 - Enable TX loopback.
+ *    0 - Disable TX loopback.
+ * @return
+ *   - (0) if successful.
+ *   - (-ENODEV) if *port* invalid.
+ *   - (-EINVAL) if bad parameter.
+ */
+int
+rte_pmd_dpaa_set_tx_loopback(uint8_t port, uint8_t on);
+
+#endif /* _PMD_DPAA_H_ */
index a70bd19..d1f3ea4 100644 (file)
@@ -2,3 +2,11 @@ DPDK_17.11 {
 
        local: *;
 };
+
+EXPERIMENTAL {
+       global:
+
+       rte_pmd_dpaa_set_tx_loopback;
+
+       local: *;
+} DPDK_17.11;