
TFTP booting is slow when a USB keyboard is installed and CONFIG_USB_KEYBOARD is defined. The fix is to change Ctrl-C polling to every second when NET transfer is running.
Signed-off-by: Jim Lin jilin@nvidia.com --- 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
net/net.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/net/net.c b/net/net.c index df94789..06b41e0 100644 --- a/net/net.c +++ b/net/net.c @@ -322,6 +322,11 @@ int NetLoop(enum proto_t protocol) { bd_t *bd = gd->bd; int ret = -1; +#ifdef CONFIG_USB_KEYBOARD + unsigned long kbd_ctrlc_tms = 0; + unsigned long ctrlc_t; + int ctrlc_result; +#endif
NetRestarted = 0; NetDevExists = 0; @@ -472,7 +477,22 @@ restart: /* * Abort if ctrl-c was pressed. */ +#ifdef CONFIG_USB_KEYBOARD + /* + * Reduce ctrl-c checking to 1 second once + * to improve TFTP boot performance. + */ + ctrlc_t = get_timer(kbd_ctrlc_tms); + if (ctrlc_t > CONFIG_SYS_HZ) { + ctrlc_result = ctrlc(); + kbd_ctrlc_tms = get_timer(0); + } else { + ctrlc_result = 0; + } + if (ctrlc_result) { +#else if (ctrlc()) { +#endif /* cancel any ARP that may not have completed */ NetArpWaitPacketIP = 0;