net/axgbe: add minimal init and uninit support
Add ethernet poll mode driver for AMD 10G devices embedded in AMD EPYC™ EMBEDDED 3000 family processors. Signed-off-by: Ravi Kumar <ravi1.kumar@amd.com>
This commit is contained in:
parent
28aa16db4a
commit
8691632f92
@ -381,6 +381,12 @@ M: Ferruh Yigit <ferruh.yigit@intel.com>
|
||||
T: git://dpdk.org/next/dpdk-next-net
|
||||
F: doc/guides/nics/features/default.ini
|
||||
|
||||
AMD AXGBE PMD
|
||||
M: Ravi Kumar <ravi1.kumar@amd.com>
|
||||
F: drivers/net/axgbe/
|
||||
F: doc/guides/nics/axgbe.rst
|
||||
F: doc/guides/nics/features/axgbe.ini
|
||||
|
||||
Link bonding
|
||||
M: Declan Doherty <declan.doherty@intel.com>
|
||||
F: drivers/net/bonding/
|
||||
|
@ -157,6 +157,12 @@ CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
|
||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
|
||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
|
||||
|
||||
#
|
||||
# Compile AMD PMD
|
||||
#
|
||||
CONFIG_RTE_LIBRTE_AXGBE_PMD=y
|
||||
CONFIG_RTE_LIBRTE_AXGBE_PMD_DEBUG=n
|
||||
|
||||
#
|
||||
# Compile burst-oriented Broadcom PMD driver
|
||||
#
|
||||
|
@ -58,6 +58,12 @@ New Features
|
||||
* Added support for NVGRE, VXLAN and GENEVE filters in flow API.
|
||||
* Added support for DROP action in flow API.
|
||||
|
||||
* **Added Ethernet poll mode driver for AMD XGBE devices.**
|
||||
|
||||
Added the new ``axgbe`` ethernet poll mode driver for AMD XGBE devices.
|
||||
See the :doc:`../nics/axgbe` nic driver guide for more details on this
|
||||
new driver.
|
||||
|
||||
* **Added device event monitor framework.**
|
||||
|
||||
Added a general device event monitor framework at EAL, for device dynamic management.
|
||||
|
@ -12,6 +12,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += af_packet
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_ARK_PMD) += ark
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_AVF_PMD) += avf
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_AVP_PMD) += avp
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_AXGBE_PMD) += axgbe
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += bnx2x
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += bonding
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += cxgbe
|
||||
|
27
drivers/net/axgbe/Makefile
Normal file
27
drivers/net/axgbe/Makefile
Normal file
@ -0,0 +1,27 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
#
|
||||
# library name
|
||||
#
|
||||
LIB = librte_pmd_axgbe.a
|
||||
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
EXPORT_MAP := rte_pmd_axgbe_version.map
|
||||
|
||||
LIBABIVER := 1
|
||||
|
||||
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool
|
||||
LDLIBS += -lrte_pci -lrte_bus_pci
|
||||
LDLIBS += -lrte_ethdev
|
||||
|
||||
#
|
||||
# all source are stored in SRCS-y
|
||||
#
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_AXGBE_PMD) += axgbe_ethdev.c
|
||||
|
||||
include $(RTE_SDK)/mk/rte.lib.mk
|
50
drivers/net/axgbe/axgbe_common.h
Normal file
50
drivers/net/axgbe/axgbe_common.h
Normal file
@ -0,0 +1,50 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
* Copyright(c) 2018 Synopsys, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef __AXGBE_COMMON_H__
|
||||
#define __AXGBE_COMMON_H__
|
||||
|
||||
#include "axgbe_logs.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <limits.h>
|
||||
#include <sys/queue.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <inttypes.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include <rte_byteorder.h>
|
||||
#include <rte_memory.h>
|
||||
#include <rte_malloc.h>
|
||||
#include <rte_hexdump.h>
|
||||
#include <rte_log.h>
|
||||
#include <rte_debug.h>
|
||||
#include <rte_branch_prediction.h>
|
||||
#include <rte_eal.h>
|
||||
#include <rte_memzone.h>
|
||||
#include <rte_ether.h>
|
||||
#include <rte_ethdev.h>
|
||||
#include <rte_dev.h>
|
||||
#include <rte_errno.h>
|
||||
#include <rte_dev.h>
|
||||
#include <rte_ethdev_pci.h>
|
||||
#include <rte_common.h>
|
||||
#include <rte_cycles.h>
|
||||
#include <rte_io.h>
|
||||
|
||||
#define BIT(nr) (1 << (nr))
|
||||
#ifndef ARRAY_SIZE
|
||||
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
|
||||
#endif
|
||||
|
||||
#define AXGBE_HZ 250
|
||||
|
||||
#endif /* __AXGBE_COMMON_H__ */
|
97
drivers/net/axgbe/axgbe_ethdev.c
Normal file
97
drivers/net/axgbe/axgbe_ethdev.c
Normal file
@ -0,0 +1,97 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
* Copyright(c) 2018 Synopsys, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "axgbe_ethdev.h"
|
||||
|
||||
static int eth_axgbe_dev_init(struct rte_eth_dev *eth_dev);
|
||||
static int eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev);
|
||||
|
||||
/* The set of PCI devices this driver supports */
|
||||
#define AMD_PCI_VENDOR_ID 0x1022
|
||||
#define AMD_PCI_AXGBE_DEVICE_V2A 0x1458
|
||||
#define AMD_PCI_AXGBE_DEVICE_V2B 0x1459
|
||||
|
||||
int axgbe_logtype_init;
|
||||
int axgbe_logtype_driver;
|
||||
|
||||
static const struct rte_pci_id pci_id_axgbe_map[] = {
|
||||
{RTE_PCI_DEVICE(AMD_PCI_VENDOR_ID, AMD_PCI_AXGBE_DEVICE_V2A)},
|
||||
{RTE_PCI_DEVICE(AMD_PCI_VENDOR_ID, AMD_PCI_AXGBE_DEVICE_V2B)},
|
||||
{ .vendor_id = 0, },
|
||||
};
|
||||
|
||||
/*
|
||||
* It returns 0 on success.
|
||||
*/
|
||||
static int
|
||||
eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
|
||||
{
|
||||
PMD_INIT_FUNC_TRACE();
|
||||
struct axgbe_port *pdata;
|
||||
struct rte_pci_device *pci_dev;
|
||||
|
||||
/*
|
||||
* For secondary processes, we don't initialise any further as primary
|
||||
* has already done this work.
|
||||
*/
|
||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
||||
return 0;
|
||||
|
||||
pdata = (struct axgbe_port *)eth_dev->data->dev_private;
|
||||
pdata->eth_dev = eth_dev;
|
||||
|
||||
pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
|
||||
pdata->pci_dev = pci_dev;
|
||||
|
||||
PMD_INIT_LOG(DEBUG, "port %d vendorID=0x%x deviceID=0x%x",
|
||||
eth_dev->data->port_id, pci_dev->id.vendor_id,
|
||||
pci_dev->id.device_id);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
eth_axgbe_dev_uninit(struct rte_eth_dev *eth_dev __rte_unused)
|
||||
{
|
||||
/* stub function */
|
||||
PMD_INIT_FUNC_TRACE();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int eth_axgbe_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
|
||||
struct rte_pci_device *pci_dev)
|
||||
{
|
||||
return rte_eth_dev_pci_generic_probe(pci_dev,
|
||||
sizeof(struct axgbe_port), eth_axgbe_dev_init);
|
||||
}
|
||||
|
||||
static int eth_axgbe_pci_remove(struct rte_pci_device *pci_dev)
|
||||
{
|
||||
return rte_eth_dev_pci_generic_remove(pci_dev, eth_axgbe_dev_uninit);
|
||||
}
|
||||
|
||||
static struct rte_pci_driver rte_axgbe_pmd = {
|
||||
.id_table = pci_id_axgbe_map,
|
||||
.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
|
||||
.probe = eth_axgbe_pci_probe,
|
||||
.remove = eth_axgbe_pci_remove,
|
||||
};
|
||||
|
||||
RTE_PMD_REGISTER_PCI(net_axgbe, rte_axgbe_pmd);
|
||||
RTE_PMD_REGISTER_PCI_TABLE(net_axgbe, pci_id_axgbe_map);
|
||||
RTE_PMD_REGISTER_KMOD_DEP(net_axgbe, "* igb_uio | uio_pci_generic | vfio-pci");
|
||||
|
||||
RTE_INIT(axgbe_init_log);
|
||||
static void
|
||||
axgbe_init_log(void)
|
||||
{
|
||||
axgbe_logtype_init = rte_log_register("pmd.net.axgbe.init");
|
||||
if (axgbe_logtype_init >= 0)
|
||||
rte_log_set_level(axgbe_logtype_init, RTE_LOG_NOTICE);
|
||||
axgbe_logtype_driver = rte_log_register("pmd.net.axgbe.driver");
|
||||
if (axgbe_logtype_driver >= 0)
|
||||
rte_log_set_level(axgbe_logtype_driver, RTE_LOG_NOTICE);
|
||||
}
|
23
drivers/net/axgbe/axgbe_ethdev.h
Normal file
23
drivers/net/axgbe/axgbe_ethdev.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
* Copyright(c) 2018 Synopsys, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef RTE_ETH_AXGBE_H_
|
||||
#define RTE_ETH_AXGBE_H_
|
||||
|
||||
#include <rte_mempool.h>
|
||||
#include <rte_lcore.h>
|
||||
#include "axgbe_common.h"
|
||||
|
||||
/*
|
||||
* Structure to store private data for each port.
|
||||
*/
|
||||
struct axgbe_port {
|
||||
/* Ethdev where port belongs*/
|
||||
struct rte_eth_dev *eth_dev;
|
||||
/* Pci dev info */
|
||||
const struct rte_pci_device *pci_dev;
|
||||
};
|
||||
|
||||
#endif /* RTE_ETH_AXGBE_H_ */
|
26
drivers/net/axgbe/axgbe_logs.h
Normal file
26
drivers/net/axgbe/axgbe_logs.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _AXGBE_LOGS_H_
|
||||
#define _AXGBE_LOGS_H_
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
extern int axgbe_logtype_init;
|
||||
#define PMD_INIT_LOG(level, fmt, args...) \
|
||||
rte_log(RTE_LOG_ ## level, axgbe_logtype_init, "%s(): " fmt "\n", \
|
||||
__func__, ##args)
|
||||
|
||||
#ifdef RTE_LIBRTE_AXGBE_PMD_DEBUG
|
||||
#define PMD_INIT_FUNC_TRACE() PMD_INIT_LOG(DEBUG, " >>")
|
||||
#else
|
||||
#define PMD_INIT_FUNC_TRACE() do { } while (0)
|
||||
#endif
|
||||
|
||||
extern int axgbe_logtype_driver;
|
||||
#define PMD_DRV_LOG(level, fmt, args...) \
|
||||
rte_log(RTE_LOG_ ## level, axgbe_logtype_driver, "%s(): " fmt, \
|
||||
__func__, ## args)
|
||||
|
||||
#endif /* _AXGBE_LOGS_H_ */
|
4
drivers/net/axgbe/rte_pmd_axgbe_version.map
Normal file
4
drivers/net/axgbe/rte_pmd_axgbe_version.map
Normal file
@ -0,0 +1,4 @@
|
||||
DPDK_18.05 {
|
||||
|
||||
local: *;
|
||||
};
|
@ -137,6 +137,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_ARK_PMD) += -lrte_pmd_ark
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_AVF_PMD) += -lrte_pmd_avf
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_AVP_PMD) += -lrte_pmd_avp
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_AXGBE_PMD) += -lrte_pmd_axgbe
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lrte_pmd_bnx2x -lz
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += -lrte_pmd_bnxt
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += -lrte_pmd_bond
|
||||
|
Loading…
Reference in New Issue
Block a user