static int eth_ark_dev_start(struct rte_eth_dev *dev);
static void eth_ark_dev_stop(struct rte_eth_dev *dev);
static void eth_ark_dev_close(struct rte_eth_dev *dev);
-static void eth_ark_dev_info_get(struct rte_eth_dev *dev,
- struct rte_eth_dev_info *dev_info);
+static int eth_ark_dev_info_get(struct rte_eth_dev *dev,
+ struct rte_eth_dev_info *dev_info);
static int eth_ark_dev_link_update(struct rte_eth_dev *dev,
int wait_to_complete);
static int eth_ark_dev_set_link_up(struct rte_eth_dev *dev);
static int eth_ark_dev_set_link_down(struct rte_eth_dev *dev);
static int eth_ark_dev_stats_get(struct rte_eth_dev *dev,
struct rte_eth_stats *stats);
-static void eth_ark_dev_stats_reset(struct rte_eth_dev *dev);
+static int eth_ark_dev_stats_reset(struct rte_eth_dev *dev);
static int eth_ark_set_default_mac_addr(struct rte_eth_dev *dev,
- struct ether_addr *mac_addr);
+ struct rte_ether_addr *mac_addr);
static int eth_ark_macaddr_add(struct rte_eth_dev *dev,
- struct ether_addr *mac_addr,
+ struct rte_ether_addr *mac_addr,
uint32_t index,
uint32_t pool);
static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
#define ARK_TX_MAX_QUEUE (4096 * 4)
#define ARK_TX_MIN_QUEUE (256)
+int ark_logtype;
+
static const char * const valid_arguments[] = {
ARK_PKTGEN_ARG,
ARK_PKTCHKR_ARG,
(void (*)(struct rte_eth_dev *, void *))
dlsym(ark->d_handle, "stats_reset");
ark->user_ext.mac_addr_add =
- (void (*)(struct rte_eth_dev *, struct ether_addr *, uint32_t,
- uint32_t, void *))
+ (void (*)(struct rte_eth_dev *, struct rte_ether_addr *,
+ uint32_t, uint32_t, void *))
dlsym(ark->d_handle, "mac_addr_add");
ark->user_ext.mac_addr_remove =
(void (*)(struct rte_eth_dev *, uint32_t, void *))
dlsym(ark->d_handle, "mac_addr_remove");
ark->user_ext.mac_addr_set =
- (void (*)(struct rte_eth_dev *, struct ether_addr *,
+ (void (*)(struct rte_eth_dev *, struct rte_ether_addr *,
void *))
dlsym(ark->d_handle, "mac_addr_set");
ark->user_ext.set_mtu =
static int
eth_ark_dev_init(struct rte_eth_dev *dev)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
struct rte_pci_device *pci_dev;
int ret;
int port_count = 1;
/* Use dummy function until setup */
dev->rx_pkt_burst = ð_ark_recv_pkts_noop;
dev->tx_pkt_burst = ð_ark_xmit_pkts_noop;
+ /* Let rte_eth_dev_close() release the port resources */
+ dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
ark->bar0 = (uint8_t *)pci_dev->mem_resource[0].addr;
ark->a_bar = (uint8_t *)pci_dev->mem_resource[2].addr;
dev->dev_ops = &ark_eth_dev_ops;
- dev->data->mac_addrs = rte_zmalloc("ark", ETHER_ADDR_LEN, 0);
+ dev->data->mac_addrs = rte_zmalloc("ark", RTE_ETHER_ADDR_LEN, 0);
if (!dev->data->mac_addrs) {
PMD_DRV_LOG(ERR,
"Failed to allocated memory for storing mac address"
rte_eth_copy_pci_info(eth_dev, pci_dev);
- eth_dev->data->mac_addrs = rte_zmalloc(name, ETHER_ADDR_LEN, 0);
+ eth_dev->data->mac_addrs = rte_zmalloc(name,
+ RTE_ETHER_ADDR_LEN, 0);
if (!eth_dev->data->mac_addrs) {
PMD_DRV_LOG(ERR,
"Memory allocation for MAC failed!"
return ret;
- error:
- if (dev->data->mac_addrs)
- rte_free(dev->data->mac_addrs);
+error:
+ rte_free(dev->data->mac_addrs);
+ dev->data->mac_addrs = NULL;
return -1;
}
static int
ark_config_device(struct rte_eth_dev *dev)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
uint16_t num_q, i;
struct ark_mpu_t *mpu;
static int
eth_ark_dev_uninit(struct rte_eth_dev *dev)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return 0;
eth_ark_dev_configure(struct rte_eth_dev *dev)
{
PMD_FUNC_LOG(DEBUG, "\n");
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
eth_ark_dev_set_link_up(dev);
if (ark->user_ext.dev_configure)
static int
eth_ark_dev_start(struct rte_eth_dev *dev)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
int i;
PMD_FUNC_LOG(DEBUG, "\n");
{
uint16_t i;
int status;
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
struct ark_mpu_t *mpu;
PMD_FUNC_LOG(DEBUG, "\n");
static void
eth_ark_dev_close(struct rte_eth_dev *dev)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
uint16_t i;
if (ark->user_ext.dev_close)
eth_ark_dev_rx_queue_release(dev->data->rx_queues[i]);
dev->data->rx_queues[i] = 0;
}
+
+ rte_free(dev->data->mac_addrs);
+ dev->data->mac_addrs = 0;
}
-static void
+static int
eth_ark_dev_info_get(struct rte_eth_dev *dev,
struct rte_eth_dev_info *dev_info)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
struct ark_mpu_t *tx_mpu = RTE_PTR_ADD(ark->bar0, ARK_MPU_TX_BASE);
struct ark_mpu_t *rx_mpu = RTE_PTR_ADD(ark->bar0, ARK_MPU_RX_BASE);
uint16_t ports = ark->num_ports;
ETH_LINK_SPEED_40G |
ETH_LINK_SPEED_50G |
ETH_LINK_SPEED_100G);
+
+ return 0;
}
static int
{
PMD_DEBUG_LOG(DEBUG, "link status = %d\n",
dev->data->dev_link.link_status);
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (ark->user_ext.link_update) {
return ark->user_ext.link_update
eth_ark_dev_set_link_up(struct rte_eth_dev *dev)
{
dev->data->dev_link.link_status = 1;
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (ark->user_ext.dev_set_link_up)
return ark->user_ext.dev_set_link_up(dev,
eth_ark_dev_set_link_down(struct rte_eth_dev *dev)
{
dev->data->dev_link.link_status = 0;
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (ark->user_ext.dev_set_link_down)
return ark->user_ext.dev_set_link_down(dev,
eth_ark_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
{
uint16_t i;
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
stats->ipackets = 0;
stats->ibytes = 0;
return 0;
}
-static void
+static int
eth_ark_dev_stats_reset(struct rte_eth_dev *dev)
{
uint16_t i;
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
for (i = 0; i < dev->data->nb_tx_queues; i++)
eth_tx_queue_stats_reset(dev->data->tx_queues[i]);
if (ark->user_ext.stats_reset)
ark->user_ext.stats_reset(dev,
ark->user_data[dev->data->port_id]);
+
+ return 0;
}
static int
eth_ark_macaddr_add(struct rte_eth_dev *dev,
- struct ether_addr *mac_addr,
+ struct rte_ether_addr *mac_addr,
uint32_t index,
uint32_t pool)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (ark->user_ext.mac_addr_add) {
ark->user_ext.mac_addr_add(dev,
static void
eth_ark_macaddr_remove(struct rte_eth_dev *dev, uint32_t index)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (ark->user_ext.mac_addr_remove)
ark->user_ext.mac_addr_remove(dev, index,
static int
eth_ark_set_default_mac_addr(struct rte_eth_dev *dev,
- struct ether_addr *mac_addr)
+ struct rte_ether_addr *mac_addr)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (ark->user_ext.mac_addr_set) {
ark->user_ext.mac_addr_set(dev, mac_addr,
static int
eth_ark_set_mtu(struct rte_eth_dev *dev, uint16_t size)
{
- struct ark_adapter *ark =
- (struct ark_adapter *)dev->data->dev_private;
+ struct ark_adapter *ark = dev->data->dev_private;
if (ark->user_ext.set_mtu)
return ark->user_ext.set_mtu(dev, size,
ARK_PKTGEN_ARG "=<filename> "
ARK_PKTCHKR_ARG "=<filename> "
ARK_PKTDIR_ARG "=<bitmap>");
+
+RTE_INIT(ark_init_log)
+{
+ ark_logtype = rte_log_register("pmd.net.ark");
+ if (ark_logtype >= 0)
+ rte_log_set_level(ark_logtype, RTE_LOG_NOTICE);
+}