Commit Graph

30 Commits

Author SHA1 Message Date
pavel-shirshov
1c06ae6f2a [libteam]: timerfd read() could return 0 fix (#3393)
* Update sonic-quagga submodule

* [libteam]: timerfd read() could return 0
2019-08-29 14:14:12 -07:00
Shuotian Cheng
f1a88cd105 [libteam]: Fix libteam race condition when interface is created and enslaved (#3250)
The race condition could happen like this:
When an interface is enslaved into the port channel immediately after
it is created, the order of creating the ifinfo and linking the ifinfo to
the port is not guaranteed.

Please check the patch commit message to get full details.

Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
2019-07-31 16:44:35 -07:00
arheneus@marvell.com
50fe458592 [build]: SONiC buildimage ARM arch support (#2980)
ARM Architecture support in SONIC

make configure platform=[ASIC_VENDOR_ARCH] PLATFORM_ARCH=[ARM_ARCH]
SONIC_ARCH: default amd64
armhf - arm32bit
arm64 - arm64bit

Signed-off-by: Antony Rheneus <arheneus@marvell.com>
2019-07-25 22:06:41 -07:00
Renuka Manavalan
76bf5a0bc4 [build]: Added debug symbols to many debug dockers. (#3098)
* Added debug symbols to many debug dockers.

* For debug images *only*:
1) Archive source files into debug image
2) Archived source is copied into /src
3) Created an empty dir /debug
4) Mount both /src as ro & /debug as rw into every docker
5) Login banner will give some details on /src & /debug
6) Devs can copy core file into /debug and view it from inside a container.
7) Dev may create all gdb logs and other data directly into /debug.

* Dropped redundant REDIS_TOOLS per review comments.

* Added debug symbols to frr package and hence FRR based BGP docker.

* 1) Moved dbg_files.sh to scripts/
2) Src directories to archive are now collected from individual Makefiles.
3) Added few more debug symbols
4) Added few more debug dockers.

Here after no more changes except per review comments.

To debug:
Install required version of debug image in Switch or VM.
Copy core file into /debug of host
Get into Docker
gdb /usr/bin/<daemon> -c /debug/<your core file>
set directory /src/... <-- inside gdb to get the source

For non-in-depth debugging:

Download corresponding debug Docker image (docker-...-dbg.gz) to your VM
Load the image
Run image with entrypoint as 'bash' with dir containing core mapped in.
Run gdb on the core.
2019-07-03 22:13:55 -07:00
pavel-shirshov
466334a8c9
[libteam]: Reimplement Warm-Reboot procedure (#3016)
* Update sonic-quagga submodule

* [libteam]: Reimplement Warm-Reboot procedure
2019-06-14 17:26:58 -07:00
yorke
6dbae0e3cd [libteam] Upgrade libteam to 1.28-1 and reorganize patches (#2956)
Signed-off-by: yorke <yorke.yuan@asterfusion.com>
2019-06-04 12:55:26 -07:00
pavel-shirshov
3f4de49e3d
[libteam] Send updates as soon as we need to update the LACP partner about changes (#2955) 2019-05-30 13:26:32 -07:00
Phanindra TV
df149cd1fc [teamd]: Administratively shutdown port channel has member ports in deselected state and traffic is not forwarded. #1771 (#2882) 2019-05-28 22:43:04 -07:00
Ying Xie
b9ddae8443
[teamd] do not process lacpdu before the port ifinfo is set (#2815)
Port libteam patch which fixes the race condition we observed during
warm reboot.

Remove early patches: 0006, 0008, 0009.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-04-29 17:56:42 -07:00
pavel-shirshov
452e75c951
Downport the netlink patch to libteam1.26. Increase netlink buffers (#2822) 2019-04-25 16:16:22 -07:00
pavel-shirshov
1f516920e1
teamd: lacp: update port state according to partner's sync bit (#2793)
Backport of
54f137c105

According to 6.4.15 of IEEE 802.1AX-2014, Figure 6-22, the state that the
port is selected moves MUX state from DETACHED to ATTACHED.

But ATTACHED state does not mean that the port can send and receive user
frames. COLLECTING_DISTRIBUTION state is the state that the port can send
and receive user frames. To move MUX state from ATTACHED to
COLLECTING_DISTRIBUTION, the partner state should be sync as well as the
port selected.

In function lacp_port_actor_update(), only INFO_STATE_SYNCHRONIZATION
should be set to the actor.state when the port is selected.
INFO_STATE_COLLECTING and INFO_STATE_DISTRIBUTING should be set to false
with ATTACHED mode and set to true when INFO_STATE_SYNCHRONIZATION of
partner.state is set.

In function lacp_port_should_be_{enabled, disabled}(), we also need to
check the INFO_STATE_SYNCHRONIZATION bit of partner.state.

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
2019-04-16 19:11:24 -07:00
Ying Xie
fd3f61167d
[teamd] prevent re-entrance of port priv change handler (#2723)
When adding a lag member dynamically after system boots up, teamd
port priv change handler could re-entrant itself and causing adding
operation to fail.

While handling PORT_CHANGE event, teamd_per_port.c port priv change
handler was called, it will then call runner_lacp to add port to lag,
the later causes IFINFO_CHANGE to be notified and calls the priv change
handler again, this re-entrance would cause runner_lacp port_added to
be called again and messes up with the previous adding sequence. Then
fails the lag member adding operation.

Prevent per port priv change handler re-entrance solves the problem.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-04-01 16:51:30 -07:00
Ying Xie
80d65943eb
[teamd] retry creating team_port after interface info changed (#2699)
Race condition has been noticed after warm reboot: sometimes when
port_changed notification was received, the link message didn't
have the device name. Without device name, creating team port
would fail.

Registering to the interface information change notification, so
later when device name becomes available, retry creating team port.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-03-28 09:57:06 -07:00
Jipan Yang
4e3bb4d47a [libteam]: Skip setting the same hwaddr to lag port to avoid disrupting neighbor… (#2602)
* Skip setting the same hwaddr to lag port to avoid disrupting neighbor entries

Signed-off-by: Jipan Yang <jipan.yang@alibaba-inc.com>
2019-03-23 12:20:22 -07:00
Ying Xie
60968cf95b
[make file] managing teamd patches with stg (#2689)
Just so that the folder will be clean and make working on new patches
much easier.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-03-21 18:11:57 -07:00
Shuotian Cheng
09b9db03d3 [libteam]: Fix libteam race condition when interface is created and enslaved (#2449)
The race condition could happen like this:
When an interface is enslaved into the port channel immediately after
it is created, the order of creating the ifinfo and linking the ifinfo to
the port is not guaranteed.

Please check the patch commit message to get full details.

Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
2019-01-16 00:02:16 -08:00
Ying Xie
bff316562e [teamd] avoid using actor port number 0 in teamd config (#2327)
When using actor port number 0 in lag configuration, IO cannot be sent to
peer. Increase actor port number by 1 to keep uniqueness and at the same
time, avoid using actor port number 0.

Ref. 802.1AX 6.3.4 Port identification

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2018-12-01 02:11:41 -08:00
pavel-shirshov
c7d18f1edc [teamd]: Fix teamd patch issues, which prevented system WR (#2321)
- What I did

Fixed vanilla teamd bug, which prevented teamd to have a correct view of kernel state. Check bug #2 from the message
Changed schema for LACP port id.
Changed severity of an error message.
Removed logic to disable warm_start_read mode, when teamd started. It didn't work in system restart mode, because interfaces were added one by one, and it's impossible to say when everything is added.

- How I did it

I've added team_refresh() on every port addition
I extract port id from the port name. Currently I support only "EthernetX" scheme. We need to add more schemes if we change port scheme.
_err -> _info
...

- How to verify it
Build the image, install on your DUT, reboot it once, then reboot it on WR mode checking LACP state on remote side. The state shouldn't flip.
2018-11-29 19:19:26 -08:00
pavel-shirshov
f6f8880ae7
Don't put down LAG interface when it starts in WR mode (#2257)
* Don't put down LAG interface when it starts in WR mode

* Change logic. Don't touch carrier in WR mode. Until it could be in UP mode

* Change control plane restore logic in WR mode
2018-11-19 18:29:26 -08:00
pavel-shirshov
cc6e6b5ea3 [teamd]: Update hwaddr_orig unconditionally. (#2254)
SONiC uses same mac address for both phy ports and LAGs
2018-11-14 01:14:05 -08:00
pavel-shirshov
c61c1d5695 Fix teamd behavior for Warm-reboot mode (#2241)
* Fix teamd behavior for Warm-reboot mode

* Don't save 'read' state into the struct. Try to read a lacp file everytime when a port starts.

* Fix filename for access()
2018-11-13 10:53:20 -08:00
pavel-shirshov
4157f1d230
[teamd] Add Warm-reboot startup and shutdown mode for teamd (#2173)
* Add Warm-reboot startup and shutdown mode for teamd

* Address comments, fix some bugs

* Use tab instead of 8 spaces
2018-11-05 16:37:57 -08:00
Qi Luo
a6d2d777c4
Fix links of debian git server (#1755) 2018-05-31 18:38:12 -07:00
Haiyang Zheng
2abdf8dc58 [libteam] Add fallback support for single-member-port LAG (#1118)
* [libteam] Add fallback support for single-member-port LAG

* Allow the port to be selected if the LAG is configured
with fallback and port is in defaulted state due to missing
LACP PDUs from remote end
* Only enable port if LAG is admin up and the member port
is link up

* [team] Add lacp fallback config to teamd.j2 template

* [teamd] Resolve config conflict between fallback and minlink

* Remove min_link config if fallback is configured
* Add support for fallback config in minigraph

* [teamd] Only enable fallback if it is single-member-port LAG

Signed-off-by: Haiyang Zheng <haiyang.z@alibaba-inc.com>

* [teamd] Removing the admin status check in lacp_port_link_update

Will submit another pull request to fix this issue.

Signed-off-by: Haiyang Zheng <haiyang.z@alibaba-inc.com>
2017-12-16 11:28:18 -08:00
pavel-shirshov
e0513d213b lacp runner will send lacp update right after it received SIGINT (#969) 2017-09-21 09:17:29 -07:00
Marian Pritsak
51cab5d4ed [config]: Add SONIC_CONFIG_MAKE_JOBS (#784)
* [config]: Add SONIC_CONFIG_MAKE_JOBS

This config option allows user to specify -j value that will be passed
to each package build.

Signed-off-by: marian-pritsak <marianp@mellanox.com>
2017-07-07 15:32:50 +03:00
Shuotian Cheng
667ef1d766 [libteam]: Add 0002-libteam-Temporarily-remove-redundant-debug-mes.patch (#357)
Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-02 13:34:37 -08:00
Shuotian Cheng
09f61a4894 [libteam]: Add patch 0001-libteam-Add-team_get_port_enabled-function.patch (#205) 2017-01-22 22:19:43 -08:00
Marian Pritsak
e9098b99fb Build improvements (#80)
* Build improvements

Fix dependencies
Add configuration options
Automatically build sonic-slave

* Set default number of jobs to 1

* Auto generate target/debs directory

Signed-off-by: marian-pritsak <marianp@mellanox.com>

* Automatically remove sonic-slave container after exit

* Silence clean-logs

* Add SONIC_CLEAN_TARGETS to clean

* Use second expansion for clean dependencies

* Avoid creating empty log files

Remove log file on flush instead of writing empty string

* Put dpkg install inside lock

Use same lock as debian install targets do to avoid
race condition in dpkg installation

* Remove redirect to log from docker save

* Add .platform dependency to all and clean targets

* Remove header and footer from clean targets

* Disable messages for SONIC_CLEAN_TARGETS

* Exit with error if dpkg-buildpackage fails

* Set new location for debs in build_debian.sh

* Add recipe for docker-database

* Update redis version to 3.2.4

* Add support for p4 platform

* Add recipe for snmpd

* Add slave targets to phony and make all target default

* Remove build.sh from thrift

* Add versioning to team, nl, hiredis and initramfs

* Change sonic-slave to support snmpd build from sources

* Remove src/tenjin

* Add recipe for lldpd

* Add recipe for mpdecimal

* Remove hiredis directory on rebuild

* Add recipe for Mellanox hw management

* Remove generic image from all targets for Mellanox

* Add support for python wheels

* Add lldp and snmp dockers

* Sync docker-database to include libjemalloc

* Fix asyncsnmp variable name

* Change default build configuration

Redirect output to log files by default
Set number of jobs to nproc value
Do not print dependencies
Fix logging to print log of failed job into console

* Use docker inspect to check if sonic-slave image exists

* Use config in slave.mk directly

* Disable color output by default

* Remove sswsdk dependency from lldp and snmp dockers

* Fix comment in py wheels install targets

* Add dependency between two versions of sswsdk

* Add containers to mellanox platform

lldp, snmp and database containers

* Add recipe for team docker

* Add team docker to mellanox platform

* Encrypt password passed to build_debian.sh

* Update mellanox SAI version

Make version and revision setting only in main recipe

* Fix error handling in makefiles

As makefiles use .ONESHELL we should add -e
option to shell options in order to exit after any command fails

* Add recipe for platform monitor image

* Add platfotm monitor to mellanox targets

* Ignore submodules when building base image
2016-12-05 11:12:19 -08:00
Shuotian Cheng
4373c518cf libteam: Adding build.sh script and docker-team (#18) 2016-10-07 10:41:44 -07:00