TFTP booting is slow when a USB keyboard is installed and CONFIG_USB_KEYBOARD is defined. This fix is to change Ctrl-C polling to every second when NET transfer is running.
Signed-off-by: Jim Lin <ji...@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 Changes in v5: 1. Change variable name to ctrlc_t_start. 2. Use two calls of get_timer(0) to get time gap. net/net.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/net/net.c b/net/net.c index df94789..ec88b02 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 ctrlc_t_start; + unsigned long ctrlc_t; + int ctrlc_result; +#endif NetRestarted = 0; NetDevExists = 0; @@ -472,7 +477,24 @@ restart: /* * Abort if ctrl-c was pressed. */ +#ifdef CONFIG_USB_KEYBOARD + /* + * Reduce ctrl-c checking to 1 second once + * to improve TFTP boot performance. + */ + if (ctrlc_t_start > get_timer(0)) + ctrlc_t_start = get_timer(0); + ctrlc_t = get_timer(0) - ctrlc_t_start; + if (ctrlc_t > CONFIG_SYS_HZ) { + ctrlc_result = ctrlc(); + ctrlc_t_start = get_timer(0); + } else { + ctrlc_result = 0; + } + if (ctrlc_result) { +#else if (ctrlc()) { +#endif /* cancel any ARP that may not have completed */ NetArpWaitPacketIP = 0; -- 1.7.7 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot