console: usb: kbd: To improve TFTP booting performance
PATCH RESEND v8 2/2 console: usb: kbd: To improve TFTP booting performance
TFTP booting is slow when a USB keyboard is installed and stdin has usbkbd added.
This fix is to change Ctrl-C polling for USB keyboard to every second when NET transfer is running.
---
Changes in v2:
1. Change configuration name from CONFIG_CTRLC_POLL_MS to CONFIG_CTRLC_POLL_S.
2. New code will be executed only when CONFIG_CTRLC_POLL_S is defined in configuration header file.
3. Add description in README.console.
Changes in v3:
1. Move changes to common/usb_kbd.c and doc/README.usb
2. Rename config setting to CONFIG_USBKB_TESTC_PERIOD.
3. Remove slow response on USB-keyboard input when TFTP boot is not running.
Changes in v4:
1. Remove changes in doc/README.usb, common/usb_kbd.c and CONFIG_USBKB_TESTC_PERIOD
2. Modify net/net.c
Changes in v5:
1. Change variable name to ctrlc_t_start.
2. Use two calls of get_timer(0) to get time gap.
Changes in v6:
1. In common/usb_kbd.c, check net_busy_flag to determine whether we poll USB keyboard status.
2. In include/usb.h, add external variable declaration net_busy_flag
Changes in v7:
1. In common/usb_kbd.c and include/usb.h, add #ifdef CONFIG_CMD_NET.
2. In common/usb_kbd.c, modify code to get correct time gap.
Changes in v8:
1. Add __maybe_unused for variable kbd_testc_tms.
common/usb_kbd.c | 13 +++++++++++++ include/usb.h | 2 +- 2 files changed, 14 insertions(+), 1 deletions(-)
common/usb_kbd.c +13 -0
@@ -121,6 +121,9 @@ struct usb_kbd_pdata {uint8_t flags; }; +/* The period of time between two calls of usb_kbd_testc(). */ +static unsigned long __maybe_unused kbd_testc_tms; +/* Generic keyboard event polling. */ void usb_kbd_generic_poll (void ) {
@@ -366,6 +369,16 @@ static int usb_kbd_testc(void)struct usb_device *usb_kbd_dev;struct usb_kbd_pdata *data; +#ifdef CONFIG_CMD_NET +/* +* If net_busy_flag is 1, NET transfer is running, +* then we check key-pressed every second (first check may be +* less than 1 second) to improve TFTP booting performance. +*/ +if (net_busy_flag && (get_timer (kbd_testc_tms) <CONFIG_SYS_HZ )) +return 0 ; + kbd_testc_tms =get_timer (0 ); +#endif dev =stdio_get_by_name (DEVNAME ); usb_kbd_dev = (struct usb_device *)dev->priv; data = usb_kbd_dev->privptr;
include/usb.h +1 -1
@@ -206,7 +206,7 @@ int usb_host_eth_scan(int mode);int drv_usb_kbd_init (void );int usb_kbd_deregister (void ); - +extern int __maybe_unused net_busy_flag;#endif /* routines */ int usb_init (void );/* initialize the USB Controller */
Signature · 1 line
1.7.7
PATCH RESEND v8 2/2 console: usb: kbd: To improve TFTP booting performance
Dear Jim Lin,
Quoted 73 lines
TFTP booting is slow when a USB keyboard is installed and stdin has usbkbd added.
This fix is to change Ctrl-C polling for USB keyboard to every second when NET transfer is running.Signed-off-by Jim Lin <[email protected]>---
Changes in v2:
1. Change configuration name fromCONFIG_CTRLC_POLL_MStoCONFIG_CTRLC_POLL_S. 2. New code will be executed only whenCONFIG_CTRLC_POLL_Sis defined in configuration header file.
3. Add description in README.console.
Changes in v3:
1. Move changes tocommon/usb_kbd.cand doc/README.usb
2. Rename config setting toCONFIG_USBKB_TESTC_PERIOD.
3. Remove slow response on USB-keyboard input when TFTP boot is not
running. Changes in v4:
1. Remove changes in doc/README.usb,common/usb_kbd.candCONFIG_USBKB_TESTC_PERIOD
2. Modifynet/net.c
Changes in v5:
1. Change variable name toctrlc_t_start.
2. Use two calls ofget_timer(0)to get time gap.
Changes in v6:
1. Incommon/usb_kbd.c, checknet_busy_flagto determine whether we poll USB keyboard status.
2. Ininclude/usb.h, add external variable declarationnet_busy_flag
Changes in v7:
1. Incommon/usb_kbd.candinclude/usb.h, add #ifdefCONFIG_CMD_NET.
2. Incommon/usb_kbd.c, modify code to get correct time gap.
Changes in v8:
1. Add__maybe_unusedfor variablekbd_testc_tms.common/usb_kbd.c | 13 +++++++++++++ include/usb.h | 2 +- 2 files changed, 14 insertions(+), 1 deletions(-)common/usb_kbd.c +13
-0@@ -121,6 +121,9 @@ struct usb_kbd_pdata {uint8_t flags; }; +/* The period of time between two calls of usb_kbd_testc(). */ +static unsigned long __maybe_unused kbd_testc_tms; +/* Generic keyboard event polling. */ void usb_kbd_generic_poll (void ) {@@ -366,6 +369,16 @@ static int usb_kbd_testc(void)struct usb_device *usb_kbd_dev;struct usb_kbd_pdata *data; +#ifdef CONFIG_CMD_NET +/* +* If net_busy_flag is 1, NET transfer is running, +* then we check key-pressed every second (first check may be +* less than 1 second) to improve TFTP booting performance. +*/ +if (net_busy_flag && (get_timer (kbd_testc_tms) <CONFIG_SYS_HZ )) +return 0 ; + kbd_testc_tms =get_timer (0 ); +#endif dev =stdio_get_by_name (DEVNAME ); usb_kbd_dev = (struct usb_device *)dev->priv; data = usb_kbd_dev->privptr;include/usb.h +0
-0
include/usb.h int usb_host_eth_scan(int mode); · line 209
Quoted 5 lines
include/usb.h +1
-1@@ -206,7 +206,7 @@ int usb_host_eth_scan(int mode);int drv_usb_kbd_init (void );int usb_kbd_deregister (void ); - +extern int __maybe_unused net_busy_flag;
I wonder what would happen if you declared it here as
static int __maybe_unused
Would it have some side-effects?
include/usb.h int usb_host_eth_scan(int mode); · line 212
Quoted 3 lines
include/usb.h +0
-0#endif /* routines */ int usb_init (void );/* initialize the USB Controller */
Othewise,
Best regards,
Marek Vasut
PATCH RESEND v8 2/2 console: usb: kbd: To improve TFTP booting performance
Quoted 9 lines · Marek Vasut
Dear Jim Lin,
Quoted 6 lines
TFTP booting is slow when a USB keyboard is installed and stdin has usbkbd added.
This fix is to change Ctrl-C polling for USB keyboard to every second when NET transfer is running.include/usb.h +0
-0
Quoted 7 lines
Quoted 1 line
+extern int
__maybe_unusednet_busy_flag;I wonder what would happen if you declared it here as
static int
__maybe_unusedWould it have some side-effects?
Then each file that includes this header will get a separate copy of the variable.
PATCH RESEND v8 2/2 console: usb: kbd: To improve TFTP booting performance
Dear Stephen Warren,
Quoted 14 lines · Marek Vasut
Quoted 13 lines
Dear Jim Lin,
include/usb.h int usb_host_eth_scan(int mode); · line 209
Quoted 8 lines
TFTP booting is slow when a USB keyboard is installed and stdin has usbkbd added.
This fix is to change Ctrl-C polling for USB keyboard to every second when NET transfer is running.include/usb.h +1
-0+extern int __maybe_unused net_busy_flag;I wonder what would happen if you declared it here as
Quoted 6 lines
Quoted 3 lines
static int
__maybe_unusedWould it have some side-effects?
Then each file that includes this header will get a separate copy of the variable.
Ah, you're right.
Best regards,
Marek Vasut