Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions inc/sai.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@
#include "saiicmpecho.h"
#include "saisynce.h"
#include "saivirtualchannel.h"
#include "saiofh.h"
#include "saiofhroute.h"

/**
* @defgroup SAI SAI - Entry point specific API definitions.
Expand Down Expand Up @@ -155,6 +157,8 @@ typedef enum _sai_api_t
SAI_API_PREFIX_COMPRESSION = 53, /**< sai_prefix_compression_api_t */
SAI_API_SYNCE = 54, /**< sai_synce_api_t */
SAI_API_VIRTUAL_CHANNEL = 55, /**< sai_virtual_channel_api_t */
SAI_API_OFH = 56, /**< sai_ofh_api_t */
SAI_API_OFH_ROUTE = 57, /**< sai_ofh_route_api_t */
SAI_API_MAX, /**< total number of APIs */

/**
Expand Down
18 changes: 18 additions & 0 deletions inc/saidebugcounter.h
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,21 @@ typedef enum _sai_in_drop_reason_t
/** IPv4 or IPv6 Routing table (LPM) unicast miss */
SAI_IN_DROP_REASON_LPM_MISS = 0x00000039,

/** OFH packet TTL expired */
SAI_IN_DROP_REASON_OFH_TTL,

/** OFH Routing table miss */
SAI_IN_DROP_REASON_OFH_MISS,

/** OFH Routing table action discard */
SAI_IN_DROP_REASON_OFH_DISCARD,

/** OFH VLAN drop */
SAI_IN_DROP_REASON_OFH_VLAN_DROP,

/** OFH VLAN to virtual router id drop */
SAI_IN_DROP_REASON_OFH_VLAN_TO_VRID_DROP,

/** End of in drop reasons */
SAI_IN_DROP_REASON_END,

Expand Down Expand Up @@ -377,6 +392,9 @@ typedef enum _sai_out_drop_reason_t
*/
SAI_OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP,

/** OFH VLAN drop */
SAI_OUT_DROP_REASON_OFH_VLAN_DROP,

/** End of out drop reasons */
SAI_OUT_DROP_REASON_END,

Expand Down
4 changes: 4 additions & 0 deletions inc/saiobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include <sainat.h>
#include <saisrv6.h>
#include <saiprefixcompression.h>
#include <saiofhroute.h>

/* new experimental object type includes */
#include <saiexperimentaldashtrustedvni.h>
Expand Down Expand Up @@ -140,6 +141,9 @@ typedef union _sai_object_key_entry_t
/** @validonly object_type == SAI_OBJECT_TYPE_ENI_TRUSTED_VNI_ENTRY */
sai_eni_trusted_vni_entry_t eni_trusted_vni_entry;

/** @validonly object_type == SAI_OBJECT_TYPE_OFH_ROUTE_ENTRY */
sai_ofh_route_entry_t ofh_route_entry;

/* Add new experimental entries above this line */

} sai_object_key_entry_t;
Expand Down
18 changes: 18 additions & 0 deletions inc/saiswitch.h
Original file line number Diff line number Diff line change
Expand Up @@ -3598,6 +3598,24 @@ typedef enum _sai_switch_attr_t
*/
SAI_SWITCH_ATTR_PTP_SYNTONIZE_ADJUST,

/**
* @brief OFH headers
*
* @type sai_object_list_t
* @flags CREATE_AND_SET
* @objects SAI_OBJECT_TYPE_OFH
* @default empty
*/
SAI_SWITCH_ATTR_OFH,

/**
* @brief OFH header max size
*
* @type sai_int8_t
* @flags READ_ONLY
*/
SAI_SWITCH_ATTR_OFH_MAX_SIZE,

/**
* @brief End of attributes
*/
Expand Down
47 changes: 47 additions & 0 deletions inc/saitypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,8 @@ typedef enum _sai_object_type_t
SAI_OBJECT_TYPE_VIRTUAL_CHANNEL = 116,
SAI_OBJECT_TYPE_CBFC_CREDIT_POOL = 117,
SAI_OBJECT_TYPE_CBFC_CREDIT_PROFILE = 118,
SAI_OBJECT_TYPE_OFH = 119,
SAI_OBJECT_TYPE_OFH_ROUTE_ENTRY = 120,

/** Must remain in last position */
SAI_OBJECT_TYPE_MAX,
Expand Down Expand Up @@ -471,6 +473,51 @@ typedef struct _sai_ip_prefix_list_t
sai_ip_prefix_t *list;
} sai_ip_prefix_list_t;

typedef enum _sai_ofh_addr_family_t
{
SAI_OFH_ADDR_FAMILY_ESUN,

SAI_OFH_ADDR_FAMILY_AFH_T1,

SAI_OFH_ADDR_FAMILY_AFH_T2,

SAI_OFH_ADDR_FAMILY_UFH_T1,

SAI_OFH_ADDR_FAMILY_UFH_T2,
} sai_ofh_addr_family_t;

/**
* @extraparam sai_ofh_addr_family_t ofh_addr_family
*/
typedef union _sai_ofh_addr_t
{
/** @validonly ofh_addr_family == SAI_OFH_ADDR_FAMILY_ESUN */
sai_mac_t esun;

/** @validonly ofh_addr_family == SAI_OFH_ADDR_FAMILY_AFH_T1 */
sai_mac_t afh_t1;

/** @validonly ofh_addr_family == SAI_OFH_ADDR_FAMILY_AFH_T2 */
sai_mac_t afh_t2;

/** @validonly ofh_addr_family == SAI_OFH_ADDR_FAMILY_UFH_T1 */
sai_uint32_t ufh_t1;

/** @validonly ofh_addr_family == SAI_OFH_ADDR_FAMILY_UFH_T2 */
sai_uint16_t ufh_t2;
} sai_ofh_addr_t;

typedef struct _sai_ofh_addr_and_mask_t
{
sai_ofh_addr_family_t ofh_addr_family;

/** @passparam ofh_addr_family */
sai_ofh_addr_t ofh_addr;

/** @passparam ofh_addr_family */
sai_ofh_addr_t ofh_mask;
} sai_ofh_addr_and_mask_t;

/**
* @brief Attribute data for #SAI_PORT_ATTR_PRBS_RX_STATUS
*/
Expand Down
9 changes: 9 additions & 0 deletions inc/saivirtualrouter.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,15 @@ typedef enum _sai_virtual_router_attr_t
*/
SAI_VIRTUAL_ROUTER_ATTR_LABEL,

/**
* @brief Admin OFH state
*
* @type bool
* @flags CREATE_AND_SET
* @default true
*/
SAI_VIRTUAL_ROUTER_ATTR_ADMIN_OFH_STATE,

/**
* @brief End of attributes
*/
Expand Down
4 changes: 4 additions & 0 deletions meta/acronyms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
ACK - Acknowledgement
ACL - Access Control List
AES - Advanced Encryption Standard
AFH - AI Fabric Header
AN - Association Number
AN - Auto Negotiation
API - Application Program Interface
Expand Down Expand Up @@ -56,6 +57,7 @@ EEPROM - Electrically erasable programmable read-only memory
ENI - Elastic Network Interface
ERSPAN - Encapsulated Remote SPAN
ESN - Extended Sequence Number
ESUN - Ethernet for Scale Up Networks
EWMA - Exponentially Weighted Moving Average
FCS - Frame Check Sequence
FD - File Descriptor
Expand Down Expand Up @@ -117,6 +119,7 @@ NTPCLIENT - Network Time Protocol Client
NTPSERVER - Network Time Protocol Server
NVGRE - Network Virtualization using Generic Routing Encapsulation
OAM - Operations Administration and Maintenance
OFH - Optimized Forwarding Header
OUI - Organizationally Unique Identifier
P4RT - Programming Protocol-independent Packet Processors Runtime
PAM4 - Pulse Amplitude Modulation 4-level
Expand Down Expand Up @@ -182,6 +185,7 @@ TWAMP - Two-Way Active Measurement Protocol
UART - Universal Asynchronous Receiver/Transmitter
UDF - User-Defined Field
UDP - User Datagram Protocol
UFH - Unified Forwarding Header
USD - Ultimate Segment Decapsulation
USP - Ultimate Segment Pop
USXGMII - Universal Serial 10 Gigabit Media Independent Interface
Expand Down
1 change: 1 addition & 0 deletions meta/checkheaders.pl
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ sub CheckHash
next if $key eq "SAI_PORT_BREAKOUT_MODE_TYPE_MAX";
next if $key eq "SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE";
next if $key eq "SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_END";
next if $key eq "SAI_OUT_DROP_REASON_END";

# NOTE: some other attributes/enum with END range could be added
}
Expand Down
3 changes: 2 additions & 1 deletion meta/parse.pl
Original file line number Diff line number Diff line change
Expand Up @@ -2698,6 +2698,7 @@ sub ProcessStructValueType
return "SAI_ATTR_VALUE_TYPE_MAC" if $type eq "sai_mac_t";
return "SAI_ATTR_VALUE_TYPE_IP_ADDRESS" if $type eq "sai_ip_address_t";
return "SAI_ATTR_VALUE_TYPE_IP_PREFIX" if $type eq "sai_ip_prefix_t";
return "SAI_ATTR_VALUE_TYPE_OFH_ADDR_AND_MASK" if $type eq "sai_ofh_addr_and_mask_t";
return "SAI_ATTR_VALUE_TYPE_PRBS_RX_STATE" if $type eq "sai_prbs_rx_state_t";
return "SAI_ATTR_VALUE_TYPE_UINT16" if $type eq "sai_vlan_id_t";
return "SAI_ATTR_VALUE_TYPE_UINT32" if $type eq "sai_label_id_t";
Expand Down Expand Up @@ -4172,7 +4173,7 @@ sub ProcessSingleNonObjectId

# allowed entries on object structs

if (not $type =~ /^sai_(nat_entry_data|mac|object_id|vlan_id|ip_address|ip_prefix|acl_chain|label_id|ip6|uint8|uint16|uint32|u32_range|\w+_type)_t$/)
if (not $type =~ /^sai_(nat_entry_data|mac|object_id|vlan_id|ip_address|ip_prefix|ofh_addr_and_mask|acl_chain|label_id|ip6|uint8|uint16|uint32|u32_range|\w+_type)_t$/)
{
LogError "struct member $member type '$type' is not allowed on struct $structname";
next;
Expand Down
7 changes: 6 additions & 1 deletion meta/saimetadatatypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,12 @@ typedef enum _sai_attr_value_type_t
/**
* @brief Attribute value is 64 bit unsigned integer range list.
*/
SAI_ATTR_VALUE_TYPE_UINT64_RANGE_LIST
SAI_ATTR_VALUE_TYPE_UINT64_RANGE_LIST,

/**
* @brief Attribute value is OFH prefix
*/
SAI_ATTR_VALUE_TYPE_OFH_ADDR_AND_MASK,
} sai_attr_value_type_t;

/**
Expand Down
4 changes: 4 additions & 0 deletions meta/saisanitycheck.c
Original file line number Diff line number Diff line change
Expand Up @@ -786,6 +786,7 @@ void check_attr_object_type_provided(
case SAI_ATTR_VALUE_TYPE_POINTER:
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
case SAI_ATTR_VALUE_TYPE_OFH_ADDR_AND_MASK:
case SAI_ATTR_VALUE_TYPE_PRBS_RX_STATE:
case SAI_ATTR_VALUE_TYPE_CHARDATA:
case SAI_ATTR_VALUE_TYPE_UINT32_RANGE:
Expand Down Expand Up @@ -1077,6 +1078,7 @@ void check_attr_default_required(
case SAI_ATTR_VALUE_TYPE_MAC:
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
case SAI_ATTR_VALUE_TYPE_OFH_ADDR_AND_MASK:
case SAI_ATTR_VALUE_TYPE_PRBS_RX_STATE:
case SAI_ATTR_VALUE_TYPE_TIMESPEC:
case SAI_ATTR_VALUE_TYPE_IPV4:
Expand Down Expand Up @@ -3044,6 +3046,7 @@ void check_attr_is_primitive(
case SAI_ATTR_VALUE_TYPE_INT8:
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
case SAI_ATTR_VALUE_TYPE_OFH_ADDR_AND_MASK:
case SAI_ATTR_VALUE_TYPE_PRBS_RX_STATE:
case SAI_ATTR_VALUE_TYPE_MAC:
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
Expand Down Expand Up @@ -4030,6 +4033,7 @@ void check_non_object_id_object_types()
case SAI_ATTR_VALUE_TYPE_UINT32_RANGE:
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
case SAI_ATTR_VALUE_TYPE_OFH_ADDR_AND_MASK:
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
case SAI_ATTR_VALUE_TYPE_NAT_ENTRY_DATA:
case SAI_ATTR_VALUE_TYPE_ENCRYPT_KEY:
Expand Down
Loading