From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Scholz Date: Tue, 05 Nov 2002 16:30:01 +0100 Subject: [U-Boot-Users] [Fwd: [PPCBoot-users] DHCP updating environment???] References: <20021105140356.020B01015F@denx.denx.de> <3DC7DE95.24062894@imc-berlin.de> Message-ID: <3DC7E3F9.749ECA1D@imc-berlin.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Steven Scholz wrote: > > Wolfgang Denk wrote: > > > > In message <3DC7C8C5.6983A78@imc-berlin.de> you wrote: > > > > > > > Seems you think right. Ummmm... why are you asking? Any problems with > > > > it? > > > Well, I am a bit anoyed because everytime I do a dhcp to get the settings for a > > > tftp I have to wait until pImage gets loaded... > > > > > > (Well not realy anoyed! Just curious why it is the way it is.) > > > > > > I want to do something like "dhcp; tftp 100000 fpga.rbf". > > > > I don't get you. Do you mean that setting "autoload" to "no" does NOT > > work with DHCP? From the code I think it should work. > > Ok. Example (from real life): > > After power on I have > > loadaddr=0x100000 > serial#=69383 > ethaddr=00:A0:33:01:07:0F > > A bootp results in: > => bootp > FEC ETHERNET configured > BOOTP broadcast 1 > DHCP client bound to address 10.0.9.161 > ARP broadcast 1 > TFTP from server 10.0.2.9; our IP address is 10.0.9.161 > Filename 'pImage.DAB4K2'. > Load address: 0x100000 > Loading: ################################################################# > ################################################################# > ######## > done > Bytes transferred = 702439 (ab7e7 hex) > => printenv > loadaddr=0x100000 > serial#=69383 > ethaddr=00:A0:33:01:07:0F > bootfile=pImage.DAB4K2 > filesize=ab7e7 > netmask=255.255.0.0 > hostname=dab4k2_69383 > rootpath=/opt/ELDK/ppc_8xx > ipaddr=10.0.9.161 > serverip=10.0.2.9 > > Fair enough! But let's do it again... > > => setenv autoload n > => bootp > FEC ETHERNET configured > BOOTP broadcast 1 > DHCP client bound to address 10.0.9.161 > => printenv > loadaddr=0x100000 > serial#=69383 > ethaddr=00:A0:33:01:07:0F > autoload=n > bootfile=pImage.DAB4K2 > > You see!? > > Only "bootfile" gets set. So a following tftp brings > > => tftp 100000 pImage.DAB4K2 > FEC ETHERNET configured > *** ERROR: `serverip' not set > > So I think BootpCopyNetParams() should get called regardless of autoload! Sorry!!! BootpCopyNetParams() gets called regardless of autoload! But void BootpCopyNetParams(Bootp_t *bp) { NetCopyIP(&NetOurIP, &bp->bp_yiaddr); NetCopyIP(&NetServerIP, &bp->bp_siaddr); memcpy (NetServerEther, ((Ethernet_t *)NetRxPkt)->et_src, 6); copy_filename (BootFile, bp->bp_file, sizeof(BootFile)); debug ("Bootfile: %s\n", BootFile); /* Propagate to environment: * don't delete exising entry when BOOTP / DHCP reply does * not contain a new value */ if (*BootFile) { setenv ("bootfile", BootFile); } } So setenv is called only for bootfile. So should we call setenv for OurIP, ServerIp etc or should tftp check NetOurIP or bp->bp_yiaddr!? Steven