Hi all, some minor comments, see below:
On 22.04.22 20:58, Mauro S. via Xenomai wrote: > Some cards are slow to get the connection link up after the > "rtifconfig rteth0 up" command, e.g. on an Atom-x5 with an Intel I210 > (rt_igb driver) I detected approximately 3 seconds to get the link up. > > On master, the "rtifconfig rteth0 up" is followed by TDMA configuration and > start. After the TDMA start, the sync packet is sent at the defined > cycle time. > > Sometimes, after "rtnet start", the dmesg fills with this error: > > TDMA: Failed to transmit sync frame! > > and the rt driver locks. Then, the kernel watchdog is triggered and the > NIC is hw-reset by the kernel, producing more errors and another lock. > Sometimes the dmesg only fills with the error message and the NIC does > not lock. > This happens because the interface is not up and ready to handle > the sync packets when TDMA is started. > > This patch introduces a configurable delay between the "rtifconfig > rteth0 up" > and the TDMA start on master host. This allows to avoid these kind of > problems. > > Signed-off-by: Mauro Salvini <mau.sa...@tin.it> > --- > utils/net/rtnet.in | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/utils/net/rtnet.in b/utils/net/rtnet.in > index f81a7bb0a..8c2dcdf6e 100644 > --- a/utils/net/rtnet.in > +++ b/utils/net/rtnet.in > @@ -15,15 +15,19 @@ debug_func() { > usage() { > cat << EOF > Usage: > - $0 [-cf <config-file>] [-v] [-c] {start|stop} > + $0 [-cf <config-file>] [-d <delay>] [-v] [-c] {start|stop} > Start or stop station according to configuration file > > - $0 [-cf <config-file>] [-v] [-c] master <slave_ip1> [<slave_ip2> ...] > + $0 [-cf <config-file>] [-d <delay>] [-v] [-c] master <slave_ip1> > [<slave_ip2> ...] > Start station as master for given list of slaves > > $0 [-cf <config-file>] [-v] capture > Start only passive realtime capturing > > + The parameter -d allows to introduce a delay in seconds between the > + "rtifconfig rtethX up" command and the TDMA start on the host > + configured as master. Useful to avoid errors/card locks when the > + RT NIC is slow to get the link up. > The additional switch -v enables verbose output. > The additional switch -c enables capturing mode to allow use of a > network > analyzer such as Wireshark (if rtnet was built with --enable-rtcap). > @@ -76,6 +80,10 @@ submit_cfg() { > master) > $RTIFCONFIG rteth0 up $STATION_IP > > + if [ -n "$UPDELAY" ]; then Checked with shellcheck? I would expect ${UPDELAY} here and below. > + sleep $UPDELAY Indention looks broken. > + fi > + > $TDMACFG rteth0 master $TDMA_CYCLE > eval "$TDMA_SLOTS" > > @@ -144,6 +152,10 @@ start_master() { > > $RTIFCONFIG rteth0 up $IPADDR $NETMASK_OPT > > + if [ -n "$UPDELAY" ]; then > + sleep $UPDELAY > + fi > + > $TDMACFG rteth0 master $TDMA_CYCLE > $TDMACFG rteth0 slot 0 0 > > @@ -258,6 +270,11 @@ else > exit 1 > fi > > +if [ "$1" = "-d" ]; then > + UPDELAY="$2" > + shift 2 > +fi > + > if [ "$1" = "-v" ]; then > echo "Turning on verbose mode" > RTIFCONFIG="debug_func $RTIFCONFIG"