Fix midplane network in bookworm with kernel 6.1

Signed-off-by: Ze Gan <ganze718@gmail.com>
This commit is contained in:
Ze Gan 2024-03-07 23:16:16 +08:00
parent 2c796732b0
commit 764d019fb7
8 changed files with 38 additions and 17 deletions

View File

@ -633,16 +633,20 @@ sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable config-chassisdb.service
# Copy midplane network service file for smart switch
sudo cp $IMAGE_CONFIGS/midplane-network/bridge-midplane.netdev $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_NETWORK/bridge-midplane.netdev
sudo cp $IMAGE_CONFIGS/midplane-network/bridge-midplane.network $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_NETWORK/bridge-midplane.network
sudo cp $IMAGE_CONFIGS/midplane-network/dummy-midplane.netdev $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_NETWORK/dummy-midplane.netdev
sudo cp $IMAGE_CONFIGS/midplane-network/dummy-midplane.network $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_NETWORK/dummy-midplane.network
sudo cp $IMAGE_CONFIGS/midplane-network/midplane-network-npu.network $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_NETWORK/midplane-network-npu.network
sudo cp $IMAGE_CONFIGS/midplane-network/midplane-network-dpu.network $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_NETWORK/midplane-network-dpu.network
sudo cp $IMAGE_CONFIGS/midplane-network/midplane-network-npu.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM/midplane-network-npu.service
sudo cp $IMAGE_CONFIGS/midplane-network/midplane-network-dpu.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM/midplane-network-dpu.service
# Disable smart switch unit by default, these units will be controlled by systemd-sonic-generator
sudo ln -s /dev/null /etc/systemd/network/bridge-midplane.netdev
sudo ln -s /dev/null /etc/systemd/network/bridge-midplane.network
sudo ln -s /dev/null /etc/systemd/network/midplane-network-npu.network
sudo ln -s /dev/null /etc/systemd/network/midplane-network-dpu.network
sudo ln -s /dev/null $FILESYSTEM_ROOT/etc/systemd/network/bridge-midplane.netdev
sudo ln -s /dev/null $FILESYSTEM_ROOT/etc/systemd/network/bridge-midplane.network
sudo ln -s /dev/null $FILESYSTEM_ROOT/etc/systemd/network/dummy-midplane.netdev
sudo ln -s /dev/null $FILESYSTEM_ROOT/etc/systemd/network/dummy-midplane.network
sudo ln -s /dev/null $FILESYSTEM_ROOT/etc/systemd/network/midplane-network-npu.network
sudo ln -s /dev/null $FILESYSTEM_ROOT/etc/systemd/network/midplane-network-dpu.network
echo "midplane-network-npu.service" | sudo tee -a $GENERATED_SERVICE_FILE
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl disable midplane-network-npu.service
echo "midplane-network-dpu.service" | sudo tee -a $GENERATED_SERVICE_FILE
@ -652,6 +656,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT systemctl disable midplane-network-dpu.servi
sudo sed -i 's/#ManageForeignRoutingPolicyRules=yes/ManageForeignRoutingPolicyRules=no/g' $FILESYSTEM_ROOT/etc/systemd/networkd.conf
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable systemd-networkd
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl disable systemd-networkd-wait-online.service
# Copy backend-acl script and service file
sudo cp $IMAGE_CONFIGS/backend_acl/backend-acl.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM/backend-acl.service

View File

@ -1,7 +1,8 @@
# Midplane network for NPU
# Network configuration for bridge midplane
[Match]
Name=bridge-midplane
[Network]
Address=169.254.200.254/24
LinkLocalAddressing=no

View File

@ -0,0 +1,5 @@
# Dummy interface for midplane network
[NetDev]
Name=dummy-midplane
Kind=dummy

View File

@ -0,0 +1,8 @@
# The systemd-networkd requires that the bridge interface(bridge-midplane) has at least one member interface, otherwise the IP address will not be configured.
# This dummy interface will be added into the bridge-midplane as a member to guarantee the IP address configuration correctly.
[Match]
Name=dummy-midplane
[Network]
Bridge=bridge-midplane

View File

@ -391,9 +391,9 @@ class SsgMainTest : public SsgFunctionTest {
}
else if (cfg.is_smart_switch_npu) {
ASSERT_EQ(cfg.is_smart_switch_dpu, false);
nlohmann::json::array_t dpus;
nlohmann::json dpus;
for (int i = 0; i < cfg.num_dpus; i++) {
dpus.push_back(nlohmann::json::object());
dpus["dpu" + std::to_string(i)] = nlohmann::json::object();
}
platform_config["DPUS"] = dpus;
}
@ -496,6 +496,8 @@ const std::vector<std::string>
SsgMainTest::npu_network_service_list = {
"bridge-midplane.netdev",
"bridge-midplane.network",
"dummy-midplane.netdev",
"dummy-midplane.network",
"midplane-network-npu.network",
};

View File

@ -860,10 +860,7 @@ static bool is_smart_switch_npu() {
if (platform_info == NULL) {
return false;
}
if (!json_object_object_get_ex(platform_info, "DPUS", &dpus)) {
return false;
}
return true;
return json_object_object_get_ex(platform_info, "DPUS", &dpus);
}
@ -878,11 +875,7 @@ static bool is_smart_switch_dpu() {
if (platform_info == NULL) {
return false;
}
if (!json_object_object_get_ex(platform_info, "DPU", &dpu)) {
return false;
}
return true;
return json_object_object_get_ex(platform_info, "DPU", &dpu);
}
@ -904,7 +897,10 @@ static int get_num_of_dpu() {
if (!json_object_object_get_ex(platform_info, "DPUS", &dpus)) {
return 0;
}
size_t num_dpu = json_object_array_length(dpus);
size_t num_dpu = 0;
json_object_object_foreach(dpus, key, val) {
num_dpu++;
}
return num_dpu;
}
@ -1076,6 +1072,8 @@ static int install_network_service_for_smart_switch() {
static const char* npu_network_units[] = {
"bridge-midplane.netdev",
"bridge-midplane.network",
"dummy-midplane.netdev",
"dummy-midplane.network",
"midplane-network-npu.network",
NULL
};

View File

@ -0,0 +1 @@
../../../../files/image_config/midplane-network/dummy-midplane.netdev

View File

@ -0,0 +1 @@
../../../../files/image_config/midplane-network/dummy-midplane.network