diff --git a/dash-pipeline/SAI/specs/dash_ha.yaml b/dash-pipeline/SAI/specs/dash_ha.yaml index e3847eadc..bb5410c1e 100644 --- a/dash-pipeline/SAI/specs/dash_ha.yaml +++ b/dash-pipeline/SAI/specs/dash_ha.yaml @@ -140,6 +140,19 @@ sai_apis: valid_only: null is_vlan: false deprecated: false + - !!python/object:utils.sai_spec.sai_attribute.SaiAttribute + name: SAI_HA_SET_ATTR_DP_CHANNEL_TUNNEL_KEY + description: Action parameter data plane channel tunnel key + type: sai_uint32_t + attr_value_field: u32 + default: '0' + isresourcetype: false + flags: CREATE_AND_SET + object_name: null + allow_null: false + valid_only: null + is_vlan: false + deprecated: false stats: - !!python/object:utils.sai_spec.sai_attribute.SaiAttribute name: SAI_HA_SET_STAT_DP_PROBE_REQ_RX_BYTES @@ -481,6 +494,12 @@ sai_apis: bitwidth: 32 ip_is_v6_field_id: 0 skipattr: null + SAI_HA_SET_ATTR_DP_CHANNEL_TUNNEL_KEY: !!python/object:utils.sai_spec.sai_api_p4_meta.SaiApiP4MetaActionParam + id: 13 + field: u32 + bitwidth: 24 + ip_is_v6_field_id: 0 + skipattr: null - !!python/object:utils.sai_spec.sai_api.SaiApi name: ha_scope description: HA scope diff --git a/dash-pipeline/bmv2/dash_metadata.p4 b/dash-pipeline/bmv2/dash_metadata.p4 index 9ba66e7a8..e9f5bbca1 100644 --- a/dash-pipeline/bmv2/dash_metadata.p4 +++ b/dash-pipeline/bmv2/dash_metadata.p4 @@ -139,6 +139,7 @@ struct ha_data_t { bit<16> dp_channel_dst_port; bit<16> dp_channel_src_port_min; bit<16> dp_channel_src_port_max; + bit<24> dp_channel_tunnel_key; } #ifdef TARGET_DPDK_PNA diff --git a/dash-pipeline/bmv2/stages/ha.p4 b/dash-pipeline/bmv2/stages/ha.p4 index 711be58ce..98beef1a1 100644 --- a/dash-pipeline/bmv2/stages/ha.p4 +++ b/dash-pipeline/bmv2/stages/ha.p4 @@ -71,7 +71,8 @@ control ha_stage(inout headers_t hdr, bit<32> dp_channel_probe_interval_ms, bit<32> dp_channel_probe_fail_threshold, @SaiVal[isreadonly="true"] bit<1> dp_channel_is_alive, - bit<32> dpu_driven_ha_switchover_wait_time_ms + bit<32> dpu_driven_ha_switchover_wait_time_ms, + bit<24> dp_channel_tunnel_key ) { meta.ha.peer_ip_is_v6 = peer_ip_is_v6; meta.ha.peer_ip = peer_ip; @@ -79,6 +80,7 @@ control ha_stage(inout headers_t hdr, meta.ha.dp_channel_dst_port = dp_channel_dst_port; meta.ha.dp_channel_src_port_min = dp_channel_min_src_port; meta.ha.dp_channel_src_port_max = dp_channel_max_src_port; + meta.ha.dp_channel_tunnel_key = dp_channel_tunnel_key; } @SaiTable[api = "dash_ha", order=0, isobject="true"]