summaryrefslogtreecommitdiff
path: root/drivers/net/pcap
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/pcap
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/pcap')
-rw-r--r--drivers/net/pcap/rte_eth_pcap.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
index 8740d52..570c9e9 100644
--- a/drivers/net/pcap/rte_eth_pcap.c
+++ b/drivers/net/pcap/rte_eth_pcap.c
@@ -898,6 +898,7 @@ pmd_pcap_probe(struct rte_vdev_device *dev)
struct rte_kvargs *kvlist;
struct pmd_devargs pcaps = {0};
struct pmd_devargs dumpers = {0};
+ struct rte_eth_dev *eth_dev;
int single_iface = 0;
int ret;
@@ -908,6 +909,18 @@ pmd_pcap_probe(struct rte_vdev_device *dev)
start_cycles = rte_get_timer_cycles();
hz = rte_get_timer_hz();
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
+ strlen(rte_vdev_device_args(dev)) == 0) {
+ eth_dev = rte_eth_dev_attach_secondary(name);
+ if (!eth_dev) {
+ RTE_LOG(ERR, PMD, "Failed to probe %s\n", name);
+ return -1;
+ }
+ /* TODO: request info from primary to set up Rx and Tx */
+ eth_dev->dev_ops = &ops;
+ return 0;
+ }
+
kvlist = rte_kvargs_parse(rte_vdev_device_args(dev), valid_arguments);
if (kvlist == NULL)
return -1;