#include <linux/skbuff.h>
 
 #include <linux/ti_wilink_st.h>
+#include <linux/netdevice.h>
 
 /*
  * function pointer pointing to either,
        case ST_LL_AWAKE_TO_ASLEEP:
                pr_err("ST LL is illegal state(%ld),"
                           "purging received skb.", st_ll_getstate(st_gdata));
-               kfree_skb(skb);
+               dev_kfree_skb_irq(skb);
                break;
        case ST_LL_ASLEEP:
                skb_queue_tail(&st_gdata->tx_waitq, skb);
        default:
                pr_err("ST LL is illegal state(%ld),"
                           "purging received skb.", st_ll_getstate(st_gdata));
-               kfree_skb(skb);
+               dev_kfree_skb_irq(skb);
                break;
        }
 
                                spin_unlock_irqrestore(&st_data->lock, flags);
                                break;
                        }
-                       kfree_skb(skb);
+                       dev_kfree_skb_irq(skb);
                        spin_unlock_irqrestore(&st_data->lock, flags);
                }
                /* if wake-up is set in another context- restart sending */