@@ -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;
+}
+
/**
* @}
*/
@@ -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,
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(-)