OSDN Git Service

staging/octeon-ethernet: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
authorEric W. Biederman <ebiederm@xmission.com>
Sun, 16 Mar 2014 01:39:19 +0000 (18:39 -0700)
committerEric W. Biederman <ebiederm@xmission.com>
Tue, 25 Mar 2014 04:19:24 +0000 (21:19 -0700)
Replace dev_kfree_skb with dev_kfree_skb_any in cvm_oct_xmit_pow which
can be called in hard irq and other contexts, on the code paths that
drop packets.

Replace dev_kfree_skb with dev_consume_skb_any in cvm_oct_xmit_pow which
can be called in hard irq and other contexts, on the code path where
the packet is transmitted successfully.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
drivers/staging/octeon/ethernet-tx.c

index 47541e1..ebb3ebc 100644 (file)
@@ -554,7 +554,7 @@ int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
                printk_ratelimited("%s: Failed to allocate a work queue entry\n",
                                   dev->name);
                priv->stats.tx_dropped++;
-               dev_kfree_skb(skb);
+               dev_kfree_skb_any(skb);
                return 0;
        }
 
@@ -565,7 +565,7 @@ int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
                                   dev->name);
                cvmx_fpa_free(work, CVMX_FPA_WQE_POOL, DONT_WRITEBACK(1));
                priv->stats.tx_dropped++;
-               dev_kfree_skb(skb);
+               dev_kfree_skb_any(skb);
                return 0;
        }
 
@@ -682,7 +682,7 @@ int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
                             work->grp);
        priv->stats.tx_packets++;
        priv->stats.tx_bytes += skb->len;
-       dev_kfree_skb(skb);
+       dev_consume_skb_any(skb);
        return 0;
 }