diff options
Diffstat (limited to 'drivers/net/ethernet/packetengines')
| -rw-r--r-- | drivers/net/ethernet/packetengines/hamachi.c | 7 | ||||
| -rw-r--r-- | drivers/net/ethernet/packetengines/yellowfin.c | 21 | 
2 files changed, 13 insertions, 15 deletions
diff --git a/drivers/net/ethernet/packetengines/hamachi.c b/drivers/net/ethernet/packetengines/hamachi.c index cac33e5f9bc..9a997e4c3e0 100644 --- a/drivers/net/ethernet/packetengines/hamachi.c +++ b/drivers/net/ethernet/packetengines/hamachi.c @@ -724,10 +724,8 @@ static int hamachi_init_one(struct pci_dev *pdev,  	/* The Hamachi-specific entries in the device structure. */  	dev->netdev_ops = &hamachi_netdev_ops; -	if (chip_tbl[hmp->chip_id].flags & CanHaveMII) -		SET_ETHTOOL_OPS(dev, ðtool_ops); -	else -		SET_ETHTOOL_OPS(dev, ðtool_ops_no_mii); +	dev->ethtool_ops = (chip_tbl[hmp->chip_id].flags & CanHaveMII) ? +		ðtool_ops : ðtool_ops_no_mii;  	dev->watchdog_timeo = TX_TIMEOUT;  	if (mtu)  		dev->mtu = mtu; @@ -1910,7 +1908,6 @@ static void hamachi_remove_one(struct pci_dev *pdev)  		iounmap(hmp->base);  		free_netdev(dev);  		pci_release_regions(pdev); -		pci_set_drvdata(pdev, NULL);  	}  } diff --git a/drivers/net/ethernet/packetengines/yellowfin.c b/drivers/net/ethernet/packetengines/yellowfin.c index d28593b1fc3..69a8dc09507 100644 --- a/drivers/net/ethernet/packetengines/yellowfin.c +++ b/drivers/net/ethernet/packetengines/yellowfin.c @@ -472,7 +472,7 @@ static int yellowfin_init_one(struct pci_dev *pdev,  	/* The Yellowfin-specific entries in the device structure. */  	dev->netdev_ops = &netdev_ops; -	SET_ETHTOOL_OPS(dev, ðtool_ops); +	dev->ethtool_ops = ðtool_ops;  	dev->watchdog_timeo = TX_TIMEOUT;  	if (mtu) @@ -513,7 +513,6 @@ err_out_unmap_rx:  err_out_unmap_tx:          pci_free_consistent(pdev, TX_TOTAL_SIZE, np->tx_ring, np->tx_ring_dma);  err_out_cleardev: -	pci_set_drvdata(pdev, NULL);  	pci_iounmap(pdev, ioaddr);  err_out_free_res:  	pci_release_regions(pdev); @@ -1054,7 +1053,7 @@ static int yellowfin_rx(struct net_device *dev)  		struct sk_buff *rx_skb = yp->rx_skbuff[entry];  		s16 frame_status;  		u16 desc_status; -		int data_size; +		int data_size, yf_size;  		u8 *buf_addr;  		if(!desc->result_status) @@ -1071,6 +1070,9 @@ static int yellowfin_rx(struct net_device *dev)  			       __func__, frame_status);  		if (--boguscnt < 0)  			break; + +		yf_size = sizeof(struct yellowfin_desc); +  		if ( ! (desc_status & RX_EOP)) {  			if (data_size != 0)  				netdev_warn(dev, "Oversized Ethernet frame spanned multiple buffers, status %04x, data_size %d!\n", @@ -1097,12 +1099,12 @@ static int yellowfin_rx(struct net_device *dev)  			if (status2 & 0x80) dev->stats.rx_dropped++;  #ifdef YF_PROTOTYPE		/* Support for prototype hardware errata. */  		} else if ((yp->flags & HasMACAddrBug)  && -			memcmp(le32_to_cpu(yp->rx_ring_dma + -				entry*sizeof(struct yellowfin_desc)), -				dev->dev_addr, 6) != 0 && -			memcmp(le32_to_cpu(yp->rx_ring_dma + -				entry*sizeof(struct yellowfin_desc)), -				"\377\377\377\377\377\377", 6) != 0) { +			!ether_addr_equal(le32_to_cpu(yp->rx_ring_dma + +						      entry * yf_size), +					  dev->dev_addr) && +			!ether_addr_equal(le32_to_cpu(yp->rx_ring_dma + +						      entry * yf_size), +					  "\377\377\377\377\377\377")) {  			if (bogus_rx++ == 0)  				netdev_warn(dev, "Bad frame to %pM\n",  					    buf_addr); @@ -1392,7 +1394,6 @@ static void yellowfin_remove_one(struct pci_dev *pdev)  	pci_release_regions (pdev);  	free_netdev (dev); -	pci_set_drvdata(pdev, NULL);  }  | 
