-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
[Mellanox] Use MAC from EEPROM for PortChannels and VLAN Interfaces #1793
Changes from all commits
e4b16e2
ca3704e
8f15fd7
38663f4
048db4d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,7 +6,12 @@ rm -rf $TEAMD_CONF_PATH | |
mkdir -p $TEAMD_CONF_PATH | ||
|
||
SONIC_ASIC_TYPE=$(sonic-cfggen -y /etc/sonic/sonic_version.yml -v asic_type) | ||
MAC_ADDRESS=$(ip link show eth0 | grep ether | awk '{print $2}') | ||
|
||
if [ "$SONIC_ASIC_TYPE" == "mellanox" ]; then | ||
MAC_ADDRESS=$(sonic-cfggen -d -v DEVICE_METADATA.localhost.mac) | ||
else | ||
MAC_ADDRESS=$(ip link show eth0 | grep ether | awk '{print $2}') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. MAC_ADDRESS=$(</sys/class/net/eth0/address) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. the case under "else" getting MAC address from the "ip link show eth0" is the old code and used for other platforms |
||
fi | ||
|
||
# Align last byte | ||
if [ "$SONIC_ASIC_TYPE" == "mellanox" -o "$SONIC_ASIC_TYPE" == "centec" ]; then | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -155,7 +155,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable hostname-config.service | |
sudo cp $IMAGE_CONFIGS/hostname/hostname-config.sh $FILESYSTEM_ROOT/usr/bin/ | ||
|
||
# Copy updategraph script and service file | ||
sudo cp $IMAGE_CONFIGS/updategraph/updategraph.service $FILESYSTEM_ROOT/etc/systemd/system/ | ||
j2 files/build_templates/updategraph.service.j2 | sudo tee $FILESYSTEM_ROOT/etc/systemd/system/updategraph.service | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why do we need to copy everything to the screen? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. to get it in build log, I think |
||
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable updategraph.service | ||
sudo cp $IMAGE_CONFIGS/updategraph/updategraph $FILESYSTEM_ROOT/usr/bin/ | ||
{% if enable_dhcp_graph_service == "y" %} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
From 22fef644b1150677353ab0559828ea45a982d901 Mon Sep 17 00:00:00 2001 | ||
From: Andriy Moroz <c_andriym@mellanox.com> | ||
Date: Wed, 11 Jul 2018 16:51:07 +0300 | ||
Subject: [PATCH] Add systemd service config | ||
|
||
Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> | ||
--- | ||
debian/control | 2 +- | ||
debian/hw-management.service | 10 ++++++++++ | ||
debian/rules | 2 +- | ||
3 files changed, 12 insertions(+), 2 deletions(-) | ||
create mode 100644 debian/hw-management.service | ||
|
||
diff --git a/debian/control b/debian/control | ||
index 048cd61..7e3a545 100644 | ||
--- a/debian/control | ||
+++ b/debian/control | ||
@@ -1,7 +1,7 @@ | ||
Source: hw-management | ||
Priority: extra | ||
Maintainer: Adir Atias <adira@dev-r-vrt-128-008> | ||
-Build-Depends: | ||
+Build-Depends: dh-systemd | ||
Standards-Version: | ||
Section: libs | ||
Homepage: http://www.mellanox.com | ||
diff --git a/debian/hw-management.service b/debian/hw-management.service | ||
new file mode 100644 | ||
index 0000000..d18916d | ||
--- /dev/null | ||
+++ b/debian/hw-management.service | ||
@@ -0,0 +1,10 @@ | ||
+[Unit] | ||
+Description=Mellanox Hardware Management | ||
+ | ||
+[Service] | ||
+Type=oneshot | ||
+EnvironmentFile=/host/machine.conf | ||
+ExecStart=/bin/bash -c "/usr/share/sonic/device/$onie_platform/hw-management start" | ||
+ | ||
+[Install] | ||
+WantedBy=multi-user.target | ||
diff --git a/debian/rules b/debian/rules | ||
index fc38817..fba4150 100755 | ||
--- a/debian/rules | ||
+++ b/debian/rules | ||
@@ -8,7 +8,7 @@ K_SRC ?= "/lib/modules/$(KVERSION)/build" | ||
pwd=$(shell pwd) | ||
|
||
%: | ||
- dh $@ | ||
+ dh $@ --with systemd | ||
|
||
override_dh_auto_configure: | ||
|
||
-- | ||
1.9.1 | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -481,6 +481,8 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ | |
j2 -f env files/initramfs-tools/union-mount.j2 onie-image.conf > files/initramfs-tools/union-mount | ||
j2 -f env files/initramfs-tools/arista-convertfs.j2 onie-image.conf > files/initramfs-tools/arista-convertfs | ||
|
||
j2 files/build_templates/updategraph.service.j2 > updategraph.service | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this line necessary? The same operation is being done in sonic_debian_extension.j2 above and there the resulting file is getting copied to its proper final destination. Why is this file getting written to the repo root? It doesn't appear to be used anywhere. |
||
|
||
$(if $($*_DOCKERS), | ||
j2 files/build_templates/sonic_debian_extension.j2 > sonic_debian_extension.sh | ||
chmod +x sonic_debian_extension.sh, | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -41,12 +41,21 @@ def get_sonic_version_info(): | |
return data | ||
|
||
def get_system_mac(): | ||
proc = subprocess.Popen("ip link show eth0 | grep ether | awk '{print $2}'", shell=True, stdout=subprocess.PIPE) | ||
version_info = get_sonic_version_info() | ||
|
||
if (version_info['asic_type'] == 'mellanox'): | ||
get_mac_cmd = "sudo decode-syseeprom -m" | ||
else: | ||
get_mac_cmd = "ip link show eth0 | grep ether | awk '{print $2}'" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. read a file "/sys/class/net/eth0/address"? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. like above - not sure about other platforms |
||
|
||
proc = subprocess.Popen(get_mac_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | ||
(mac, err) = proc.communicate() | ||
if err: | ||
return None | ||
|
||
mac = mac.strip() | ||
|
||
# Align last byte of MAC if necessary | ||
version_info = get_sonic_version_info() | ||
if version_info and (version_info['asic_type'] == 'mellanox' or version_info['asic_type'] == 'centec'): | ||
last_byte = mac[-2:] | ||
aligned_last_byte = format(int(int(last_byte, 16) & 0b11000000), '02x') | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we do
sudo decode-syseeprom -m
here?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
unfortunately no, it is not available in the containers...