net/atlantic: implement core logic for Tx/Rx
Add RX/TX function prototypes for further datapath development. Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: Pavel Belous <pavel.belous@aquantia.com>
This commit is contained in:
parent
bb42aa9ffe
commit
b78958e237
@ -4,6 +4,7 @@
|
||||
; Refer to default.ini for the full list of available PMD features.
|
||||
;
|
||||
[Features]
|
||||
Queue start/stop = Y
|
||||
FW version = Y
|
||||
Linux UIO = Y
|
||||
ARMv8 = Y
|
||||
|
@ -24,6 +24,7 @@ VPATH += $(SRCDIR)/hw_atl
|
||||
#
|
||||
# all source are stored in SRCS-y
|
||||
#
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += atl_rxtx.c
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += atl_ethdev.c
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += atl_hw_regs.c
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += hw_atl_utils.c
|
||||
|
@ -104,6 +104,9 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev)
|
||||
PMD_INIT_FUNC_TRACE();
|
||||
|
||||
eth_dev->dev_ops = &atl_eth_dev_ops;
|
||||
eth_dev->rx_pkt_burst = &atl_recv_pkts;
|
||||
eth_dev->tx_pkt_burst = &atl_xmit_pkts;
|
||||
eth_dev->tx_pkt_prepare = &atl_prep_pkts;
|
||||
|
||||
/* For secondary processes, the primary process has done all the work */
|
||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
||||
@ -155,6 +158,8 @@ eth_atl_dev_uninit(struct rte_eth_dev *eth_dev)
|
||||
atl_dev_close(eth_dev);
|
||||
|
||||
eth_dev->dev_ops = NULL;
|
||||
eth_dev->rx_pkt_burst = NULL;
|
||||
eth_dev->tx_pkt_burst = NULL;
|
||||
|
||||
rte_free(eth_dev->data->mac_addrs);
|
||||
eth_dev->data->mac_addrs = NULL;
|
||||
@ -208,6 +213,15 @@ atl_dev_start(struct rte_eth_dev *dev)
|
||||
err = hw_atl_b0_hw_init(hw, dev->data->mac_addrs->addr_bytes);
|
||||
|
||||
hw_atl_b0_hw_start(hw);
|
||||
/* initialize transmission unit */
|
||||
atl_tx_init(dev);
|
||||
|
||||
/* This can fail when allocating mbufs for descriptor rings */
|
||||
err = atl_rx_init(dev);
|
||||
if (err) {
|
||||
PMD_INIT_LOG(ERR, "Unable to initialize RX hardware");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
PMD_INIT_LOG(DEBUG, "FW version: %u.%u.%u",
|
||||
hw->fw_ver_actual >> 24,
|
||||
|
@ -21,4 +21,19 @@ struct atl_adapter {
|
||||
struct aq_hw_cfg_s hw_cfg;
|
||||
};
|
||||
|
||||
/*
|
||||
* RX/TX function prototypes
|
||||
*/
|
||||
int atl_rx_init(struct rte_eth_dev *dev);
|
||||
int atl_tx_init(struct rte_eth_dev *dev);
|
||||
|
||||
uint16_t atl_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
|
||||
uint16_t nb_pkts);
|
||||
|
||||
uint16_t atl_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
|
||||
uint16_t nb_pkts);
|
||||
|
||||
uint16_t atl_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
|
||||
uint16_t nb_pkts);
|
||||
|
||||
#endif /* _ATLANTIC_ETHDEV_H_ */
|
||||
|
42
drivers/net/atlantic/atl_rxtx.c
Normal file
42
drivers/net/atlantic/atl_rxtx.c
Normal file
@ -0,0 +1,42 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2018 Aquantia Corporation
|
||||
*/
|
||||
|
||||
#include "atl_ethdev.h"
|
||||
|
||||
int
|
||||
atl_tx_init(struct rte_eth_dev *eth_dev __rte_unused)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
atl_rx_init(struct rte_eth_dev *eth_dev __rte_unused)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t
|
||||
atl_prep_pkts(void *tx_queue __rte_unused,
|
||||
struct rte_mbuf **tx_pkts __rte_unused,
|
||||
uint16_t nb_pkts __rte_unused)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t
|
||||
atl_recv_pkts(void *rx_queue __rte_unused,
|
||||
struct rte_mbuf **rx_pkts __rte_unused,
|
||||
uint16_t nb_pkts __rte_unused)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t
|
||||
atl_xmit_pkts(void *tx_queue __rte_unused,
|
||||
struct rte_mbuf **tx_pkts __rte_unused,
|
||||
uint16_t nb_pkts __rte_unused)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
# Copyright(c) 2018 Aquantia Corporation
|
||||
|
||||
sources = files(
|
||||
'atl_rxtx.c',
|
||||
'atl_ethdev.c',
|
||||
'atl_hw_regs.c',
|
||||
'hw_atl/hw_atl_b0.c',
|
||||
|
Loading…
Reference in New Issue
Block a user