diff options
Diffstat (limited to 'net/net.c')
| -rw-r--r-- | net/net.c | 19 | 
1 files changed, 13 insertions, 6 deletions
| @@ -461,7 +461,7 @@ restart:  	/*  	 * Echo the inverted link state to the fault LED.  	 */ -	if(miiphy_link(CFG_FAULT_MII_ADDR)) { +	if(miiphy_link(eth_get_dev()->name, CFG_FAULT_MII_ADDR)) {  		status_led_set (STATUS_LED_RED, STATUS_LED_OFF);  	} else {  		status_led_set (STATUS_LED_RED, STATUS_LED_ON); @@ -512,7 +512,7 @@ restart:  			/*  			 * Echo the inverted link state to the fault LED.  			 */ -			if(miiphy_link(CFG_FAULT_MII_ADDR)) { +			if(miiphy_link(eth_get_dev()->name, CFG_FAULT_MII_ADDR)) {  				status_led_set (STATUS_LED_RED, STATUS_LED_OFF);  			} else {  				status_led_set (STATUS_LED_RED, STATUS_LED_ON); @@ -810,6 +810,7 @@ static ushort CDP_compute_csum(const uchar *buff, ushort len)  	int     odd;  	ulong   result = 0;  	ushort  leftover; +	ushort *p;  	if (len > 0) {  		odd = 1 & (ulong)buff; @@ -819,14 +820,19 @@ static ushort CDP_compute_csum(const uchar *buff, ushort len)  			buff++;  		}  		while (len > 1) { -			result += *((const ushort *)buff)++; +			p = (ushort *)buff; +			result += *p++; +			buff = (uchar *)p;  			if (result & 0x80000000)  				result = (result & 0xFFFF) + (result >> 16);  			len -= 2;  		}  		if (len) {  			leftover = (signed short)(*(const signed char *)buff); -			/* * XXX CISCO SUCKS big time! (and blows too) */ +			/* CISCO SUCKS big time! (and blows too): +			 * CDP uses the IP checksum algorithm with a twist; +			 * for the last byte it *sign* extends and sums. +			 */  			result = (result & 0xffff0000) | ((result + leftover) & 0x0000ffff);  		}  		while (result >> 16) @@ -1574,10 +1580,11 @@ unsigned  NetCksum(uchar * ptr, int len)  {  	ulong	xsum; +	ushort *p = (ushort *)ptr;  	xsum = 0;  	while (len-- > 0) -		xsum += *((ushort *)ptr)++; +		xsum += *p++;  	xsum = (xsum & 0xffff) + (xsum >> 16);  	xsum = (xsum & 0xffff) + (xsum >> 16);  	return (xsum & 0xffff); @@ -1654,7 +1661,7 @@ NetSetIP(volatile uchar * xip, IPaddr_t dest, int dport, int sport, int len)  	ip->ip_sum   = ~NetCksum((uchar *)ip, IP_HDR_SIZE_NO_UDP / 2);  } -void copy_filename (uchar *dst, uchar *src, int size) +void copy_filename (char *dst, char *src, int size)  {  	if (*src && (*src == '"')) {  		++src; |