diff mbox

[API-NEXT,RFC,18/31] linux-generic: nic pktio: adding tx and rx

Message ID 1452285014-60320-19-git-send-email-christophe.milard@linaro.org
State New
Headers show

Commit Message

Christophe Milard Jan. 8, 2016, 8:30 p.m. UTC
Signed-off-by: Christophe Milard <christophe.milard@linaro.org>
---
 platform/linux-generic/include/odp_nic_internal.h |  5 ++++
 platform/linux-generic/pktio/nic.c                | 31 +++++++++++++++++++++--
 2 files changed, 34 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/platform/linux-generic/include/odp_nic_internal.h b/platform/linux-generic/include/odp_nic_internal.h
index 4f0f137..5ced7e8 100644
--- a/platform/linux-generic/include/odp_nic_internal.h
+++ b/platform/linux-generic/include/odp_nic_internal.h
@@ -48,6 +48,11 @@  int driver_probe(odp_pktio_t pktio, const char *pci_address, odp_pool_t pool);
  */
 void driver_unprobe(pktio_entry_t *pktio_entry);
 
+static inline odp_nic_dev_t *nic_dev_from_pktio(odp_pktio_t pktio)
+{
+	return _odp_nic_pktio_tbl[_odp_typeval(pktio)].nic_dev;
+}
+
 /**
  * @}
  */
diff --git a/platform/linux-generic/pktio/nic.c b/platform/linux-generic/pktio/nic.c
index 1df93e1..1c25c90 100644
--- a/platform/linux-generic/pktio/nic.c
+++ b/platform/linux-generic/pktio/nic.c
@@ -46,6 +46,33 @@  static int nic_close(pktio_entry_t *entry)
 	return 0;
 }
 
+static int nic_recv(pktio_entry_t *pktio_entry,
+		    odp_packet_t pkt_table[], unsigned len)
+{
+	int nbrx;
+	odp_nic_dev_t *nic_dev;
+
+	nic_dev = nic_dev_from_pktio(pktio_entry->s.handle);
+
+	nbrx = nic_dev->rx_pkt_burst(nic_dev->data->rx_queues[0],
+				     (odp_nic_sgmt_t *)pkt_table,
+				     len);
+	return nbrx;
+}
+
+static int nic_send(pktio_entry_t *pktio_entry,
+		    odp_packet_t pkt_table[], unsigned len)
+{
+	int nbtx;
+	odp_nic_dev_t *nic_dev;
+
+	nic_dev = nic_dev_from_pktio(pktio_entry->s.handle);
+	nbtx = nic_dev->tx_pkt_burst(nic_dev->data->tx_queues[0],
+				     (odp_nic_sgmt_t *)pkt_table,
+				     len);
+	return nbtx;
+}
+
 const pktio_if_ops_t nic_pktio_ops = {
 	.name = "Nic",
 	.init = NULL,
@@ -54,8 +81,8 @@  const pktio_if_ops_t nic_pktio_ops = {
 	.close = nic_close,
 	.start = NULL,
 	.stop = NULL,
-	.recv = NULL,
-	.send = NULL,
+	.recv = nic_recv,
+	.send = nic_send,
 	.mtu_get = NULL,
 	.promisc_mode_set = NULL,
 	.promisc_mode_get = NULL,