Skip to content

Commit 95891d7

Browse files
[SAI submodule update] Enable support for SAI v1.11.0 (sonic-net#1140)
* [SAI submodule update] Enable support for SAI v1.11.0 Signed-off-by: richardyu-ms <richard.yu@microsoft.com> * update SAI for saithift fix * upgrade to latest sai 1.11 add cases fix a code issue Signed-off-by: richardyu-ms <richard.yu@microsoft.com> * refactor code Signed-off-by: richardyu-ms <richard.yu@microsoft.com> Signed-off-by: richardyu-ms <richard.yu@microsoft.com>
1 parent 3bb40a9 commit 95891d7

29 files changed

Lines changed: 1187 additions & 107 deletions

SAI

Submodule SAI updated 104 files

lib/ClientSai.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1260,6 +1260,23 @@ sai_status_t ClientSai::bulkCreate(
12601260
object_statuses);
12611261
}
12621262

1263+
sai_status_t ClientSai::bulkCreate(
1264+
_In_ uint32_t object_count,
1265+
_In_ const sai_neighbor_entry_t* neighbor_entry,
1266+
_In_ const uint32_t *attr_count,
1267+
_In_ const sai_attribute_t **attr_list,
1268+
_In_ sai_bulk_op_error_mode_t mode,
1269+
_Out_ sai_status_t *object_statuses)
1270+
{
1271+
MUTEX();
1272+
SWSS_LOG_ENTER();
1273+
REDIS_CHECK_API_INITIALIZED();
1274+
1275+
// TODO support mode
1276+
1277+
return SAI_STATUS_NOT_IMPLEMENTED;
1278+
}
1279+
12631280
// BULK CREATE HELPERS
12641281

12651282
sai_status_t ClientSai::bulkCreate(
@@ -1436,6 +1453,19 @@ sai_status_t ClientSai::bulkRemove(
14361453
return bulkRemove(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, mode, object_statuses);
14371454
}
14381455

1456+
sai_status_t ClientSai::bulkRemove(
1457+
_In_ uint32_t object_count,
1458+
_In_ const _sai_neighbor_entry_t *neighbor_entry,
1459+
_In_ sai_bulk_op_error_mode_t mode,
1460+
_Out_ sai_status_t *object_statuses)
1461+
{
1462+
MUTEX();
1463+
SWSS_LOG_ENTER();
1464+
REDIS_CHECK_API_INITIALIZED();
1465+
1466+
return SAI_STATUS_NOT_IMPLEMENTED;
1467+
}
1468+
14391469
// BULK REMOVE HELPERS
14401470

14411471
sai_status_t ClientSai::bulkRemove(
@@ -1607,6 +1637,20 @@ sai_status_t ClientSai::bulkSet(
16071637
return bulkSet(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
16081638
}
16091639

1640+
sai_status_t ClientSai::bulkSet(
1641+
_In_ uint32_t object_count,
1642+
_In_ const sai_neighbor_entry_t *neighbor_entry,
1643+
_In_ const sai_attribute_t *attr_list,
1644+
_In_ sai_bulk_op_error_mode_t mode,
1645+
_Out_ sai_status_t *object_statuses)
1646+
{
1647+
MUTEX();
1648+
SWSS_LOG_ENTER();
1649+
REDIS_CHECK_API_INITIALIZED();
1650+
1651+
return SAI_STATUS_NOT_IMPLEMENTED;
1652+
}
1653+
16101654
// BULK SET HELPERS
16111655

16121656
sai_status_t ClientSai::bulkSet(

lib/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ libsairedis_la_SOURCES = \
3838
sai_redis_debug_counter.cpp \
3939
sai_redis_dtel.cpp \
4040
sai_redis_fdb.cpp \
41+
sai_redis_genericprogrammable.cpp \
4142
sai_redis_hash.cpp \
4243
sai_redis_hostif.cpp \
4344
sai_redis_interfacequery.cpp \

lib/RedisRemoteSaiInterface.cpp

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,6 +1453,24 @@ sai_status_t RedisRemoteSaiInterface::bulkRemove(
14531453
return bulkRemove(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, mode, object_statuses);
14541454
}
14551455

1456+
sai_status_t RedisRemoteSaiInterface::bulkRemove(
1457+
_In_ uint32_t object_count,
1458+
_In_ const sai_neighbor_entry_t *neighbor_entry,
1459+
_In_ sai_bulk_op_error_mode_t mode,
1460+
_Out_ sai_status_t *object_statuses)
1461+
{
1462+
SWSS_LOG_ENTER();
1463+
1464+
std::vector<std::string> serializedObjectIds;
1465+
1466+
for (uint32_t idx = 0; idx < object_count; idx++)
1467+
{
1468+
serializedObjectIds.emplace_back(sai_serialize_neighbor_entry(neighbor_entry[idx]));
1469+
}
1470+
1471+
return bulkRemove(SAI_OBJECT_TYPE_NEIGHBOR_ENTRY, serializedObjectIds, mode, object_statuses);
1472+
}
1473+
14561474
sai_status_t RedisRemoteSaiInterface::bulkSet(
14571475
_In_ sai_object_type_t object_type,
14581476
_In_ uint32_t object_count,
@@ -1568,6 +1586,25 @@ sai_status_t RedisRemoteSaiInterface::bulkSet(
15681586
return bulkSet(SAI_OBJECT_TYPE_MY_SID_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
15691587
}
15701588

1589+
sai_status_t RedisRemoteSaiInterface::bulkSet(
1590+
_In_ uint32_t object_count,
1591+
_In_ const sai_neighbor_entry_t *neighbor_entry,
1592+
_In_ const sai_attribute_t *attr_list,
1593+
_In_ sai_bulk_op_error_mode_t mode,
1594+
_Out_ sai_status_t *object_statuses)
1595+
{
1596+
SWSS_LOG_ENTER();
1597+
1598+
std::vector<std::string> serializedObjectIds;
1599+
1600+
for (uint32_t idx = 0; idx < object_count; idx++)
1601+
{
1602+
serializedObjectIds.emplace_back(sai_serialize_neighbor_entry(neighbor_entry[idx]));
1603+
}
1604+
1605+
return bulkSet(SAI_OBJECT_TYPE_NEIGHBOR_ENTRY, serializedObjectIds, attr_list, mode, object_statuses);
1606+
}
1607+
15711608
sai_status_t RedisRemoteSaiInterface::bulkSet(
15721609
_In_ sai_object_type_t object_type,
15731610
_In_ const std::vector<std::string> &serialized_object_ids,
@@ -1877,6 +1914,36 @@ sai_status_t RedisRemoteSaiInterface::bulkCreate(
18771914
object_statuses);
18781915
}
18791916

1917+
sai_status_t RedisRemoteSaiInterface::bulkCreate(
1918+
_In_ uint32_t object_count,
1919+
_In_ const sai_neighbor_entry_t* neighbor_entry,
1920+
_In_ const uint32_t *attr_count,
1921+
_In_ const sai_attribute_t **attr_list,
1922+
_In_ sai_bulk_op_error_mode_t mode,
1923+
_Out_ sai_status_t *object_statuses)
1924+
{
1925+
SWSS_LOG_ENTER();
1926+
1927+
// TODO support mode
1928+
1929+
std::vector<std::string> serialized_object_ids;
1930+
1931+
// on create vid is put in db by syncd
1932+
for (uint32_t idx = 0; idx < object_count; idx++)
1933+
{
1934+
std::string str_object_id = sai_serialize_neighbor_entry(neighbor_entry[idx]);
1935+
serialized_object_ids.push_back(str_object_id);
1936+
}
1937+
1938+
return bulkCreate(
1939+
SAI_OBJECT_TYPE_NEIGHBOR_ENTRY,
1940+
serialized_object_ids,
1941+
attr_count,
1942+
attr_list,
1943+
mode,
1944+
object_statuses);
1945+
}
1946+
18801947
sai_status_t RedisRemoteSaiInterface::notifySyncd(
18811948
_In_ sai_object_id_t switchId,
18821949
_In_ sai_redis_notify_syncd_t redisNotifySyncd)

lib/sai_redis.h

Lines changed: 48 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -13,53 +13,54 @@ extern "C" {
1313

1414
#define PRIVATE __attribute__((visibility("hidden")))
1515

16-
PRIVATE extern const sai_acl_api_t redis_acl_api;
17-
PRIVATE extern const sai_bfd_api_t redis_bfd_api;
18-
PRIVATE extern const sai_bmtor_api_t redis_bmtor_api;
19-
PRIVATE extern const sai_bridge_api_t redis_bridge_api;
20-
PRIVATE extern const sai_buffer_api_t redis_buffer_api;
21-
PRIVATE extern const sai_counter_api_t redis_counter_api;
22-
PRIVATE extern const sai_debug_counter_api_t redis_debug_counter_api;
23-
PRIVATE extern const sai_dtel_api_t redis_dtel_api;
24-
PRIVATE extern const sai_fdb_api_t redis_fdb_api;
25-
PRIVATE extern const sai_hash_api_t redis_hash_api;
26-
PRIVATE extern const sai_hostif_api_t redis_hostif_api;
27-
PRIVATE extern const sai_ipmc_api_t redis_ipmc_api;
28-
PRIVATE extern const sai_ipmc_group_api_t redis_ipmc_group_api;
29-
PRIVATE extern const sai_isolation_group_api_t redis_isolation_group_api;
30-
PRIVATE extern const sai_l2mc_api_t redis_l2mc_api;
31-
PRIVATE extern const sai_l2mc_group_api_t redis_l2mc_group_api;
32-
PRIVATE extern const sai_lag_api_t redis_lag_api;
33-
PRIVATE extern const sai_macsec_api_t redis_macsec_api;
34-
PRIVATE extern const sai_mcast_fdb_api_t redis_mcast_fdb_api;
35-
PRIVATE extern const sai_mirror_api_t redis_mirror_api;
36-
PRIVATE extern const sai_mpls_api_t redis_mpls_api;
37-
PRIVATE extern const sai_nat_api_t redis_nat_api;
38-
PRIVATE extern const sai_neighbor_api_t redis_neighbor_api;
39-
PRIVATE extern const sai_next_hop_api_t redis_next_hop_api;
40-
PRIVATE extern const sai_next_hop_group_api_t redis_next_hop_group_api;
41-
PRIVATE extern const sai_policer_api_t redis_policer_api;
42-
PRIVATE extern const sai_port_api_t redis_port_api;
43-
PRIVATE extern const sai_qos_map_api_t redis_qos_map_api;
44-
PRIVATE extern const sai_queue_api_t redis_queue_api;
45-
PRIVATE extern const sai_route_api_t redis_route_api;
46-
PRIVATE extern const sai_router_interface_api_t redis_router_interface_api;
47-
PRIVATE extern const sai_rpf_group_api_t redis_rpf_group_api;
48-
PRIVATE extern const sai_samplepacket_api_t redis_samplepacket_api;
49-
PRIVATE extern const sai_scheduler_api_t redis_scheduler_api;
50-
PRIVATE extern const sai_scheduler_group_api_t redis_scheduler_group_api;
51-
PRIVATE extern const sai_srv6_api_t redis_srv6_api;
52-
PRIVATE extern const sai_stp_api_t redis_stp_api;
53-
PRIVATE extern const sai_switch_api_t redis_switch_api;
54-
PRIVATE extern const sai_system_port_api_t redis_system_port_api;
55-
PRIVATE extern const sai_tam_api_t redis_tam_api;
56-
PRIVATE extern const sai_tunnel_api_t redis_tunnel_api;
57-
PRIVATE extern const sai_udf_api_t redis_udf_api;
58-
PRIVATE extern const sai_virtual_router_api_t redis_virtual_router_api;
59-
PRIVATE extern const sai_vlan_api_t redis_vlan_api;
60-
PRIVATE extern const sai_wred_api_t redis_wred_api;
61-
PRIVATE extern const sai_my_mac_api_t redis_my_mac_api;
62-
PRIVATE extern const sai_ipsec_api_t redis_ipsec_api;
16+
PRIVATE extern const sai_acl_api_t redis_acl_api;
17+
PRIVATE extern const sai_bfd_api_t redis_bfd_api;
18+
PRIVATE extern const sai_bmtor_api_t redis_bmtor_api;
19+
PRIVATE extern const sai_generic_programmable_api_t redis_generic_programmable_api;
20+
PRIVATE extern const sai_bridge_api_t redis_bridge_api;
21+
PRIVATE extern const sai_buffer_api_t redis_buffer_api;
22+
PRIVATE extern const sai_counter_api_t redis_counter_api;
23+
PRIVATE extern const sai_debug_counter_api_t redis_debug_counter_api;
24+
PRIVATE extern const sai_dtel_api_t redis_dtel_api;
25+
PRIVATE extern const sai_fdb_api_t redis_fdb_api;
26+
PRIVATE extern const sai_hash_api_t redis_hash_api;
27+
PRIVATE extern const sai_hostif_api_t redis_hostif_api;
28+
PRIVATE extern const sai_ipmc_api_t redis_ipmc_api;
29+
PRIVATE extern const sai_ipmc_group_api_t redis_ipmc_group_api;
30+
PRIVATE extern const sai_isolation_group_api_t redis_isolation_group_api;
31+
PRIVATE extern const sai_l2mc_api_t redis_l2mc_api;
32+
PRIVATE extern const sai_l2mc_group_api_t redis_l2mc_group_api;
33+
PRIVATE extern const sai_lag_api_t redis_lag_api;
34+
PRIVATE extern const sai_macsec_api_t redis_macsec_api;
35+
PRIVATE extern const sai_mcast_fdb_api_t redis_mcast_fdb_api;
36+
PRIVATE extern const sai_mirror_api_t redis_mirror_api;
37+
PRIVATE extern const sai_mpls_api_t redis_mpls_api;
38+
PRIVATE extern const sai_nat_api_t redis_nat_api;
39+
PRIVATE extern const sai_neighbor_api_t redis_neighbor_api;
40+
PRIVATE extern const sai_next_hop_api_t redis_next_hop_api;
41+
PRIVATE extern const sai_next_hop_group_api_t redis_next_hop_group_api;
42+
PRIVATE extern const sai_policer_api_t redis_policer_api;
43+
PRIVATE extern const sai_port_api_t redis_port_api;
44+
PRIVATE extern const sai_qos_map_api_t redis_qos_map_api;
45+
PRIVATE extern const sai_queue_api_t redis_queue_api;
46+
PRIVATE extern const sai_route_api_t redis_route_api;
47+
PRIVATE extern const sai_router_interface_api_t redis_router_interface_api;
48+
PRIVATE extern const sai_rpf_group_api_t redis_rpf_group_api;
49+
PRIVATE extern const sai_samplepacket_api_t redis_samplepacket_api;
50+
PRIVATE extern const sai_scheduler_api_t redis_scheduler_api;
51+
PRIVATE extern const sai_scheduler_group_api_t redis_scheduler_group_api;
52+
PRIVATE extern const sai_srv6_api_t redis_srv6_api;
53+
PRIVATE extern const sai_stp_api_t redis_stp_api;
54+
PRIVATE extern const sai_switch_api_t redis_switch_api;
55+
PRIVATE extern const sai_system_port_api_t redis_system_port_api;
56+
PRIVATE extern const sai_tam_api_t redis_tam_api;
57+
PRIVATE extern const sai_tunnel_api_t redis_tunnel_api;
58+
PRIVATE extern const sai_udf_api_t redis_udf_api;
59+
PRIVATE extern const sai_virtual_router_api_t redis_virtual_router_api;
60+
PRIVATE extern const sai_vlan_api_t redis_vlan_api;
61+
PRIVATE extern const sai_wred_api_t redis_wred_api;
62+
PRIVATE extern const sai_my_mac_api_t redis_my_mac_api;
63+
PRIVATE extern const sai_ipsec_api_t redis_ipsec_api;
6364

6465
PRIVATE extern std::shared_ptr<sairedis::SaiInterface> redis_sai;
6566

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#include "sai_redis.h"
2+
3+
REDIS_GENERIC_QUAD(GENERIC_PROGRAMMABLE,generic_programmable);
4+
5+
const sai_generic_programmable_api_t redis_generic_programmable_api = {
6+
REDIS_GENERIC_QUAD_API(generic_programmable)
7+
};

lib/sai_redis_interfacequery.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ static sai_apis_t redis_apis = {
7979
API(system_port),
8080
API(my_mac),
8181
API(ipsec),
82+
API(generic_programmable),
8283
API(bmtor),
8384
};
8485

lib/sai_redis_neighbor.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ static sai_status_t redis_remove_all_neighbor_entries(
88
return SAI_STATUS_NOT_IMPLEMENTED;
99
}
1010

11+
REDIS_BULK_QUAD_ENTRY(NEIGHBOR_ENTRY,neighbor_entry);
1112
REDIS_GENERIC_QUAD_ENTRY(NEIGHBOR_ENTRY,neighbor_entry);
1213

1314
const sai_neighbor_api_t redis_neighbor_api = {
1415

1516
REDIS_GENERIC_QUAD_API(neighbor_entry)
16-
1717
redis_remove_all_neighbor_entries,
18+
19+
REDIS_BULK_QUAD_API(neighbor_entry)
1820
};

lib/sai_redis_nexthopgroup.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ const sai_next_hop_group_api_t redis_next_hop_group_api = {
1616
redis_bulk_create_next_hop_group_members,
1717
redis_bulk_remove_next_hop_group_members,
1818
REDIS_GENERIC_QUAD_API(next_hop_group_map)
19-
redis_bulk_get_next_hop_group_members,
20-
redis_bulk_set_next_hop_group_members
19+
redis_bulk_set_next_hop_group_members,
20+
redis_bulk_get_next_hop_group_members
2121
};

lib/sai_redis_switch.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,30 @@ static sai_status_t redis_switch_mdio_write(
2424
return SAI_STATUS_NOT_IMPLEMENTED;
2525
}
2626

27+
static sai_status_t redis_switch_mdio_cl22_read(
28+
_In_ sai_object_id_t switch_id,
29+
_In_ uint32_t device_addr,
30+
_In_ uint32_t start_reg_addr,
31+
_In_ uint32_t number_of_registers,
32+
_Out_ uint32_t *reg_val)
33+
{
34+
SWSS_LOG_ENTER();
35+
36+
return SAI_STATUS_NOT_IMPLEMENTED;
37+
}
38+
39+
static sai_status_t redis_switch_mdio_cl22_write(
40+
_In_ sai_object_id_t switch_id,
41+
_In_ uint32_t device_addr,
42+
_In_ uint32_t start_reg_addr,
43+
_In_ uint32_t number_of_registers,
44+
_In_ const uint32_t *reg_val)
45+
{
46+
SWSS_LOG_ENTER();
47+
48+
return SAI_STATUS_NOT_IMPLEMENTED;
49+
}
50+
2751
REDIS_GENERIC_QUAD(SWITCH,switch);
2852
REDIS_GENERIC_STATS(SWITCH,switch);
2953
REDIS_GENERIC_QUAD(SWITCH_TUNNEL,switch_tunnel);
@@ -55,4 +79,6 @@ const sai_switch_api_t redis_switch_api = {
5579
redis_switch_mdio_write,
5680

5781
REDIS_GENERIC_QUAD_API(switch_tunnel)
82+
redis_switch_mdio_cl22_read,
83+
redis_switch_mdio_cl22_write
5884
};

0 commit comments

Comments
 (0)