ar71xx: ag71xx: reorganize ag71xx_rx_packet function
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 27 Mar 2010 13:05:20 +0000 (13:05 +0000)
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 27 Mar 2010 13:05:20 +0000 (13:05 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20504 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c

index 824423966373e6903d10d76127eeba19425cb8d7..3cf4f5eced79342e385e07922bff959ce14cd7d9 100644 (file)
@@ -772,6 +772,7 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
                struct ag71xx_desc *desc = ring->buf[i].desc;
                struct sk_buff *skb;
                int pktlen;
+               int err;
 
                if (ag71xx_desc_empty(desc))
                        break;
@@ -790,19 +791,19 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
                dma_unmap_single(&dev->dev, ring->buf[i].dma_addr,
                                 AG71XX_RX_PKT_SIZE, DMA_FROM_DEVICE);
 
-               skb_put(skb, pktlen);
-
-               skb->dev = dev;
-               skb->ip_summed = CHECKSUM_NONE;
-
                dev->last_rx = jiffies;
                dev->stats.rx_packets++;
                dev->stats.rx_bytes += pktlen;
 
-               if (ag71xx_remove_ar8216_header(ag, skb) != 0) {
+               err = ag71xx_remove_ar8216_header(ag, skb);
+               if (err) {
                        dev->stats.rx_dropped++;
                        kfree_skb(skb);
                } else {
+                       skb_put(skb, pktlen);
+
+                       skb->dev = dev;
+                       skb->ip_summed = CHECKSUM_NONE;
                        skb->protocol = eth_type_trans(skb, dev);
                        netif_receive_skb(skb);
                }