--- config.c | 4 ++++ elilo.h | 2 ++ fs/netfs.c | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) --- a/config.c +++ b/config.c @@ -119,6 +119,7 @@ typedef struct { UINTN timeout; UINTN verbose; UINTN edd30_no_force; /* don't force EDD30 if not set */ + UINTN blocksize; } global_config_t; /* @@ -143,6 +144,7 @@ static config_option_t global_common_opt {OPT_STR, OPT_GLOBAL, L"default", NULL, NULL, global_config.default_image_name}, {OPT_NUM, OPT_GLOBAL, L"timeout", NULL, NULL, &global_config.timeout}, {OPT_NUM, OPT_GLOBAL, L"delay", NULL, NULL, &global_config.delay}, +{OPT_NUM, OPT_GLOBAL, L"block-size", NULL, NULL, &global_config.blocksize}, {OPT_BOOL, OPT_GLOBAL, L"debug", NULL, NULL, &global_config.debug}, {OPT_BOOL, OPT_GLOBAL, L"prompt", NULL, NULL, &global_config.prompt}, {OPT_NUM, OPT_GLOBAL, L"verbose", NULL, check_verbosity, &global_config.verbose}, @@ -827,6 +829,8 @@ update_elilo_opt(VOID) if (global_config.debug) elilo_opt.debug = 1; if (global_config.prompt) elilo_opt.prompt = 1; + if (global_config.blocksize) + elilo_opt.blocksize = global_config.blocksize; /* * update only if not set on command line --- a/elilo.h +++ b/elilo.h @@ -105,6 +105,8 @@ typedef struct { UINTN prompt; /* enter interactive mode */ UINTN parse_only; /* only parses the config file */ UINTN timeout; /* timeout before leaving interactive mode*/ + UINTN blocksize; /* user-specified block-size for I/O */ + /* (currently only used for TFTP!) */ image_opt_t img_opt; /* architecture independent per image options*/ --- a/fs/netfs.c +++ b/fs/netfs.c @@ -517,7 +517,8 @@ netfs_open(netfs_interface_t *this, CHAR netfs_fd_t *f; EFI_STATUS status; CHAR8 ascii_name[FILENAME_MAXLEN]; - UINTN blocksize = NETFS_DEFAULT_BLOCKSIZE; + UINTN blocksize = (elilo_opt.blocksize > 0) ? + elilo_opt.blocksize : NETFS_DEFAULT_BLOCKSIZE; UINTN prev_netbufsize, retries = 0; BOOLEAN server_provided_filesize = FALSE;