summaryrefslogtreecommitdiff
path: root/drivers/net/octeontx
diff options
context:
space:
mode:
authorJianfeng Tan <jianfeng.tan@intel.com>2018-04-24 05:51:24 +0000
committerThomas Monjalon <thomas@monjalon.net>2018-04-24 12:37:31 +0200
commitee27edbe0c10ec8337c4cc4d2935a751d0da605f (patch)
treebaa53e99be49e9fac696caf027e0a98ec6fd58a8 /drivers/net/octeontx
parent5f19dee604ed5760d819743d1d364493ead2aae6 (diff)
downloaddpdk-next-eventdev-ee27edbe0c10ec8337c4cc4d2935a751d0da605f.zip
dpdk-next-eventdev-ee27edbe0c10ec8337c4cc4d2935a751d0da605f.tar.gz
dpdk-next-eventdev-ee27edbe0c10ec8337c4cc4d2935a751d0da605f.tar.xz
drivers/net: share vdev data to secondary process
dpdk-procinfo, as a secondary process, cannot fetch stats for vdev. This patch enables that by attaching the port from the shared data. We also fill the eth dev ops, with only some ops works in secondary process, for example, stats_get(). Note that, we still cannot Rx/Tx packets on the ports which do not support multi-process. Reported-by: Signed-off-by: Vipin Varghese <vipin.varghese@intel.com> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com> Reviewed-by: Qi Zhang <qi.z.zhang@intel.com>
Diffstat (limited to 'drivers/net/octeontx')
-rw-r--r--drivers/net/octeontx/octeontx_ethdev.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
index ee06cd3..04120f5 100644
--- a/drivers/net/octeontx/octeontx_ethdev.c
+++ b/drivers/net/octeontx/octeontx_ethdev.c
@@ -1228,12 +1228,26 @@ octeontx_probe(struct rte_vdev_device *dev)
struct rte_event_dev_config dev_conf;
const char *eventdev_name = "event_octeontx";
struct rte_event_dev_info info;
+ struct rte_eth_dev *eth_dev;
struct octeontx_vdev_init_params init_params = {
OCTEONTX_VDEV_DEFAULT_MAX_NR_PORT
};
dev_name = rte_vdev_device_name(dev);
+
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
+ strlen(rte_vdev_device_args(dev)) == 0) {
+ eth_dev = rte_eth_dev_attach_secondary(dev_name);
+ if (!eth_dev) {
+ RTE_LOG(ERR, PMD, "Failed to probe %s\n", dev_name);
+ return -1;
+ }
+ /* TODO: request info from primary to set up Rx and Tx */
+ eth_dev->dev_ops = &octeontx_dev_ops;
+ return 0;
+ }
+
res = octeontx_parse_vdev_init_params(&init_params, dev);
if (res < 0)
return -EINVAL;