API Reference Manual 1.51.0
Loading...
Searching...
No Matches
api/spec/packet_io_types.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (c) 2013-2018 Linaro Limited
3 * Copyright (c) 2020-2026 Nokia
4 */
5
12#ifndef ODP_API_SPEC_PACKET_IO_TYPES_H_
13#define ODP_API_SPEC_PACKET_IO_TYPES_H_
14#include <odp/visibility_begin.h>
15
18#include <odp/api/pool_types.h>
19#include <odp/api/queue_types.h>
20#include <odp/api/reassembly.h>
21#include <odp/api/std_types.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
103
117
126 struct {
128 uint32_t ipv4_udp : 1;
130 uint32_t ipv4_tcp : 1;
132 uint32_t ipv4 : 1;
134 uint32_t ipv6_udp : 1;
136 uint32_t ipv6_tcp : 1;
138 uint32_t ipv6 : 1;
140
145 uint32_t all_bits;
147
168
179
225
319
349
368
401 struct {
403 uint64_t ts_all : 1;
404
407 uint64_t ts_ptp : 1;
408
410 uint64_t ipv4_chksum : 1;
411
413 uint64_t udp_chksum : 1;
414
416 uint64_t tcp_chksum : 1;
417
419 uint64_t sctp_chksum : 1;
420
422 uint64_t drop_ipv4_err : 1;
423
425 uint64_t drop_ipv6_err : 1;
426
428 uint64_t drop_udp_err : 1;
429
431 uint64_t drop_tcp_err : 1;
432
434 uint64_t drop_sctp_err : 1;
435
437
442 uint64_t all_bits;
444
491 struct {
493 uint64_t ts_ena : 1;
494
496 uint64_t ipv4_chksum_ena : 1;
497
499 uint64_t udp_chksum_ena : 1;
500
502 uint64_t tcp_chksum_ena : 1;
503
505 uint64_t sctp_chksum_ena : 1;
506
508 uint64_t ipv4_chksum : 1;
509
511 uint64_t udp_chksum : 1;
512
514 uint64_t tcp_chksum : 1;
515
517 uint64_t sctp_chksum : 1;
518
538 uint64_t no_packet_refs : 1;
539
545 uint64_t aging_ena : 1;
546
548 uint64_t proto_stats_ena : 1;
549
551
556 uint64_t all_bits;
558
575
588
753
759typedef union odp_pktio_set_op_t {
761 struct {
763 uint32_t promisc_mode : 1;
765 uint32_t mac_addr : 1;
767 uint32_t skip_offset : 1;
769 uint32_t maxlen : 1;
770 } op;
774 uint32_t all_bits;
776
778#define ODP_LSO_MAX_CUSTOM 8
779
795
915
917typedef struct odp_lso_capability_t {
919 uint32_t max_profiles;
920
924
928
932 uint32_t max_segments;
933
937
941
943 struct {
945 uint16_t add_segment_num:1;
946
948 uint16_t add_payload_len:1;
949
952
954 uint16_t write_bits:1;
955
957
961
963 struct {
965 uint32_t custom:1;
966
968 uint32_t ipv4:1;
969
971 uint32_t ipv6:1;
972
974 uint32_t tcp_ipv4:1;
975
977 uint32_t tcp_ipv6:1;
978
980 uint32_t sctp_ipv4:1;
981
983 uint32_t sctp_ipv6:1;
984
986
988
1019
1180
1182typedef struct odp_lso_write_bits_t {
1184 uint8_t mask[1];
1185
1189 uint8_t value[1];
1190
1192
1257
1268
1272typedef struct odp_pktio_info_t {
1274 const char *name;
1275
1277 const char *drv_name;
1278
1281
1284
1286
1294#define ODP_PKTIO_LINK_SPEED_UNKNOWN 0
1296#define ODP_PKTIO_LINK_SPEED_10M 10
1298#define ODP_PKTIO_LINK_SPEED_100M 100
1300#define ODP_PKTIO_LINK_SPEED_1G 1000
1302#define ODP_PKTIO_LINK_SPEED_2_5G 2500
1304#define ODP_PKTIO_LINK_SPEED_5G 5000
1306#define ODP_PKTIO_LINK_SPEED_10G 10000
1308#define ODP_PKTIO_LINK_SPEED_20G 20000
1310#define ODP_PKTIO_LINK_SPEED_25G 25000
1312#define ODP_PKTIO_LINK_SPEED_40G 40000
1314#define ODP_PKTIO_LINK_SPEED_50G 50000
1316#define ODP_PKTIO_LINK_SPEED_56G 56000
1318#define ODP_PKTIO_LINK_SPEED_100G 100000
1320#define ODP_PKTIO_LINK_SPEED_200G 200000
1322#define ODP_PKTIO_LINK_SPEED_400G 400000
1323
1336
1347
1375
1380#ifdef __cplusplus
1381}
1382#endif
1383
1384#include <odp/visibility_end.h>
1385#endif
ODP packet.
ODP pool.
ODP queue.
Standard C language types and definitions for ODP.
odp_lso_protocol_t
LSO protocol options.
#define ODP_PKTOUT_MAX_QUEUES
Maximum number of packet output queues supported by the API.
#define ODP_LSO_MAX_CUSTOM
Maximum number of custom LSO fields supported by ODP API.
odp_pktout_mode_t
Packet output mode.
odp_pktio_link_duplex_t
Duplex mode.
odp_pktio_link_autoneg_t
Autonegotiation mode.
odp_lso_modify_t
LSO custom modification options.
#define ODP_PKTIN_MAX_QUEUES
Maximum number of packet input queues supported by the API.
odp_pktio_op_mode_t
Packet IO operation mode.
odp_pktio_link_pause_t
Ethernet flow control modes.
odp_pktin_mode_t
Packet input mode.
odp_pktio_link_status_t
Link status.
@ ODP_LSO_PROTO_IPV4
LSO performs IPv4 fragmentation.
@ ODP_LSO_PROTO_NONE
Protocol not selected.
@ ODP_LSO_PROTO_IPV6
LSO performs IPv6 fragmentation.
@ ODP_LSO_PROTO_TCP_IPV4
LSO performs TCP segmentation on top of IPv4.
@ ODP_LSO_PROTO_CUSTOM
Custom protocol.
@ ODP_LSO_PROTO_SCTP_IPV4
LSO performs SCTP segmentation on top of IPv4.
@ ODP_LSO_PROTO_TCP_IPV6
LSO performs TCP segmentation on top of IPv6.
@ ODP_LSO_PROTO_SCTP_IPV6
LSO performs SCTP segmentation on top of IPv6.
@ ODP_PKTOUT_MODE_DIRECT
Direct packet output on the interface.
@ ODP_PKTOUT_MODE_TM
Packet output through traffic manager API.
@ ODP_PKTOUT_MODE_QUEUE
Packet output through event queues.
@ ODP_PKTOUT_MODE_DISABLED
Application will never send to this interface.
@ ODP_PKTIO_LINK_DUPLEX_HALF
Half duplex mode.
@ ODP_PKTIO_LINK_DUPLEX_FULL
Full duplex mode.
@ ODP_PKTIO_LINK_DUPLEX_UNKNOWN
Link duplex mode is unknown.
@ ODP_PKTIO_LINK_AUTONEG_UNKNOWN
Autonegotiation state unknown.
@ ODP_PKTIO_LINK_AUTONEG_OFF
Autonegotiation disabled.
@ ODP_PKTIO_LINK_AUTONEG_ON
Autonegotiation enabled.
@ ODP_LSO_ADD_SEGMENT_NUM
Add current segment number.
@ ODP_LSO_WRITE_BITS
Write bits in the first, middle and last segment.
@ ODP_LSO_ADD_PAYLOAD_OFFSET
Add number of payload bytes in all previous segments.
@ ODP_LSO_ADD_PAYLOAD_LEN
Add number of payload bytes in the segment.
@ ODP_PKTIO_OP_MT_UNSAFE
Not multithread safe operation.
@ ODP_PKTIO_OP_MT
Multithread safe operation.
@ ODP_PKTIO_LINK_PFC_ON
Priority-based Flow Control (PFC) enabled.
@ ODP_PKTIO_LINK_PAUSE_UNKNOWN
Flow control mode is unknown.
@ ODP_PKTIO_LINK_PAUSE_OFF
No flow control.
@ ODP_PKTIO_LINK_PAUSE_ON
Pause frame flow control enabled.
@ ODP_PKTIN_MODE_DIRECT
Direct packet input from the interface.
@ ODP_PKTIN_MODE_QUEUE
Packet input through plain event queues.
@ ODP_PKTIN_MODE_DISABLED
Application will never receive from this interface.
@ ODP_PKTIN_MODE_SCHED
Packet input through scheduler and scheduled event queues.
@ ODP_PKTIO_LINK_STATUS_DOWN
Link status is down.
@ ODP_PKTIO_LINK_STATUS_UP
Link status is up.
@ ODP_PKTIO_LINK_STATUS_UNKNOWN
Link status is unknown.
odp_proto_layer_t
Protocol layer.
int odp_schedule_group_t
Scheduler thread group.
bool odp_bool_t
Boolean type.
odp_support_t
ODP support.
ODP packet IO stats.
ODP REASSEMBLY API - platform specific header.
Large Send Offload (LSO) capabilities.
uint32_t max_payload_len
Maximum payload length per an LSO generated packet (in bytes).
uint32_t max_packet_segments
Maximum number of segments in an input packet.
uint32_t max_segments
Maximum number of segments an LSO operation may create.
uint32_t max_profiles
Maximum number of LSO profiles.
uint32_t sctp_ipv4
ODP_LSO_PROTO_SCTP_IPV4 support.
uint32_t max_profiles_per_pktio
Maximum number of LSO profiles per packet IO interface.
uint16_t add_payload_len
ODP_LSO_ADD_PAYLOAD_LEN support.
uint8_t max_num_custom
Maximum number of custom fields supported per LSO profile.
uint16_t write_bits
ODP_LSO_WRITE_BITS support.
uint32_t tcp_ipv4
ODP_LSO_PROTO_TCP_IPV4 support.
uint16_t add_segment_num
ODP_LSO_ADD_SEGMENT_NUM support.
uint32_t ipv4
ODP_LSO_PROTO_IPV4 support.
uint32_t max_payload_offset
Maximum supported offset to the packet payload (in bytes).
struct odp_lso_capability_t::@113 mod_op
Supported LSO custom modification options.
struct odp_lso_capability_t::@114 proto
Supported LSO protocol options.
uint32_t tcp_ipv6
ODP_LSO_PROTO_TCP_IPV6 support.
uint32_t custom
ODP_LSO_PROTO_CUSTOM support.
uint32_t sctp_ipv6
ODP_LSO_PROTO_SCTP_IPV6 support.
uint32_t ipv6
ODP_LSO_PROTO_IPV6 support.
uint16_t add_payload_offset
ODP_LSO_ADD_PAYLOAD_OFFSET support.
uint8_t num_custom
Number of custom fields specified.
odp_lso_protocol_t lso_proto
Segmentation protocol.
uint32_t offset
Field offset in bytes from packet start.
odp_lso_write_bits_t middle_seg
bits to write in middle segments
odp_lso_write_bits_t first_seg
bits to write in the first segment
struct odp_lso_profile_param_t::@119::@120 field[ODP_LSO_MAX_CUSTOM]
Custom field to be modified by LSO.
struct odp_lso_profile_param_t::@119::@120::@121::@123 write_bits
Parameters for ODP_LSO_WRITE_BITS operation.
struct odp_lso_profile_param_t::@119 custom
Custom fields.
odp_lso_write_bits_t last_seg
bits to write in the last segment
odp_lso_modify_t mod_op
Field modify operation.
uint8_t size
Field size in bytes.
Parameters for ODP_LSO_WRITE_BITS custom operation.
uint8_t value[1]
Value to be written using the mask: new_value[n] = (old_value[n] & ~mask[n]) | (value[n] & mask[n])
uint8_t mask[1]
Bitmask to select which bits to write.
Set of packet types that involve packet references.
Packet input queue parameters override.
odp_schedule_group_t group
Override for schedule group in odp_schedule_param_t.
Packet input queue parameters.
uint32_t num_queues
Number of input queues to be created.
odp_pktio_op_mode_t op_mode
Operation mode.
odp_queue_param_t queue_param
Queue parameters.
odp_pktin_queue_param_ovr_t * queue_param_ovr
Queue parameters override.
odp_pktin_hash_proto_t hash_proto
Protocol field selection for hashing.
uint32_t queue_size[ODP_PKTIN_MAX_QUEUES]
Input queue size array.
odp_bool_t hash_enable
Enable flow hashing.
odp_bool_t classifier_enable
Enable classifier.
odp_pktin_vector_config_t vector
Packet input vector configuration.
Packet input vector capabilities.
uint64_t max_tmo_ns
Maximum timeout in nanoseconds for the producer to wait for the vector of packets.
uint64_t min_tmo_ns
Minimum value allowed to be configured to odp_pktin_vector_config_t::max_tmo_ns.
uint32_t min_size
Minimum value allowed to be configured to odp_pktin_vector_config_t::max_size.
uint32_t max_size
Maximum number of packets that can be accumulated into a packet vector by a producer.
odp_support_t supported
Packet input vector availability.
Packet input vector configuration.
odp_bool_t enable
Enable packet input vector.
uint32_t max_size
Maximum number of packets in a vector.
uint64_t max_tmo_ns
Maximum time to wait for packets.
struct odp_pktio_capability_t::@117 free_ctrl
Supported packet free control options.
odp_bool_t queue_type_sched
Scheduled queue support.
odp_bool_t equal
Equal maximum frame length for both packet input and output.
uint32_t mode_poll
Packet transmit completion mode ODP_PACKET_TX_COMPL_POLL support.
odp_pktio_set_op_t set_op
Supported set operations.
uint32_t pfc_tx
Generation of PFC frames.
uint32_t max_output
Maximum valid value for 'maxlen_output'.
uint32_t pfc_rx
Reception of PFC frames.
odp_pktin_vector_capability_t vector
Packet input vector capability.
uint32_t max_input_queues
Maximum number of input queues.
uint32_t max_input
Maximum valid value for 'maxlen_input'.
odp_pktio_config_t config
Supported pktio configuration options.
odp_packet_ref_types_t packet_ref
Supported packet reference types.
struct odp_pktio_capability_t::@115 maxlen
Supported frame lengths for odp_pktio_maxlen_set()
uint32_t min_output
Minimum valid value for 'maxlen_output'.
uint32_t max_output_queue_size
Maximum output queue size.
uint32_t max_output_queues
Maximum number of output queues.
uint32_t max_compl_id
Maximum supported completion ID value.
uint32_t min_output_queue_size
Minimum output queue size.
uint64_t max_tx_aging_tmo_ns
Max Tx aging timeout in nano seconds supported when packet aging feature is supported.
uint32_t dont_free
Packet free control option ODP_PACKET_FREE_CTRL_DONT_FREE support with odp_packet_free_ctrl_set().
uint32_t min_input
Minimum valid value for 'maxlen_input'.
odp_pktio_stats_capability_t stats
Statistics counters capabilities.
odp_lso_capability_t lso
LSO capabilities.
uint32_t mode_event
Packet transmit completion mode ODP_PACKET_TX_COMPL_EVENT support.
uint32_t max_input_queue_size
Maximum input queue size.
struct odp_pktio_capability_t::@116 tx_compl
Supported packet Tx completion options.
odp_bool_t queue_type_plain
Plain queue support.
uint32_t pause_tx
Generation of traditional Ethernet pause frames.
uint32_t pause_rx
Reception of traditional Ethernet pause frames.
struct odp_pktio_capability_t::@118 flow_control
Supported flow control modes.
uint32_t min_input_queue_size
Minimum input queue size.
odp_reass_capability_t reassembly
Packet input reassembly capability.
Packet IO configuration options.
uint32_t max_compl_id
Maximum completion index.
struct odp_pktio_config_t::@111 tx_compl
Packet transmit completion configuration.
uint32_t mode_event
Enable packet transmit completion events.
odp_pktio_link_pause_t pause_tx
Transmission of flow control frames.
odp_reass_config_t reassembly
Packet input reassembly configuration.
struct odp_pktio_config_t::@110 flow_control
Link flow control configuration.
odp_pktout_config_opt_t pktout
Packet output configuration options bit field.
odp_bool_t enable_loop
Interface loopback mode.
uint32_t mode_poll
Enable packet transmit completion check through polling.
odp_pktio_link_pause_t pause_rx
Reception of flow control frames.
odp_bool_t enable_lso
Enable Large Send Offload (LSO)
odp_pktio_parser_config_t parser
Packet input parser configuration.
odp_bool_t outbound_ipsec
Outbound IPSEC inlined with packet output.
odp_pktin_config_opt_t pktin
Packet input configuration options bit field.
odp_bool_t inbound_ipsec
Inbound IPSEC inlined with packet input.
Packet IO information.
const char * drv_name
Packet IO driver name (implementation specific)
odp_pktio_param_t param
Packet IO parameters.
odp_pool_t pool
Packet pool.
const char * name
Packet IO device name.
Packet IO parameters.
odp_pktin_mode_t in_mode
Packet input mode.
odp_pktout_mode_t out_mode
Packet output mode.
odp_proto_layer_t layer
Protocol parsing level in packet input.
Packet IO statistics capabilities.
Packet output queue parameters.
odp_pktio_op_mode_t op_mode
Operation mode.
uint32_t queue_size[ODP_PKTOUT_MAX_QUEUES]
Output queue size array.
uint32_t num_queues
Number of output queues to be created.
ODP Queue parameters.
Reassembly capabilities.
Fragment reassembly configuration.
Packet input configuration options bit field.
uint64_t ts_all
Timestamp all packets on packet input.
uint64_t ts_ptp
Timestamp (at least) IEEE1588 / PTP packets on packet input.
uint64_t ipv4_chksum
Check IPv4 header checksum on packet input.
uint64_t all_bits
All bits of the bit field structure.
uint64_t drop_sctp_err
Drop packets with a SCTP error on packet input.
uint64_t drop_udp_err
Drop packets with a UDP error on packet input.
struct odp_pktin_config_opt_t::@108 bit
Option flags.
uint64_t udp_chksum
Check UDP checksum on packet input.
uint64_t drop_ipv4_err
Drop packets with an IPv4 error on packet input.
uint64_t tcp_chksum
Check TCP checksum on packet input.
uint64_t sctp_chksum
Check SCTP checksum on packet input.
uint64_t drop_ipv6_err
Drop packets with an IPv6 error on packet input.
uint64_t drop_tcp_err
Drop packets with a TCP error on packet input.
Packet input hash protocols.
uint32_t all_bits
All bits of the bit field structure.
uint32_t ipv4_tcp
IPv4 addresses and TCP port numbers.
uint32_t ipv6_tcp
IPv6 addresses and TCP port numbers.
struct odp_pktin_hash_proto_t::@107 proto
Protocol header fields for hashing.
uint32_t ipv4_udp
IPv4 addresses and UDP port numbers.
uint32_t ipv6
IPv6 addresses.
uint32_t ipv6_udp
IPv6 addresses and UDP port numbers.
uint32_t ipv4
IPv4 addresses.
Packet IO set operations.
struct odp_pktio_set_op_t::@112 op
Operation flags.
uint32_t maxlen
Maximum frame length.
uint32_t all_bits
All bits of the bit field structure.
uint32_t skip_offset
Per port header offset(skip)set.
uint32_t promisc_mode
Promiscuous mode.
uint32_t mac_addr
MAC address
Packet output configuration options bit field.
uint64_t aging_ena
Enable packet aging and drop.
uint64_t sctp_chksum_ena
Enable SCTP checksum insertion.
uint64_t tcp_chksum
Insert TCP checksum on packet by default.
struct odp_pktout_config_opt_t::@109 bit
Option flags for packet output.
uint64_t proto_stats_ena
Enable packet protocol stats update.
uint64_t no_packet_refs
Packet references not used on packet output.
uint64_t sctp_chksum
Insert SCTP checksum on packet by default.
uint64_t all_bits
All bits of the bit field structure.
uint64_t ts_ena
Enable Tx timestamp capture.
uint64_t ipv4_chksum
Insert IPv4 header checksum by default.
uint64_t ipv4_chksum_ena
Enable IPv4 header checksum insertion.
uint64_t tcp_chksum_ena
Enable TCP checksum insertion.
uint64_t udp_chksum
Insert UDP checksum on packet by default.
uint64_t udp_chksum_ena
Enable UDP checksum insertion.