net/ark: remove Tx padding configuration macro

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>
This commit is contained in:
Ed Czeck 2020-09-08 15:20:18 -04:00 committed by Ferruh Yigit
parent 1502d443d8
commit e274fbfe32
3 changed files with 35 additions and 29 deletions

View 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
--------------------------------

View File

@ -14,6 +14,11 @@
#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
*/
uint16_t to_add =
60 - rte_pktmbuf_pkt_len(mbuf);
char *appended =
rte_pktmbuf_append(mbuf, to_add);
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.
*/
queue->tx_errors += 1;
rte_pktmbuf_free(mbuf);
continue;
}
memset(appended, 0, 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);
}
if (unlikely(mbuf->nb_segs != 1)) {

View 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