]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | /* SPDX-License-Identifier: BSD-3-Clause |
2 | * Copyright(c) 2017 Cavium, Inc | |
3 | */ | |
4 | ||
5 | #include <stdint.h> | |
6 | #include <stdio.h> | |
7 | #include <stdlib.h> | |
8 | #include <unistd.h> | |
9 | ||
10 | #include <rte_atomic.h> | |
11 | #include <rte_common.h> | |
12 | #include <rte_ethdev_driver.h> | |
13 | #include <rte_ether.h> | |
14 | #include <rte_log.h> | |
15 | #include <rte_mbuf.h> | |
16 | #include <rte_prefetch.h> | |
17 | ||
18 | #include "octeontx_ethdev.h" | |
19 | #include "octeontx_rxtx.h" | |
20 | #include "octeontx_logs.h" | |
21 | ||
11fdf7f2 TL |
22 | uint16_t __hot |
23 | octeontx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) | |
24 | { | |
25 | int count; | |
26 | struct octeontx_txq *txq = tx_queue; | |
27 | octeontx_dq_t *dq = &txq->dq; | |
28 | int res; | |
29 | ||
30 | count = 0; | |
31 | ||
9f95a23c | 32 | rte_cio_wmb(); |
11fdf7f2 TL |
33 | while (count < nb_pkts) { |
34 | res = __octeontx_xmit_pkts(dq->lmtline_va, dq->ioreg_va, | |
35 | dq->fc_status_va, | |
36 | tx_pkts[count]); | |
37 | if (res < 0) | |
38 | break; | |
39 | ||
40 | count++; | |
41 | } | |
42 | ||
43 | return count; /* return number of pkts transmitted */ | |
44 | } | |
45 | ||
46 | uint16_t __hot | |
47 | octeontx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) | |
48 | { | |
49 | struct octeontx_rxq *rxq; | |
50 | struct rte_event ev; | |
51 | size_t count; | |
52 | uint16_t valid_event; | |
53 | ||
54 | rxq = rx_queue; | |
55 | count = 0; | |
56 | while (count < nb_pkts) { | |
57 | valid_event = rte_event_dequeue_burst(rxq->evdev, | |
58 | rxq->ev_ports, &ev, | |
59 | 1, 0); | |
60 | if (!valid_event) | |
61 | break; | |
62 | rx_pkts[count++] = ev.mbuf; | |
63 | } | |
64 | ||
65 | return count; /* return number of pkts received */ | |
66 | } |