Merge branch 'master' of git://git.denx.de/u-boot-net
This commit is contained in:
commit
c645b181a9
6 changed files with 30 additions and 13 deletions
|
@ -154,8 +154,10 @@ static int
|
|||
netboot_common (proto_t proto, cmd_tbl_t *cmdtp, int argc, char *argv[])
|
||||
{
|
||||
char *s;
|
||||
char *end;
|
||||
int rcode = 0;
|
||||
int size;
|
||||
ulong addr;
|
||||
|
||||
/* pre-set load_addr */
|
||||
if ((s = getenv("loadaddr")) != NULL) {
|
||||
|
@ -166,15 +168,17 @@ netboot_common (proto_t proto, cmd_tbl_t *cmdtp, int argc, char *argv[])
|
|||
case 1:
|
||||
break;
|
||||
|
||||
case 2: /* only one arg - accept two forms:
|
||||
* just load address, or just boot file name.
|
||||
* The latter form must be written "filename" here.
|
||||
case 2: /*
|
||||
* Only one arg - accept two forms:
|
||||
* Just load address, or just boot file name. The latter
|
||||
* form must be written in a format which can not be
|
||||
* mis-interpreted as a valid number.
|
||||
*/
|
||||
if (argv[1][0] == '"') { /* just boot filename */
|
||||
copy_filename (BootFile, argv[1], sizeof(BootFile));
|
||||
} else { /* load address */
|
||||
load_addr = simple_strtoul(argv[1], NULL, 16);
|
||||
}
|
||||
addr = simple_strtoul(argv[1], &end, 16);
|
||||
if (end == (argv[1] + strlen(argv[1])))
|
||||
load_addr = addr;
|
||||
else
|
||||
copy_filename(BootFile, argv[1], sizeof(BootFile));
|
||||
break;
|
||||
|
||||
case 3: load_addr = simple_strtoul(argv[1], NULL, 16);
|
||||
|
|
|
@ -1196,6 +1196,9 @@ struct phy_info phy_info_M88E1121R = {
|
|||
{MIIM_88E1121_PHY_LED_CTRL, miim_read,
|
||||
&mii_88E1121_set_led},
|
||||
{MIIM_CONTROL, MIIM_CONTROL_INIT, &mii_cr_init},
|
||||
/* Disable IRQs and de-assert interrupt */
|
||||
{MIIM_88E1121_PHY_IRQ_EN, 0, NULL},
|
||||
{MIIM_88E1121_PHY_IRQ_STATUS, miim_read, NULL},
|
||||
{miim_end,}
|
||||
},
|
||||
(struct phy_cmd[]){ /* startup */
|
||||
|
|
|
@ -200,6 +200,12 @@ typedef struct {
|
|||
ushort udp_xsum; /* Checksum */
|
||||
} IP_t;
|
||||
|
||||
#define IP_OFFS 0x1fff /* ip offset *= 8 */
|
||||
#define IP_FLAGS 0xe000 /* first 3 bits */
|
||||
#define IP_FLAGS_RES 0x8000 /* reserved */
|
||||
#define IP_FLAGS_DFRAG 0x4000 /* don't fragments */
|
||||
#define IP_FLAGS_MFRAG 0x2000 /* more fragments */
|
||||
|
||||
#define IP_HDR_SIZE_NO_UDP (sizeof (IP_t) - 8)
|
||||
#define IP_HDR_SIZE (sizeof (IP_t))
|
||||
|
||||
|
|
|
@ -226,6 +226,10 @@
|
|||
#define MIIM_88E1121_PHY_LED_PAGE 3
|
||||
#define MIIM_88E1121_PHY_LED_DEF 0x0030
|
||||
|
||||
/* 88E1121 PHY IRQ Enable/Status Register */
|
||||
#define MIIM_88E1121_PHY_IRQ_EN 18
|
||||
#define MIIM_88E1121_PHY_IRQ_STATUS 19
|
||||
|
||||
#define MIIM_88E1121_PHY_PAGE 22
|
||||
|
||||
/* 88E1145 Extended PHY Specific Control Register */
|
||||
|
|
|
@ -738,7 +738,7 @@ int PingSend(void)
|
|||
ip->ip_tos = 0;
|
||||
ip->ip_len = htons(IP_HDR_SIZE_NO_UDP + 8);
|
||||
ip->ip_id = htons(NetIPID++);
|
||||
ip->ip_off = htons(0x4000); /* No fragmentation */
|
||||
ip->ip_off = htons(IP_FLAGS_DFRAG); /* Don't fragment */
|
||||
ip->ip_ttl = 255;
|
||||
ip->ip_p = 0x01; /* ICMP */
|
||||
ip->ip_sum = 0;
|
||||
|
@ -1402,7 +1402,8 @@ NetReceive(volatile uchar * inpkt, int len)
|
|||
if ((ip->ip_hl_v & 0xf0) != 0x40) {
|
||||
return;
|
||||
}
|
||||
if (ip->ip_off & htons(0x1fff)) { /* Can't deal w/ fragments */
|
||||
/* Can't deal with fragments */
|
||||
if (ip->ip_off & htons(IP_OFFS | IP_FLAGS_MFRAG)) {
|
||||
return;
|
||||
}
|
||||
/* can't deal with headers > 20 bytes */
|
||||
|
@ -1701,7 +1702,7 @@ NetSetIP(volatile uchar * xip, IPaddr_t dest, int dport, int sport, int len)
|
|||
ip->ip_tos = 0;
|
||||
ip->ip_len = htons(IP_HDR_SIZE + len);
|
||||
ip->ip_id = htons(NetIPID++);
|
||||
ip->ip_off = htons(0x4000); /* No fragmentation */
|
||||
ip->ip_off = htons(IP_FLAGS_DFRAG); /* Don't fragment */
|
||||
ip->ip_ttl = 255;
|
||||
ip->ip_p = 17; /* UDP */
|
||||
ip->ip_sum = 0;
|
||||
|
|
|
@ -499,9 +499,8 @@ TftpStart (void)
|
|||
strncpy(tftp_filename, BootFile, MAX_LEN);
|
||||
tftp_filename[MAX_LEN-1] = 0;
|
||||
} else {
|
||||
*p++ = '\0';
|
||||
TftpServerIP = string_to_ip (BootFile);
|
||||
strncpy(tftp_filename, p, MAX_LEN);
|
||||
strncpy(tftp_filename, p + 1, MAX_LEN);
|
||||
tftp_filename[MAX_LEN-1] = 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue