Add RX/TX function prototypes for further datapath development. Signed-off-by: Howard Wang <howard_w...@realsil.com.cn> --- drivers/net/r8169/meson.build | 1 + drivers/net/r8169/r8169_ethdev.c | 17 ++++++++++ drivers/net/r8169/r8169_ethdev.h | 3 ++ drivers/net/r8169/r8169_rxtx.c | 57 ++++++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 drivers/net/r8169/r8169_rxtx.c
diff --git a/drivers/net/r8169/meson.build b/drivers/net/r8169/meson.build index f659e56192..ff7d6ca4b8 100644 --- a/drivers/net/r8169/meson.build +++ b/drivers/net/r8169/meson.build @@ -4,5 +4,6 @@ sources = files( 'r8169_ethdev.c', 'r8169_hw.c', + 'r8169_rxtx.c', ) diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c index 203907da3e..82fa01e0f5 100644 --- a/drivers/net/r8169/r8169_ethdev.c +++ b/drivers/net/r8169/r8169_ethdev.c @@ -27,6 +27,8 @@ #include "r8169_ethdev.h" #include "r8169_base.h" +#include "r8169_logs.h" +#include "r8169_hw.h" static int rtl_dev_configure(struct rte_eth_dev *dev __rte_unused); static int rtl_dev_start(struct rte_eth_dev *dev); @@ -68,10 +70,23 @@ rtl_dev_start(struct rte_eth_dev *dev) { struct rtl_adapter *adapter = RTL_DEV_PRIVATE(dev); struct rtl_hw *hw = &adapter->hw; + int err; + + /* Initialize transmission unit */ + rtl_tx_init(dev); + + /* This can fail when allocating mbufs for descriptor rings */ + err = rtl_rx_init(dev); + if (err) { + PMD_INIT_LOG(ERR, "Unable to initialize RX hardware"); + goto error; + } hw->adapter_stopped = 0; return 0; +error: + return -EIO; } /* @@ -117,6 +132,8 @@ rtl_dev_init(struct rte_eth_dev *dev) struct rtl_hw *hw = &adapter->hw; dev->dev_ops = &rtl_eth_dev_ops; + dev->tx_pkt_burst = &rtl_xmit_pkts; + dev->rx_pkt_burst = &rtl_recv_pkts; /* For secondary processes, the primary process has done all the work */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) diff --git a/drivers/net/r8169/r8169_ethdev.h b/drivers/net/r8169/r8169_ethdev.h index 04458dc497..7c6e110e7f 100644 --- a/drivers/net/r8169/r8169_ethdev.h +++ b/drivers/net/r8169/r8169_ethdev.h @@ -35,6 +35,9 @@ struct rtl_adapter { #define RTL_DEV_PRIVATE(eth_dev) \ ((struct rtl_adapter *)((eth_dev)->data->dev_private)) +int rtl_rx_init(struct rte_eth_dev *dev); +int rtl_tx_init(struct rte_eth_dev *dev); + uint16_t rtl_xmit_pkts(void *txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); uint16_t rtl_recv_pkts(void *rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts); diff --git a/drivers/net/r8169/r8169_rxtx.c b/drivers/net/r8169/r8169_rxtx.c new file mode 100644 index 0000000000..cce78d4e60 --- /dev/null +++ b/drivers/net/r8169/r8169_rxtx.c @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2024 Realtek Corporation. All rights reserved + */ + +#include <sys/queue.h> +#include <stdio.h> +#include <errno.h> +#include <stdint.h> +#include <stdarg.h> + +#include <rte_eal.h> + +#include <rte_string_fns.h> +#include <rte_common.h> +#include <rte_interrupts.h> +#include <rte_byteorder.h> +#include <rte_log.h> +#include <rte_debug.h> +#include <rte_pci.h> +#include <bus_pci_driver.h> +#include <rte_ether.h> +#include <ethdev_driver.h> +#include <ethdev_pci.h> +#include <rte_memory.h> +#include <rte_malloc.h> +#include <dev_driver.h> + +#include "r8169_ethdev.h" +#include "r8169_hw.h" +#include "r8169_logs.h" + +/* ---------------------------------RX---------------------------------- */ +int +rtl_rx_init(struct rte_eth_dev *dev) +{ + return 0; +} + +uint16_t +rtl_recv_pkts(void *rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) +{ + return 0; +} + +/* ---------------------------------TX---------------------------------- */ +int +rtl_tx_init(struct rte_eth_dev *dev) +{ + return 0; +} + +uint16_t +rtl_xmit_pkts(void *txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) +{ + return 0; +} + -- 2.34.1