aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Kiss <zoltan.kiss@linaro.org>2015-11-03 14:41:14 +0000
committerZoltan Kiss <zoltan.kiss@linaro.org>2015-11-03 14:49:03 +0000
commitd8bceaec15a1ca37cd23d420b1f285c94e5736fc (patch)
treebb2720faa2913b01d957bd322648300d41455c8e
parentf855321e3f7c242cb017bdcdd2d38e58aedc82a5 (diff)
linux-dpdk: packet_io: implement start and stop for pktiov1.3.0.0_DPDK_2.1.0
The original implementation in 51226cbd 'Port 5176d3 "linux-generic: add pktio_start and pktio_stop"' was only an empty one, this patch use the relevant DPDK functions. Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
-rw-r--r--platform/linux-dpdk/odp_packet_dpdk.c8
-rw-r--r--platform/linux-dpdk/odp_packet_io.c24
2 files changed, 22 insertions, 10 deletions
diff --git a/platform/linux-dpdk/odp_packet_dpdk.c b/platform/linux-dpdk/odp_packet_dpdk.c
index 27f08fed6..aba98f86c 100644
--- a/platform/linux-dpdk/odp_packet_dpdk.c
+++ b/platform/linux-dpdk/odp_packet_dpdk.c
@@ -150,14 +150,6 @@ int setup_pkt_dpdk(pkt_dpdk_t * const pkt_dpdk, const char *netdev,
}
}
- /* Start device */
- ret = rte_eth_dev_start(portid);
- if (ret < 0) {
- ODP_ERR("rte_eth_dev_start:err=%d, port=%u\n",
- ret, (unsigned)portid);
- return -1;
- }
-
rte_eth_promiscuous_enable(portid);
/* Some DPDK PMD vdev like pcap do not support promisc mode change. Use
* system call for them. */
diff --git a/platform/linux-dpdk/odp_packet_io.c b/platform/linux-dpdk/odp_packet_io.c
index 7cb1577a9..47caae856 100644
--- a/platform/linux-dpdk/odp_packet_io.c
+++ b/platform/linux-dpdk/odp_packet_io.c
@@ -938,12 +938,32 @@ int odp_pktio_mtu(odp_pktio_t id)
return mtu;
}
-int odp_pktio_start(odp_pktio_t id ODP_UNUSED)
+int odp_pktio_start(odp_pktio_t id)
{
+ int ret;
+ pktio_entry_t *pktio_entry = get_pktio_entry(id);
+ if (!pktio_entry) {
+ ODP_ERR("No pktio found!\n");
+ return -1;
+ }
+
+ ret = rte_eth_dev_start(pktio_entry->s.pkt_dpdk.portid);
+ if (ret < 0) {
+ ODP_ERR("rte_eth_dev_start:err=%d, port=%u\n",
+ ret, pktio_entry->s.pkt_dpdk.portid);
+ return ret;
+ }
+
return 0;
}
-int odp_pktio_stop(odp_pktio_t id ODP_UNUSED)
+int odp_pktio_stop(odp_pktio_t id)
{
+ pktio_entry_t *pktio_entry = get_pktio_entry(id);
+ if (!pktio_entry) {
+ ODP_ERR("No pktio found!\n");
+ return -1;
+ }
+ rte_eth_dev_stop(pktio_entry->s.pkt_dpdk.portid);
return 0;
}