From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Scholz Date: Tue, 05 Nov 2002 16:44:20 +0100 Subject: [U-Boot-Users] [Fwd: [PPCBoot-users] DHCP updating environment???] References: <20021105140356.020B01015F@denx.denx.de> <3DC7DE95.24062894@imc-berlin.de> <3DC7E3F9.749ECA1D@imc-berlin.de> Message-ID: <3DC7E754.AAB01A23@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: > > 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!? I should realy read more before start writing! ;-) netbootp_update_env() is what I need! When I call netbootp_update_env() from within the DHCPHandler when autoload == n then I get what I need... => setenv autoload n => dhcp FEC ETHERNET configured BOOTP broadcast 0 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 netmask=255.255.0.0 hostname=dab4k2_69383 rootpath=/opt/ELDK/ppc_8xx ipaddr=10.0.9.161 serverip=10.0.2.9 What do you think? Steven