net/ark: remove Tx padding configuration macro
authorEd Czeck <ed.czeck@atomicrules.com>
Tue, 8 Sep 2020 19:20:18 +0000 (15:20 -0400)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 18 Sep 2020 16:55:08 +0000 (18:55 +0200)
Replace behavior with RTE_LIBRTE_ARK_MIN_TX_PKTLEN
with a default value of 0.
Update documentation as needed.

Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
doc/guides/nics/ark.rst
drivers/net/ark/ark_ethdev_tx.c
drivers/net/ark/ark_logs.h

index c3ffcbb..358e7f6 100644 (file)
@@ -129,8 +129,10 @@ Configuration Information
    * **CONFIG_RTE_LIBRTE_ARK_PMD** (default y): Enables or disables inclusion
      of the ARK PMD driver in the DPDK compilation.
 
-   * **CONFIG_RTE_LIBRTE_ARK_PAD_TX** (default y):  When enabled TX
-     packets are padded to 60 bytes to support downstream MACS.
+   * **RTE_LIBRTE_ARK_MIN_TX_PKTLEN** (default 0): Sets the minimum
+     packet length for tx packets to the FPGA.  Packets less than this
+     length are padded to meet the requirement. This allows padding to
+     be offloaded or remain in host software.
 
 
 Building DPDK
@@ -144,6 +146,13 @@ By default the ARK PMD library will be built into the DPDK library.
 For configuring and using UIO and VFIO frameworks, please also refer :ref:`the
 documentation that comes with DPDK suite <linux_gsg>`.
 
+To build with a non-zero minimum tx packet length, set the above macro in your
+CFLAGS environment prior to the meson build step. I.e.,
+
+    export CFLAGS="-DRTE_LIBRTE_ARK_MIN_TX_PKTLEN=60"
+    meson build
+
+
 Supported ARK RTL PCIe Instances
 --------------------------------
 
index 72624de..a0e35af 100644 (file)
 #define ARK_TX_META_OFFSET (RTE_PKTMBUF_HEADROOM - ARK_TX_META_SIZE)
 #define ARK_TX_MAX_NOCHAIN (RTE_MBUF_DEFAULT_DATAROOM)
 
+#ifndef RTE_LIBRTE_ARK_MIN_TX_PKTLEN
+#define ARK_MIN_TX_PKTLEN 0
+#else
+#define ARK_MIN_TX_PKTLEN RTE_LIBRTE_ARK_MIN_TX_PKTLEN
+#endif
 
 /* ************************************************************************* */
 struct ark_tx_queue {
@@ -91,6 +96,7 @@ eth_ark_xmit_pkts(void *vtxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
        uint32_t prod_index_limit;
        int stat;
        uint16_t nb;
+       const uint32_t min_pkt_len = ARK_MIN_TX_PKTLEN;
 
        queue = (struct ark_tx_queue *)vtxq;
 
@@ -104,27 +110,26 @@ eth_ark_xmit_pkts(void *vtxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
             ++nb) {
                mbuf = tx_pkts[nb];
 
-               if (ARK_TX_PAD_TO_60) {
-                       if (unlikely(rte_pktmbuf_pkt_len(mbuf) < 60)) {
-                               /* this packet even if it is small can be split,
-                                * be sure to add to the end mbuf
+               if (min_pkt_len &&
+                   unlikely(rte_pktmbuf_pkt_len(mbuf) < min_pkt_len)) {
+                       /* this packet even if it is small can be split,
+                        * be sure to add to the end mbuf
+                        */
+                       uint16_t to_add = min_pkt_len -
+                               rte_pktmbuf_pkt_len(mbuf);
+                       char *appended =
+                               rte_pktmbuf_append(mbuf, to_add);
+
+                       if (appended == 0) {
+                               /* This packet is in error,
+                                * we cannot send it so just
+                                * count it and delete it.
                                 */
-                               uint16_t to_add =
-                                       60 - rte_pktmbuf_pkt_len(mbuf);
-                               char *appended =
-                                       rte_pktmbuf_append(mbuf, to_add);
-
-                               if (appended == 0) {
-                                       /* This packet is in error,
-                                        * we cannot send it so just
-                                        * count it and delete it.
-                                        */
-                                       queue->tx_errors += 1;
-                                       rte_pktmbuf_free(mbuf);
-                                       continue;
-                               }
-                               memset(appended, 0, to_add);
+                               queue->tx_errors += 1;
+                               rte_pktmbuf_free(mbuf);
+                               continue;
                        }
+                       memset(appended, 0, to_add);
                }
 
                if (unlikely(mbuf->nb_segs != 1)) {
index c3d7e7d..ca46d86 100644 (file)
@@ -8,14 +8,6 @@
 #include <inttypes.h>
 #include <rte_log.h>
 
-
-/* Configuration option to pad TX packets to 60 bytes */
-#ifdef RTE_LIBRTE_ARK_PAD_TX
-#define ARK_TX_PAD_TO_60   1
-#else
-#define ARK_TX_PAD_TO_60   0
-#endif
-
 /* system camel case definition changed to upper case */
 #define PRIU32 PRIu32
 #define PRIU64 PRIu64