@@ -179,6 +179,7 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
.mac_addr_add = eth_ark_macaddr_add,
.mac_addr_remove = eth_ark_macaddr_remove,
.mac_addr_set = eth_ark_set_default_mac_addr,
+
};
static int
@@ -346,8 +347,9 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
}
if (ark->user_ext.dev_init) {
- ark->user_data = ark->user_ext.dev_init(dev, ark->a_bar, 0);
- if (!ark->user_data) {
+ ark->user_data[dev->data->port_id] =
+ ark->user_ext.dev_init(dev, ark->a_bar, 0);
+ if (!ark->user_data[dev->data->port_id]) {
PMD_DRV_LOG(INFO,
"Failed to initialize PMD extension!"
" continuing without it\n");
@@ -369,7 +371,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
*/
if (ark->user_ext.dev_get_port_count)
port_count =
- ark->user_ext.dev_get_port_count(dev, ark->user_data);
+ ark->user_ext.dev_get_port_count(dev,
+ ark->user_data[dev->data->port_id]);
ark->num_ports = port_count;
for (p = 0; p < port_count; p++) {
@@ -410,9 +413,10 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
goto error;
}
- if (ark->user_ext.dev_init)
- ark->user_data =
+ if (ark->user_ext.dev_init) {
+ ark->user_data[eth_dev->data->port_id] =
ark->user_ext.dev_init(dev, ark->a_bar, p);
+ }
}
return ret;
@@ -508,7 +512,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
return 0;
if (ark->user_ext.dev_uninit)
- ark->user_ext.dev_uninit(dev, ark->user_data);
+ ark->user_ext.dev_uninit(dev,
+ ark->user_data[dev->data->port_id]);
ark_pktgen_uninit(ark->pg);
ark_pktchkr_uninit(ark->pc);
@@ -529,7 +534,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
eth_ark_dev_set_link_up(dev);
if (ark->user_ext.dev_configure)
- return ark->user_ext.dev_configure(dev, ark->user_data);
+ return ark->user_ext.dev_configure(dev,
+ ark->user_data[dev->data->port_id]);
return 0;
}
@@ -592,7 +598,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
}
if (ark->user_ext.dev_start)
- ark->user_ext.dev_start(dev, ark->user_data);
+ ark->user_ext.dev_start(dev,
+ ark->user_data[dev->data->port_id]);
return 0;
}
@@ -614,7 +621,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
/* Stop the extension first */
if (ark->user_ext.dev_stop)
- ark->user_ext.dev_stop(dev, ark->user_data);
+ ark->user_ext.dev_stop(dev,
+ ark->user_data[dev->data->port_id]);
/* Stop the packet generator */
if (ark->start_pg)
@@ -697,7 +705,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
uint16_t i;
if (ark->user_ext.dev_close)
- ark->user_ext.dev_close(dev, ark->user_data);
+ ark->user_ext.dev_close(dev,
+ ark->user_data[dev->data->port_id]);
eth_ark_dev_stop(dev);
eth_ark_udm_force_close(dev);
@@ -765,7 +774,7 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
if (ark->user_ext.link_update) {
return ark->user_ext.link_update
(dev, wait_to_complete,
- ark->user_data);
+ ark->user_data[dev->data->port_id]);
}
return 0;
}
@@ -778,7 +787,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
(struct ark_adapter *)dev->data->dev_private;
if (ark->user_ext.dev_set_link_up)
- return ark->user_ext.dev_set_link_up(dev, ark->user_data);
+ return ark->user_ext.dev_set_link_up(dev,
+ ark->user_data[dev->data->port_id]);
return 0;
}
@@ -790,7 +800,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
(struct ark_adapter *)dev->data->dev_private;
if (ark->user_ext.dev_set_link_down)
- return ark->user_ext.dev_set_link_down(dev, ark->user_data);
+ return ark->user_ext.dev_set_link_down(dev,
+ ark->user_data[dev->data->port_id]);
return 0;
}
@@ -813,7 +824,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
for (i = 0; i < dev->data->nb_rx_queues; i++)
eth_rx_queue_stats_get(dev->data->rx_queues[i], stats);
if (ark->user_ext.stats_get)
- ark->user_ext.stats_get(dev, stats, ark->user_data);
+ ark->user_ext.stats_get(dev, stats,
+ ark->user_data[dev->data->port_id]);
}
static void
@@ -828,7 +840,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
for (i = 0; i < dev->data->nb_rx_queues; i++)
eth_rx_queue_stats_reset(dev->data->rx_queues[i]);
if (ark->user_ext.stats_reset)
- ark->user_ext.stats_reset(dev, ark->user_data);
+ ark->user_ext.stats_reset(dev,
+ ark->user_data[dev->data->port_id]);
}
static int
@@ -845,7 +858,7 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
mac_addr,
index,
pool,
- ark->user_data);
+ ark->user_data[dev->data->port_id]);
return 0;
}
return -ENOTSUP;
@@ -858,7 +871,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
(struct ark_adapter *)dev->data->dev_private;
if (ark->user_ext.mac_addr_remove)
- ark->user_ext.mac_addr_remove(dev, index, ark->user_data);
+ ark->user_ext.mac_addr_remove(dev, index,
+ ark->user_data[dev->data->port_id]);
}
static void
@@ -869,7 +883,8 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
(struct ark_adapter *)dev->data->dev_private;
if (ark->user_ext.mac_addr_set)
- ark->user_ext.mac_addr_set(dev, mac_addr, ark->user_data);
+ ark->user_ext.mac_addr_set(dev, mac_addr,
+ ark->user_data[dev->data->port_id]);
}
static inline int
@@ -64,7 +64,7 @@
#define ARK_RCPACING_BASE 0xb0000
#define ARK_EXTERNAL_BASE 0x100000
#define ARK_MPU_QOFFSET 0x00100
-#define ARK_MAX_PORTS 8
+#define ARK_MAX_PORTS RTE_MAX_ETHPORTS
#define offset8(n) n
#define offset16(n) ((n) / 2)
@@ -110,7 +110,7 @@ struct ark_user_ext {
struct ark_adapter {
/* User extension private data */
- void *user_data;
+ void *user_data[ARK_MAX_PORTS];
/* Pointers to packet generator and checker */
int start_pg;