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.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/net/sc92031.c b/drivers/net/sc92031.c
index 8d6030022d14..e35050322f97 100644
--- a/drivers/net/sc92031.c
+++ b/drivers/net/sc92031.c
@@ -428,9 +428,9 @@ 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 dev->mc_count > 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;
@@ -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);