[U-Boot] [PATCH RFC] tsec: do not print Speed: if using netconsole

CONFIG_NETCONSOLE on the p2020ds is functional with the tsec driver. But the printf in adjust_link() which is called by startup_tsec() called by tsec_init() in tsec.c is making it impossible to use.
For example typing 12345 on the netconsole causes the message to be printed for every character:
=> Speed: 1000, full duplex 1Speed: 1000, full duplex 2Speed: 1000, full duplex 3Speed: 1000, full duplex 4Speed: 1000, full duplex 5Speed: 1000, full duplex
Unknown command '12345' - try 'help' => Speed: 1000, full duplex
Signed-off-by: Ed Swarthout Ed.Swarthout@freescale.com ---
Since the Speed message is useful, I don't particularly like this fix.
drivers/net/tsec.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index d8b6619..23e4622 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -846,10 +846,10 @@ static void adjust_link(struct eth_device *dev) printf("%s: Speed was bad\n", dev->name); break; } - +#ifndef CONFIG_NETCONSOLE printf("Speed: %d, %s duplex\n", priv->speed, (priv->duplexity) ? "full" : "half"); - +#endif } else { printf("%s: No link.\n", dev->name); }

Hi Ed,
On Sat, 2010-01-23 at 15:39 -0600, Ed Swarthout wrote:
CONFIG_NETCONSOLE on the p2020ds is functional with the tsec driver. But the printf in adjust_link() which is called by startup_tsec() called by tsec_init() in tsec.c is making it impossible to use.
For example typing 12345 on the netconsole causes the message to be printed for every character:
=> Speed: 1000, full duplex 1Speed: 1000, full duplex 2Speed: 1000, full duplex 3Speed: 1000, full duplex 4Speed: 1000, full duplex 5Speed: 1000, full duplex
Unknown command '12345' - try 'help' => Speed: 1000, full duplex
Signed-off-by: Ed Swarthout Ed.Swarthout@freescale.com
Since the Speed message is useful, I don't particularly like this fix.
drivers/net/tsec.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index d8b6619..23e4622 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -846,10 +846,10 @@ static void adjust_link(struct eth_device *dev) printf("%s: Speed was bad\n", dev->name); break; }
+#ifndef CONFIG_NETCONSOLE printf("Speed: %d, %s duplex\n", priv->speed, (priv->duplexity) ? "full" : "half");
+#endif
What if you changed the conditional to "strcmp(getenv("stdout"), nc)" so the message still gets printed when not using a netconsole?
On a similar note, doesn't it seem a bit crazy that an ethernet interface it brought up and down every time a packet is sent? I would have thought that the interface needed to be constantly enabled to support receiving incoming packets. If so, wouldn't the proper fix be to not bring the interface up/down during netconsole use?
Best, Peter

CONFIG_NETCONSOLE on the p2020ds is functional with the tsec driver. But the printf in adjust_link() which is called by startup_tsec() called by tsec_init() in tsec.c is making it impossible to use.
For example typing 12345 on the netconsole causes the message to be printed for every character:
=> Speed: 1000, full duplex 1Speed: 1000, full duplex 2Speed: 1000, full duplex 3Speed: 1000, full duplex 4Speed: 1000, full duplex 5Speed: 1000, full duplex
Signed-off-by: Ed Swarthout Ed.Swarthout@freescale.com ---
Based on a suggestion from Peter Tyser, check env and only disable if currently using netconsole.
drivers/net/tsec.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index d8b6619..42083de 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -847,8 +847,10 @@ static void adjust_link(struct eth_device *dev) break; }
- printf("Speed: %d, %s duplex\n", priv->speed, - (priv->duplexity) ? "full" : "half"); + if (strcmp(getenv("stdin"), "nc") != 0) { + printf("Speed: %d, %s duplex\n", priv->speed, + (priv->duplexity) ? "full" : "half"); + }
} else { printf("%s: No link.\n", dev->name);

Hi Ed,
Ed Swarthout wrote:
CONFIG_NETCONSOLE on the p2020ds is functional with the tsec driver. But the printf in adjust_link() which is called by startup_tsec() called by tsec_init() in tsec.c is making it impossible to use.
For example typing 12345 on the netconsole causes the message to be printed for every character:
=> Speed: 1000, full duplex 1Speed: 1000, full duplex 2Speed: 1000, full duplex 3Speed: 1000, full duplex 4Speed: 1000, full duplex 5Speed: 1000, full duplex
Signed-off-by: Ed Swarthout Ed.Swarthout@freescale.com
This no longer applies because of other changes to the TSEC driver (in the net tree, anyway). Please rebase when you get a chance and I'll apply it.
regards, Ben

CONFIG_NETCONSOLE on the p2020ds is functional with the tsec driver. But the printf in adjust_link() which is called by startup_tsec() called by tsec_init() in tsec.c is making it impossible to use.
For example typing 12345 on the netconsole causes the message to be printed for every character:
=> Speed: 1000, full duplex 1Speed: 1000, full duplex 2Speed: 1000, full duplex 3Speed: 1000, full duplex 4Speed: 1000, full duplex 5Speed: 1000, full duplex
Signed-off-by: Ed Swarthout Ed.Swarthout@freescale.com --- drivers/net/tsec.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index fd49eff..392072f 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -941,10 +941,12 @@ static void adjust_link(struct eth_device *dev) break; }
- printf("Speed: %d, %s duplex%s\n", priv->speed, - (priv->duplexity) ? "full" : "half", - (priv->flags & TSEC_FIBER) ? ", fiber mode" : ""); - + if (strcmp(getenv("stdin"), "nc") != 0) { + printf("Speed: %d, %s duplex%s\n", priv->speed, + (priv->duplexity) ? "full" : "half", + (priv->flags & TSEC_FIBER) ? + ", fiber mode" : ""); + } } else { printf("%s: No link.\n", dev->name); }

Dear Ed Swarthout,
In message 1265019802-32030-1-git-send-email-Ed.Swarthout@freescale.com you wrote:
CONFIG_NETCONSOLE on the p2020ds is functional with the tsec driver. But the printf in adjust_link() which is called by startup_tsec() called by tsec_init() in tsec.c is making it impossible to use.
For example typing 12345 on the netconsole causes the message to be printed for every character:
=> Speed: 1000, full duplex 1Speed: 1000, full duplex 2Speed: 1000, full duplex 3Speed: 1000, full duplex 4Speed: 1000, full duplex 5Speed: 1000, full duplex
Signed-off-by: Ed Swarthout Ed.Swarthout@freescale.com
drivers/net/tsec.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index fd49eff..392072f 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -941,10 +941,12 @@ static void adjust_link(struct eth_device *dev) break; }
printf("Speed: %d, %s duplex%s\n", priv->speed,
(priv->duplexity) ? "full" : "half",
(priv->flags & TSEC_FIBER) ? ", fiber mode" : "");
if (strcmp(getenv("stdin"), "nc") != 0) {
printf("Speed: %d, %s duplex%s\n", priv->speed,
(priv->duplexity) ? "full" : "half",
(priv->flags & TSEC_FIBER) ?
", fiber mode" : "");
}
I think this status of the console connection should be latched into a variable (in tsec_init() ?) so we can avoid the (pretty expensive) scanning of the environment for every transmitted character.
Best regards,
Wolfgang Denk
participants (4)
-
Ben Warren
-
Ed Swarthout
-
Peter Tyser
-
Wolfgang Denk