summaryrefslogtreecommitdiff
path: root/common/cmd_pxe.c
diff options
context:
space:
mode:
authorJason Hobbs <jason.hobbs@calxeda.com>2011-11-07 03:07:15 +0000
committerWolfgang Denk <wd@denx.de>2011-12-06 21:21:42 +0100
commit6f40f2749ac34da91c7054ee6d94808ee1db4cb1 (patch)
tree800f9364c3e35b78fe22b471460f456ab06cc5cb /common/cmd_pxe.c
parentd88af4da9a8d694e2cfd98a2deefedd472817183 (diff)
pxe: make the first label the implicit default
If no default label is specified, but a situation arises where the default label should be used, treat the first label specified as the default label. Signed-off-by: Jason Hobbs <jason.hobbs@calxeda.com> Cc: Ricardo Salveti de Araujo <ricardo.salveti@linaro.org> Cc: Wolfgang Denk <wd@denx.de>
Diffstat (limited to 'common/cmd_pxe.c')
-rw-r--r--common/cmd_pxe.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index 3efd7008e95..9426f5b05bc 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -1273,10 +1273,21 @@ static void handle_pxe_menu(struct pxe_menu *cfg)
menu_destroy(m);
- if (err < 1)
- return;
+ /*
+ * err == 1 means we got a choice back from menu_get_choice.
+ *
+ * err == -ENOENT if the menu was setup to select the default but no
+ * default was set. in that case, we should continue trying to boot
+ * labels that haven't been attempted yet.
+ *
+ * otherwise, the user interrupted or there was some other error and
+ * we give up.
+ */
- label_boot(choice);
+ if (err == 1)
+ label_boot(choice);
+ else if (err != -ENOENT)
+ return;
boot_unattempted_labels(cfg);
}