Message ID | 1526578856-30967-2-git-send-email-thuth@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | Support network booting with pxelinux.cfg files | expand |
On Thu, 17 May 2018 19:40:48 +0200 Thomas Huth <thuth@redhat.com> wrote: > The blocksize is hard-coded to 1428 bytes in obp-tftp.fs, so instead > of hardcoding this in the Forth code, we could also move this into > netload.c directly instead. A similar condition exists with the > huge-tftp-load parameter. While this non-standard variable could still > be changed in the obp-tftp package, it does not make much sense to set > it to zero - you only lose the possibility to do huge TFTP loads with > index wrap-around in that case. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > lib/libnet/libnet.code | 4 +--- > lib/libnet/netapps.h | 3 +-- > lib/libnet/netload.c | 11 ++++------- > slof/fs/packages/obp-tftp.fs | 3 --- > 4 files changed, 6 insertions(+), 15 deletions(-) > > diff --git a/lib/libnet/libnet.code b/lib/libnet/libnet.code > index 2746782..419419d 100644 > --- a/lib/libnet/libnet.code > +++ b/lib/libnet/libnet.code > @@ -4,11 +4,9 @@ > PRIM(NET_X2d_LOAD) > int alen = TOS.n; POP; > char *arg = TOS.a; POP; > - int blocksize = TOS.n; POP; > - int hugeload = TOS.n; POP; > long maxlen = TOS.n; POP; > void *loadaddr = TOS.a; > - TOS.n = netload(loadaddr, maxlen, hugeload, blocksize, arg, alen); > + TOS.n = netload(loadaddr, maxlen, arg, alen); > MIRP > > PRIM(NET_X2d_PING) > diff --git a/lib/libnet/netapps.h b/lib/libnet/netapps.h > index 0e637e1..6e00466 100644 > --- a/lib/libnet/netapps.h > +++ b/lib/libnet/netapps.h > @@ -18,8 +18,7 @@ > > struct filename_ip; > > -extern int netload(char *buffer, int len, int huge_load, int block_size, > - char *args_fs, int alen); > +extern int netload(char *buffer, int len, char *args_fs, int alen); > extern int ping(char *args_fs, int alen); > extern int dhcp(char *ret_buffer, struct filename_ip *fn_ip, > unsigned int retries, int flags); > diff --git a/lib/libnet/netload.c b/lib/libnet/netload.c > index 5c37fe2..6b9bc57 100644 > --- a/lib/libnet/netload.c > +++ b/lib/libnet/netload.c > @@ -405,13 +405,12 @@ static void seed_rng(uint8_t mac[]) > } > > static int tftp_load(filename_ip_t *fnip, unsigned char *buffer, int len, > - unsigned int retries, int32_t mode, > - int32_t blksize, int ip_vers) > + unsigned int retries, int ip_vers) > { > tftp_err_t tftp_err; > int rc; > > - rc = tftp(fnip, buffer, len, retries, &tftp_err, mode, blksize, ip_vers); > + rc = tftp(fnip, buffer, len, retries, &tftp_err, 1, 1428, ip_vers); This is the only call site for tftp(). Why not going further and ditch these parameters as well ? This would simplify the tftp() code. Anyway, this should be done in a separate patch, so: Reviewed-by: Greg Kurz <groug@kaod.org> > > if (rc > 0) { > printf(" TFTP: Received %s (%d KBytes)\n", fnip->filename, > @@ -510,8 +509,7 @@ static void encode_response(char *pkt_buffer, size_t size, int ip_init) > } > } > > -int netload(char *buffer, int len, int huge_load, int block_size, > - char *args_fs, int alen) > +int netload(char *buffer, int len, char *args_fs, int alen) > { > int rc; > filename_ip_t fn_ip; > @@ -755,8 +753,7 @@ int netload(char *buffer, int len, int huge_load, int block_size, > > /* Do the TFTP load and print error message if necessary */ > rc = tftp_load(&fn_ip, (unsigned char *)buffer, len, > - obp_tftp_args.tftp_retries, huge_load, > - block_size, ip_version); > + obp_tftp_args.tftp_retries, ip_version); > > if (obp_tftp_args.ip_init == IP_INIT_DHCP) > dhcp_send_release(fn_ip.fd); > diff --git a/slof/fs/packages/obp-tftp.fs b/slof/fs/packages/obp-tftp.fs > index 17fb980..19c11e1 100644 > --- a/slof/fs/packages/obp-tftp.fs > +++ b/slof/fs/packages/obp-tftp.fs > @@ -12,8 +12,6 @@ > > s" obp-tftp" device-name > > -VARIABLE huge-tftp-load 1 huge-tftp-load ! > - > : open ( -- okay? ) > true > ; > @@ -28,7 +26,6 @@ VARIABLE huge-tftp-load 1 huge-tftp-load ! > > 60000000 ( addr maxlen ) > > - huge-tftp-load @ d# 1428 ( addr maxlen hugetftp blocksize ) > \ Add OBP-TFTP Bootstring argument, e.g. "10.128.0.1,bootrom.bin,10.128.40.1" > my-args > net-load dup 0< IF drop 0 THEN
On 18.05.2018 11:41, Greg Kurz wrote: > On Thu, 17 May 2018 19:40:48 +0200 > Thomas Huth <thuth@redhat.com> wrote: > >> The blocksize is hard-coded to 1428 bytes in obp-tftp.fs, so instead >> of hardcoding this in the Forth code, we could also move this into >> netload.c directly instead. A similar condition exists with the >> huge-tftp-load parameter. While this non-standard variable could still >> be changed in the obp-tftp package, it does not make much sense to set >> it to zero - you only lose the possibility to do huge TFTP loads with >> index wrap-around in that case. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> lib/libnet/libnet.code | 4 +--- >> lib/libnet/netapps.h | 3 +-- >> lib/libnet/netload.c | 11 ++++------- >> slof/fs/packages/obp-tftp.fs | 3 --- >> 4 files changed, 6 insertions(+), 15 deletions(-) >> >> diff --git a/lib/libnet/libnet.code b/lib/libnet/libnet.code >> index 2746782..419419d 100644 >> --- a/lib/libnet/libnet.code >> +++ b/lib/libnet/libnet.code >> @@ -4,11 +4,9 @@ >> PRIM(NET_X2d_LOAD) >> int alen = TOS.n; POP; >> char *arg = TOS.a; POP; >> - int blocksize = TOS.n; POP; >> - int hugeload = TOS.n; POP; >> long maxlen = TOS.n; POP; >> void *loadaddr = TOS.a; >> - TOS.n = netload(loadaddr, maxlen, hugeload, blocksize, arg, alen); >> + TOS.n = netload(loadaddr, maxlen, arg, alen); >> MIRP >> >> PRIM(NET_X2d_PING) >> diff --git a/lib/libnet/netapps.h b/lib/libnet/netapps.h >> index 0e637e1..6e00466 100644 >> --- a/lib/libnet/netapps.h >> +++ b/lib/libnet/netapps.h >> @@ -18,8 +18,7 @@ >> >> struct filename_ip; >> >> -extern int netload(char *buffer, int len, int huge_load, int block_size, >> - char *args_fs, int alen); >> +extern int netload(char *buffer, int len, char *args_fs, int alen); >> extern int ping(char *args_fs, int alen); >> extern int dhcp(char *ret_buffer, struct filename_ip *fn_ip, >> unsigned int retries, int flags); >> diff --git a/lib/libnet/netload.c b/lib/libnet/netload.c >> index 5c37fe2..6b9bc57 100644 >> --- a/lib/libnet/netload.c >> +++ b/lib/libnet/netload.c >> @@ -405,13 +405,12 @@ static void seed_rng(uint8_t mac[]) >> } >> >> static int tftp_load(filename_ip_t *fnip, unsigned char *buffer, int len, >> - unsigned int retries, int32_t mode, >> - int32_t blksize, int ip_vers) >> + unsigned int retries, int ip_vers) >> { >> tftp_err_t tftp_err; >> int rc; >> >> - rc = tftp(fnip, buffer, len, retries, &tftp_err, mode, blksize, ip_vers); >> + rc = tftp(fnip, buffer, len, retries, &tftp_err, 1, 1428, ip_vers); > > This is the only call site for tftp(). Why not going further and ditch these > parameters as well ? This would simplify the tftp() code. True, I can do this when respinning the series. Thomas
diff --git a/lib/libnet/libnet.code b/lib/libnet/libnet.code index 2746782..419419d 100644 --- a/lib/libnet/libnet.code +++ b/lib/libnet/libnet.code @@ -4,11 +4,9 @@ PRIM(NET_X2d_LOAD) int alen = TOS.n; POP; char *arg = TOS.a; POP; - int blocksize = TOS.n; POP; - int hugeload = TOS.n; POP; long maxlen = TOS.n; POP; void *loadaddr = TOS.a; - TOS.n = netload(loadaddr, maxlen, hugeload, blocksize, arg, alen); + TOS.n = netload(loadaddr, maxlen, arg, alen); MIRP PRIM(NET_X2d_PING) diff --git a/lib/libnet/netapps.h b/lib/libnet/netapps.h index 0e637e1..6e00466 100644 --- a/lib/libnet/netapps.h +++ b/lib/libnet/netapps.h @@ -18,8 +18,7 @@ struct filename_ip; -extern int netload(char *buffer, int len, int huge_load, int block_size, - char *args_fs, int alen); +extern int netload(char *buffer, int len, char *args_fs, int alen); extern int ping(char *args_fs, int alen); extern int dhcp(char *ret_buffer, struct filename_ip *fn_ip, unsigned int retries, int flags); diff --git a/lib/libnet/netload.c b/lib/libnet/netload.c index 5c37fe2..6b9bc57 100644 --- a/lib/libnet/netload.c +++ b/lib/libnet/netload.c @@ -405,13 +405,12 @@ static void seed_rng(uint8_t mac[]) } static int tftp_load(filename_ip_t *fnip, unsigned char *buffer, int len, - unsigned int retries, int32_t mode, - int32_t blksize, int ip_vers) + unsigned int retries, int ip_vers) { tftp_err_t tftp_err; int rc; - rc = tftp(fnip, buffer, len, retries, &tftp_err, mode, blksize, ip_vers); + rc = tftp(fnip, buffer, len, retries, &tftp_err, 1, 1428, ip_vers); if (rc > 0) { printf(" TFTP: Received %s (%d KBytes)\n", fnip->filename, @@ -510,8 +509,7 @@ static void encode_response(char *pkt_buffer, size_t size, int ip_init) } } -int netload(char *buffer, int len, int huge_load, int block_size, - char *args_fs, int alen) +int netload(char *buffer, int len, char *args_fs, int alen) { int rc; filename_ip_t fn_ip; @@ -755,8 +753,7 @@ int netload(char *buffer, int len, int huge_load, int block_size, /* Do the TFTP load and print error message if necessary */ rc = tftp_load(&fn_ip, (unsigned char *)buffer, len, - obp_tftp_args.tftp_retries, huge_load, - block_size, ip_version); + obp_tftp_args.tftp_retries, ip_version); if (obp_tftp_args.ip_init == IP_INIT_DHCP) dhcp_send_release(fn_ip.fd); diff --git a/slof/fs/packages/obp-tftp.fs b/slof/fs/packages/obp-tftp.fs index 17fb980..19c11e1 100644 --- a/slof/fs/packages/obp-tftp.fs +++ b/slof/fs/packages/obp-tftp.fs @@ -12,8 +12,6 @@ s" obp-tftp" device-name -VARIABLE huge-tftp-load 1 huge-tftp-load ! - : open ( -- okay? ) true ; @@ -28,7 +26,6 @@ VARIABLE huge-tftp-load 1 huge-tftp-load ! 60000000 ( addr maxlen ) - huge-tftp-load @ d# 1428 ( addr maxlen hugetftp blocksize ) \ Add OBP-TFTP Bootstring argument, e.g. "10.128.0.1,bootrom.bin,10.128.40.1" my-args net-load dup 0< IF drop 0 THEN
The blocksize is hard-coded to 1428 bytes in obp-tftp.fs, so instead of hardcoding this in the Forth code, we could also move this into netload.c directly instead. A similar condition exists with the huge-tftp-load parameter. While this non-standard variable could still be changed in the obp-tftp package, it does not make much sense to set it to zero - you only lose the possibility to do huge TFTP loads with index wrap-around in that case. Signed-off-by: Thomas Huth <thuth@redhat.com> --- lib/libnet/libnet.code | 4 +--- lib/libnet/netapps.h | 3 +-- lib/libnet/netload.c | 11 ++++------- slof/fs/packages/obp-tftp.fs | 3 --- 4 files changed, 6 insertions(+), 15 deletions(-)