[U-Boot] [PATCH v5 1/1] NET: Improve TFTP booting performance when CONFIG_USB_KEYBOARD

Jim Lin jilin at nvidia.com
Thu Jul 4 06:01:50 CEST 2013


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 <jilin at 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



More information about the U-Boot mailing list