aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sc92031.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/sc92031.c')
-rw-r--r--drivers/net/sc92031.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/net/sc92031.c b/drivers/net/sc92031.c
index 8d6030022d14..d87c4787fffa 100644
--- a/drivers/net/sc92031.c
+++ b/drivers/net/sc92031.c
@@ -428,14 +428,14 @@ static void _sc92031_set_mar(struct net_device *dev)
428 void __iomem *port_base = priv->port_base; 428 void __iomem *port_base = priv->port_base;
429 u32 mar0 = 0, mar1 = 0; 429 u32 mar0 = 0, mar1 = 0;
430 430
431 if ((dev->flags & IFF_PROMISC) 431 if ((dev->flags & IFF_PROMISC) ||
432 || dev->mc_count > multicast_filter_limit 432 netdev_mc_count(dev) > multicast_filter_limit ||
433 || (dev->flags & IFF_ALLMULTI)) 433 (dev->flags & IFF_ALLMULTI))
434 mar0 = mar1 = 0xffffffff; 434 mar0 = mar1 = 0xffffffff;
435 else if (dev->flags & IFF_MULTICAST) { 435 else if (dev->flags & IFF_MULTICAST) {
436 struct dev_mc_list *mc_list; 436 struct dev_mc_list *mc_list;
437 437
438 for (mc_list = dev->mc_list; mc_list; mc_list = mc_list->next) { 438 netdev_for_each_mc_addr(mc_list, dev) {
439 u32 crc; 439 u32 crc;
440 unsigned bit = 0; 440 unsigned bit = 0;
441 441
@@ -777,10 +777,10 @@ static void _sc92031_rx_tasklet(struct net_device *dev)
777 777
778 rx_ring_offset = (rx_ring_offset + 4) % RX_BUF_LEN; 778 rx_ring_offset = (rx_ring_offset + 4) % RX_BUF_LEN;
779 779
780 if (unlikely(rx_status == 0 780 if (unlikely(rx_status == 0 ||
781 || rx_size > (MAX_ETH_FRAME_SIZE + 4) 781 rx_size > (MAX_ETH_FRAME_SIZE + 4) ||
782 || rx_size < 16 782 rx_size < 16 ||
783 || !(rx_status & RxStatesOK))) { 783 !(rx_status & RxStatesOK))) {
784 _sc92031_rx_tasklet_error(dev, rx_status, rx_size); 784 _sc92031_rx_tasklet_error(dev, rx_status, rx_size);
785 break; 785 break;
786 } 786 }
@@ -793,7 +793,7 @@ static void _sc92031_rx_tasklet(struct net_device *dev)
793 793
794 rx_len -= rx_size_align + 4; 794 rx_len -= rx_size_align + 4;
795 795
796 skb = netdev_alloc_skb(dev, pkt_size + NET_IP_ALIGN); 796 skb = netdev_alloc_skb_ip_align(dev, pkt_size);
797 if (unlikely(!skb)) { 797 if (unlikely(!skb)) {
798 if (printk_ratelimit()) 798 if (printk_ratelimit())
799 printk(KERN_ERR "%s: Couldn't allocate a skb_buff for a packet of size %u\n", 799 printk(KERN_ERR "%s: Couldn't allocate a skb_buff for a packet of size %u\n",
@@ -801,8 +801,6 @@ static void _sc92031_rx_tasklet(struct net_device *dev)
801 goto next; 801 goto next;
802 } 802 }
803 803
804 skb_reserve(skb, NET_IP_ALIGN);
805
806 if ((rx_ring_offset + pkt_size) > RX_BUF_LEN) { 804 if ((rx_ring_offset + pkt_size) > RX_BUF_LEN) {
807 memcpy(skb_put(skb, RX_BUF_LEN - rx_ring_offset), 805 memcpy(skb_put(skb, RX_BUF_LEN - rx_ring_offset),
808 rx_ring + rx_ring_offset, RX_BUF_LEN - rx_ring_offset); 806 rx_ring + rx_ring_offset, RX_BUF_LEN - rx_ring_offset);
@@ -1591,7 +1589,7 @@ out:
1591 return 0; 1589 return 0;
1592} 1590}
1593 1591
1594static struct pci_device_id sc92031_pci_device_id_table[] __devinitdata = { 1592static DEFINE_PCI_DEVICE_TABLE(sc92031_pci_device_id_table) = {
1595 { PCI_DEVICE(PCI_VENDOR_ID_SILAN, 0x2031) }, 1593 { PCI_DEVICE(PCI_VENDOR_ID_SILAN, 0x2031) },
1596 { PCI_DEVICE(PCI_VENDOR_ID_SILAN, 0x8139) }, 1594 { PCI_DEVICE(PCI_VENDOR_ID_SILAN, 0x8139) },
1597 { PCI_DEVICE(0x1088, 0x2031) }, 1595 { PCI_DEVICE(0x1088, 0x2031) },