All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] utils/net/rtnet.in: add delay during master configuration
@ 2022-04-22 14:25 Mauro S.
  2022-04-22 16:55 ` Jan Kiszka
  0 siblings, 1 reply; 5+ messages in thread
From: Mauro S. @ 2022-04-22 14:25 UTC (permalink / raw)
  To: xenomai

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.

-- 
Mauro S.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-utils-net-rtnet.in-add-delay-during-master-configura.patch
Type: text/x-patch
Size: 3060 bytes
Desc: not available
URL: <http://xenomai.org/pipermail/xenomai/attachments/20220422/daed78d0/attachment.bin>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] utils/net/rtnet.in: add delay during master configuration
  2022-04-22 14:25 [PATCH] utils/net/rtnet.in: add delay during master configuration Mauro S.
@ 2022-04-22 16:55 ` Jan Kiszka
  2022-04-22 18:52   ` Mauro S.
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Kiszka @ 2022-04-22 16:55 UTC (permalink / raw)
  To: Mauro S., xenomai

On 22.04.22 16:25, 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.
> 

Thanks for the enhancement! Somehow the patch was attached, rather than
inlined, and that results in it being dropped from the distributed
emails. So I'm pasting it here.

We need a legal "Signed-off-by" line (https://developercertificate.org/).

> ---
>  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
> +		sleep $UPDELAY
> +	    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"
> -- 
> 2.17.1
> 

Pragmatic approach, I'm fine with it - as we have no proper interface to
read back the current link state (at least as far as I remember).

Jan

-- 
Siemens AG, Technology
Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] utils/net/rtnet.in: add delay during master configuration
  2022-04-22 16:55 ` Jan Kiszka
@ 2022-04-22 18:52   ` Mauro S.
  0 siblings, 0 replies; 5+ messages in thread
From: Mauro S. @ 2022-04-22 18:52 UTC (permalink / raw)
  To: Jan Kiszka, xenomai

Il 22/04/22 18:55, Jan Kiszka ha scritto:
> On 22.04.22 16:25, 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.
>>
> 
> Thanks for the enhancement! Somehow the patch was attached, rather than
> inlined, and that results in it being dropped from the distributed
> emails. So I'm pasting it here.

Yes, my mistake sorry.

> 
> We need a legal "Signed-off-by" line (https://developercertificate.org/).

Another mistake, double sorry. I resend the patch inlined and signed-off.

> 
>> ---
>>   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
>> +		sleep $UPDELAY
>> +	    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"
>> -- 
>> 2.17.1
>>
> 
> Pragmatic approach, I'm fine with it - as we have no proper interface to
> read back the current link state (at least as far as I remember).

Yes, you are right: I tried to find some mechanism (like "carrier" file) 
in /sys and /proc but I found nothing.

> 
> Jan
> 

-- 
Mauro S.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] utils/net/rtnet.in: add delay during master configuration
  2022-06-23 12:36 Mauro Salvini
@ 2022-07-03 17:35 ` Jan Kiszka
  0 siblings, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2022-07-03 17:35 UTC (permalink / raw)
  To: Mauro Salvini, xenomai

On 23.06.22 14:36, Mauro Salvini 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.salvi@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 cd24017b4..9b5f70440 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
> +		sleep "$UPDELAY"
> +	    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"

Thanks, applied.

Jan

-- 
Siemens AG, Technology
Competence Center Embedded Linux

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] utils/net/rtnet.in: add delay during master configuration
@ 2022-06-23 12:36 Mauro Salvini
  2022-07-03 17:35 ` Jan Kiszka
  0 siblings, 1 reply; 5+ messages in thread
From: Mauro Salvini @ 2022-06-23 12:36 UTC (permalink / raw)
  To: xenomai; +Cc: Mauro Salvini

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.salvi@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 cd24017b4..9b5f70440 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
+		sleep "$UPDELAY"
+	    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"
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-07-03 17:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-22 14:25 [PATCH] utils/net/rtnet.in: add delay during master configuration Mauro S.
2022-04-22 16:55 ` Jan Kiszka
2022-04-22 18:52   ` Mauro S.
2022-06-23 12:36 Mauro Salvini
2022-07-03 17:35 ` Jan Kiszka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.