* [U-Boot] [PATCH 0/3] Reduce code size of libnet
@ 2011-10-27 0:18 Simon Glass
2011-10-27 0:18 ` [U-Boot] [PATCH 1/3] net: Hide more code behind CONFIG_CMD_TFTPPUT Simon Glass
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Simon Glass @ 2011-10-27 0:18 UTC (permalink / raw)
To: u-boot
This patch series should change no functionality, but just reduce code size
slightly to what it was before the tftpput series.
Each patch is independent and each can be accepted or rejected as required.
Overall the effect (on ARM) is to reduce the code size to about 5 bytes lower
than it was before tftp when in. On PowerPC the number seems to be a little
more (39 bytes less on the IAD210 board).
Since this changes core net code, it needs to be examined carefully.
Simon Glass (3):
net: Hide more code behind CONFIG_CMD_TFTPPUT
net: Change for loop to memcpy()
net: Be less picky about decoding the netretry env var
net/net.c | 22 +++++++++++++---------
net/tftp.c | 6 ++++--
2 files changed, 17 insertions(+), 11 deletions(-)
--
1.7.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread* [U-Boot] [PATCH 1/3] net: Hide more code behind CONFIG_CMD_TFTPPUT 2011-10-27 0:18 [U-Boot] [PATCH 0/3] Reduce code size of libnet Simon Glass @ 2011-10-27 0:18 ` Simon Glass 2011-10-27 0:18 ` [U-Boot] [PATCH 2/3] net: Change for loop to memcpy() Simon Glass 2011-10-27 0:18 ` [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var Simon Glass 2 siblings, 0 replies; 9+ messages in thread From: Simon Glass @ 2011-10-27 0:18 UTC (permalink / raw) To: u-boot This commit reduces code size a little by making the ICMP handler only available to tftpput. This is reasonable since it is the only user at present (ping just uses the normal handler). Signed-off-by: Simon Glass <sjg@chromium.org> --- net/net.c | 8 ++++++++ net/tftp.c | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/net/net.c b/net/net.c index 84f28bf..11f41ed 100644 --- a/net/net.c +++ b/net/net.c @@ -215,7 +215,9 @@ volatile uchar *NetRxPackets[PKTBUFSRX]; /* Current RX packet handler */ static rxhand_f *packetHandler; +#ifdef CONFIG_CMD_TFTPPUT static rxhand_icmp_f *packet_icmp_handler; /* Current ICMP rx handler */ +#endif /* Current timeout handler */ static thand_f *timeHandler; /* Time base value */ @@ -576,9 +578,11 @@ restart: } done: +#ifdef CONFIG_CMD_TFTPPUT /* Clear out the handlers */ NetSetHandler(NULL); net_set_icmp_handler(NULL); +#endif return ret; } @@ -653,10 +657,12 @@ NetSetHandler(rxhand_f *f) packetHandler = f; } +#ifdef CONFIG_CMD_TFTPPUT void net_set_icmp_handler(rxhand_icmp_f *f) { packet_icmp_handler = f; } +#endif void NetSetTimeout(ulong iv, thand_f *f) @@ -1397,10 +1403,12 @@ static void receive_icmp(IP_t *ip, int len, IPaddr_t src_ip, Ethernet_t *et) break; #endif default: +#ifdef CONFIG_CMD_TFTPPUT if (packet_icmp_handler) packet_icmp_handler(icmph->type, icmph->code, ntohs(ip->udp_dst), src_ip, ntohs(ip->udp_src), icmph->un.data, ntohs(ip->udp_len)); +#endif break; } } diff --git a/net/tftp.c b/net/tftp.c index 961fdd1..e34f202 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -421,7 +421,7 @@ TftpSend(void) TftpOurPort, len); } - +#ifdef CONFIG_CMD_TFTPPUT static void icmp_handler(unsigned type, unsigned code, unsigned dest, IPaddr_t sip, unsigned src, uchar *pkt, unsigned len) { @@ -430,6 +430,7 @@ static void icmp_handler(unsigned type, unsigned code, unsigned dest, restart("TFTP server died"); } } +#endif static void TftpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, @@ -771,8 +772,9 @@ void TftpStart(enum proto_t protocol) NetSetTimeout(TftpTimeoutMSecs, TftpTimeout); NetSetHandler(TftpHandler); +#ifdef CONFIG_CMD_TFTPPUT net_set_icmp_handler(icmp_handler); - +#endif TftpRemotePort = WELL_KNOWN_PORT; TftpTimeoutCount = 0; /* Use a pseudo-random port unless a specific port is set */ -- 1.7.3.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH 2/3] net: Change for loop to memcpy() 2011-10-27 0:18 [U-Boot] [PATCH 0/3] Reduce code size of libnet Simon Glass 2011-10-27 0:18 ` [U-Boot] [PATCH 1/3] net: Hide more code behind CONFIG_CMD_TFTPPUT Simon Glass @ 2011-10-27 0:18 ` Simon Glass 2011-10-27 6:02 ` Mike Frysinger 2011-10-27 0:18 ` [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var Simon Glass 2 siblings, 1 reply; 9+ messages in thread From: Simon Glass @ 2011-10-27 0:18 UTC (permalink / raw) To: u-boot This is intended purely as a code size reduction. Signed-off-by: Simon Glass <sjg@chromium.org> --- net/net.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff --git a/net/net.c b/net/net.c index 11f41ed..cd34bf9 100644 --- a/net/net.c +++ b/net/net.c @@ -246,7 +246,6 @@ int NetArpWaitTry; void ArpRequest(void) { - int i; volatile uchar *pkt; ARP_t *arp; @@ -268,11 +267,8 @@ void ArpRequest(void) memcpy(&arp->ar_data[0], NetOurEther, 6); /* source IP addr */ NetWriteIP((uchar *) &arp->ar_data[6], NetOurIP); - for (i = 10; i < 16; ++i) { - /* dest ET addr = 0 */ - arp->ar_data[i] = 0; - } - + /* dest ET addr = 0 */ + memset(&arp->ar_data[10], '\0', 6); if ((NetArpWaitPacketIP & NetOurSubnetMask) != (NetOurIP & NetOurSubnetMask)) { if (NetOurGatewayIP == 0) { -- 1.7.3.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH 2/3] net: Change for loop to memcpy() 2011-10-27 0:18 ` [U-Boot] [PATCH 2/3] net: Change for loop to memcpy() Simon Glass @ 2011-10-27 6:02 ` Mike Frysinger 0 siblings, 0 replies; 9+ messages in thread From: Mike Frysinger @ 2011-10-27 6:02 UTC (permalink / raw) To: u-boot On Thu, Oct 27, 2011 at 02:18, Simon Glass wrote: > + ? ? ? memset(&arp->ar_data[10], '\0', 6); summary says memcpy. code says memset. -mike ^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var 2011-10-27 0:18 [U-Boot] [PATCH 0/3] Reduce code size of libnet Simon Glass 2011-10-27 0:18 ` [U-Boot] [PATCH 1/3] net: Hide more code behind CONFIG_CMD_TFTPPUT Simon Glass 2011-10-27 0:18 ` [U-Boot] [PATCH 2/3] net: Change for loop to memcpy() Simon Glass @ 2011-10-27 0:18 ` Simon Glass 2011-10-27 6:00 ` Mike Frysinger 2 siblings, 1 reply; 9+ messages in thread From: Simon Glass @ 2011-10-27 0:18 UTC (permalink / raw) To: u-boot This is intended purely as a code size reduction. Signed-off-by: Simon Glass <sjg@chromium.org> --- net/net.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/net/net.c b/net/net.c index cd34bf9..3712e17 100644 --- a/net/net.c +++ b/net/net.c @@ -605,11 +605,11 @@ void NetStartAgain(void) nretry = getenv("netretry"); if (nretry) { - if (!strcmp(nretry, "yes")) + if (*nretry == 'y') retry_forever = 1; - else if (!strcmp(nretry, "no")) + else if (!*nretry == 'n') retrycnt = 0; - else if (!strcmp(nretry, "once")) + else if (*nretry == 'o') /* "once" */ retrycnt = 1; else retrycnt = simple_strtoul(nretry, NULL, 0); -- 1.7.3.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var 2011-10-27 0:18 ` [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var Simon Glass @ 2011-10-27 6:00 ` Mike Frysinger 2011-10-27 13:35 ` Simon Glass 0 siblings, 1 reply; 9+ messages in thread From: Mike Frysinger @ 2011-10-27 6:00 UTC (permalink / raw) To: u-boot On Thu, Oct 27, 2011 at 02:18, Simon Glass wrote: > --- a/net/net.c > +++ b/net/net.c > > - ? ? ? ? ? ? ? if (!strcmp(nretry, "yes")) > + ? ? ? ? ? ? ? if (*nretry == 'y') not sure about this as it makes it hard to add code in the future if we care about compatibility. if we support just "y", people will start using it. -mike ^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var 2011-10-27 6:00 ` Mike Frysinger @ 2011-10-27 13:35 ` Simon Glass 2011-10-27 13:40 ` Mike Frysinger 2011-10-27 21:02 ` Wolfgang Denk 0 siblings, 2 replies; 9+ messages in thread From: Simon Glass @ 2011-10-27 13:35 UTC (permalink / raw) To: u-boot Hi Mike, On Wed, Oct 26, 2011 at 11:00 PM, Mike Frysinger <vapier@gentoo.org> wrote: > On Thu, Oct 27, 2011 at 02:18, Simon Glass wrote: >> --- a/net/net.c >> +++ b/net/net.c >> >> - ? ? ? ? ? ? ? if (!strcmp(nretry, "yes")) >> + ? ? ? ? ? ? ? if (*nretry == 'y') > > not sure about this as it makes it hard to add code in the future if > we care about compatibility. ?if we support just "y", people will > start using it. > -mike > Yes, I'm not sure either. I have found a few env variables that use single letters (autoload, flashchecksum) and noticed that quite a few commands only decode as much of their subcommand as they need to be unique. I am happier with y and n than o! Regards, Simon ^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var 2011-10-27 13:35 ` Simon Glass @ 2011-10-27 13:40 ` Mike Frysinger 2011-10-27 21:02 ` Wolfgang Denk 1 sibling, 0 replies; 9+ messages in thread From: Mike Frysinger @ 2011-10-27 13:40 UTC (permalink / raw) To: u-boot On Thu, Oct 27, 2011 at 15:35, Simon Glass wrote: > On Wed, Oct 26, 2011 at 11:00 PM, Mike Frysinger wrote: >> On Thu, Oct 27, 2011 at 02:18, Simon Glass wrote: >>> --- a/net/net.c >>> +++ b/net/net.c >>> >>> - ? ? ? ? ? ? ? if (!strcmp(nretry, "yes")) >>> + ? ? ? ? ? ? ? if (*nretry == 'y') >> >> not sure about this as it makes it hard to add code in the future if >> we care about compatibility. ?if we support just "y", people will >> start using it. > > Yes, I'm not sure either. I have found a few env variables that use > single letters (autoload, flashchecksum) and noticed that quite a few > commands only decode as much of their subcommand as they need to be > unique. I am happier with y and n than o! right, u-boot is inconsistent the short command names are a bit unique in that we already say "if you don't use the full command name, that's your fault". after all, how much of the short name you need to use changes based on the commands enabled and the autocomplete define being enabled. if you enable "reginfo" and "reset", then you can't use "r" or "re". but if you only have "reset", then you can use "r" and "re" to reset. env vars are slightly different in that they're not terribly well documented. so people look at the source to see what is accepted and then do that. maybe the answer is to document the exact values and then when people screw up, we can point to that as a fallback. -mike ^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var 2011-10-27 13:35 ` Simon Glass 2011-10-27 13:40 ` Mike Frysinger @ 2011-10-27 21:02 ` Wolfgang Denk 1 sibling, 0 replies; 9+ messages in thread From: Wolfgang Denk @ 2011-10-27 21:02 UTC (permalink / raw) To: u-boot Dear Simon Glass, In message <CAPnjgZ1RDqAER6aWZ08o7pymW98o8-1y8pMM2p6NNv2XWn44LA@mail.gmail.com> you wrote: > > Yes, I'm not sure either. I have found a few env variables that use > single letters (autoload, flashchecksum) and noticed that quite a few > commands only decode as much of their subcommand as they need to be > unique. I am happier with y and n than o! The 'o' indeed kills this. I don't think this is a good idea. Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Operating-system software is the program that orchestrates all the basic functions of a computer. - The Wall Street Journal, Tuesday, September 15, 1987, page 40 ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-10-27 21:02 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-10-27 0:18 [U-Boot] [PATCH 0/3] Reduce code size of libnet Simon Glass 2011-10-27 0:18 ` [U-Boot] [PATCH 1/3] net: Hide more code behind CONFIG_CMD_TFTPPUT Simon Glass 2011-10-27 0:18 ` [U-Boot] [PATCH 2/3] net: Change for loop to memcpy() Simon Glass 2011-10-27 6:02 ` Mike Frysinger 2011-10-27 0:18 ` [U-Boot] [PATCH 3/3] net: Be less picky about decoding the netretry env var Simon Glass 2011-10-27 6:00 ` Mike Frysinger 2011-10-27 13:35 ` Simon Glass 2011-10-27 13:40 ` Mike Frysinger 2011-10-27 21:02 ` Wolfgang Denk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox