diff options
author | Konstantin Ananyev <konstantin.ananyev@intel.com> | 2021-05-13 17:25:12 +0000 |
---|---|---|
committer | Konstantin Ananyev <konstantin.ananyev@intel.com> | 2021-05-13 17:32:55 +0000 |
commit | a33ac5f5b04058c1cc10ac9e0c1a4f2d0f24f80b (patch) | |
tree | 631c1a20506c72ac2266dc13ac75861d42900dd8 /lib/libtle_l4p/tle_tcp.h | |
parent | e0d62f616439955946d24ad83d49552da24afd5d (diff) |
l4p/tcp: introduce tle_tcp_stream_rx_bulk() API
tle_tcp_stream_rx_bulk() allows to push input packets for futher processing
straight into given TCP stream.
Given stream is expected to be already in connected state.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Change-Id: I94a744d6d9c8ff3671ebfa84b83a34a24612bde0
Diffstat (limited to 'lib/libtle_l4p/tle_tcp.h')
-rw-r--r-- | lib/libtle_l4p/tle_tcp.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/libtle_l4p/tle_tcp.h b/lib/libtle_l4p/tle_tcp.h index 3155dfa..9947041 100644 --- a/lib/libtle_l4p/tle_tcp.h +++ b/lib/libtle_l4p/tle_tcp.h @@ -414,6 +414,40 @@ ssize_t tle_tcp_stream_writev(struct tle_stream *ts, struct rte_mempool *mp, uint16_t tle_tcp_rx_bulk(struct tle_dev *dev, struct rte_mbuf *pkt[], struct rte_mbuf *rp[], int32_t rc[], uint16_t num); + +/** + * Take input mbufs and put them for processing to given TCP streams. + * expects that for each input packet: + * - l2_len, l3_len, l4_len are setup correctly + * - (packet_type & (RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L3_IPV6)) != 0, + * - (packet_type & RTE_PTYPE_L4_TCP) != 0, + * During delivery L3/L4 checksums will be verified + * (either relies on HW offload or in SW). + * May cause some extra packets to be queued for TX. + * This function is not multi-thread safe. + * @param ts + * TCP stream given packets belong to. + * Note that it is caller repsonsibility to make sure that input packets + * belong to given stream. + * @param pkt + * The burst of input packets that need to be processed. + * @param rp + * The array that will contain pointers of unprocessed packets at return. + * Should contain at least *num* elements. + * @param rc + * The array that will contain error code for corresponding rp[] entry: + * - ENOENT - invalid stream. + * - ENOBUFS - receive buffer of the destination stream is full. + * - EINVAL - invalid input packet encountered. + * Should contain at least *num* elements. + * @param num + * Number of elements in the *pkt* input array. + * @return + * number of packets delivered to the TCP stream. + */ +uint16_t tle_tcp_stream_rx_bulk(struct tle_stream *ts, struct rte_mbuf *pkt[], + struct rte_mbuf *rp[], int32_t rc[], uint16_t num); + /** * Fill *pkt* with pointers to the packets that have to be transmitted * over given TCP device. |