diff options
Diffstat (limited to 'drivers/net/tulip/uli526x.c')
| -rw-r--r-- | drivers/net/tulip/uli526x.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/tulip/uli526x.c b/drivers/net/tulip/uli526x.c index 0ab05af237e..c7f97285292 100644 --- a/drivers/net/tulip/uli526x.c +++ b/drivers/net/tulip/uli526x.c @@ -25,7 +25,6 @@  #include <linux/timer.h>  #include <linux/errno.h>  #include <linux/ioport.h> -#include <linux/slab.h>  #include <linux/interrupt.h>  #include <linux/pci.h>  #include <linux/init.h> @@ -851,13 +850,15 @@ static void uli526x_rx_packet(struct net_device *dev, struct uli526x_board_info  			if ( !(rdes0 & 0x8000) ||  				((db->cr6_data & CR6_PM) && (rxlen>6)) ) { +				struct sk_buff *new_skb = NULL; +  				skb = rxptr->rx_skb_ptr;  				/* Good packet, send to upper layer */  				/* Shorst packet used new SKB */ -				if ( (rxlen < RX_COPY_SIZE) && -					( (skb = dev_alloc_skb(rxlen + 2) ) -					!= NULL) ) { +				if ((rxlen < RX_COPY_SIZE) && +				    (((new_skb = dev_alloc_skb(rxlen + 2)) != NULL))) { +					skb = new_skb;  					/* size less than COPY_SIZE, allocate a rxlen SKB */  					skb_reserve(skb, 2); /* 16byte align */  					memcpy(skb_put(skb, rxlen), @@ -1392,7 +1393,7 @@ static void update_cr6(u32 cr6_data, unsigned long ioaddr)  static void send_filter_frame(struct net_device *dev, int mc_cnt)  {  	struct uli526x_board_info *db = netdev_priv(dev); -	struct dev_mc_list *mcptr; +	struct netdev_hw_addr *ha;  	struct tx_desc *txptr;  	u16 * addrptr;  	u32 * suptr; @@ -1415,8 +1416,8 @@ static void send_filter_frame(struct net_device *dev, int mc_cnt)  	*suptr++ = 0xffff << FLT_SHIFT;  	/* fit the multicast address */ -	netdev_for_each_mc_addr(mcptr, dev) { -		addrptr = (u16 *) mcptr->dmi_addr; +	netdev_for_each_mc_addr(ha, dev) { +		addrptr = (u16 *) ha->addr;  		*suptr++ = addrptr[0] << FLT_SHIFT;  		*suptr++ = addrptr[1] << FLT_SHIFT;  		*suptr++ = addrptr[2] << FLT_SHIFT;  |