#include "usb_ops.h"
 #include "wifi.h"
 
-static void recv_tasklet(unsigned long priv);
+static void recv_tasklet(struct tasklet_struct *t);
 
 void r8712_init_recv_priv(struct recv_priv *precvpriv,
                          struct _adapter *padapter)
                precvbuf++;
        }
        precvpriv->free_recv_buf_queue_cnt = NR_RECVBUFF;
-       tasklet_init(&precvpriv->recv_tasklet, recv_tasklet,
-                    (unsigned long)padapter);
+       tasklet_setup(&precvpriv->recv_tasklet, recv_tasklet);
        skb_queue_head_init(&precvpriv->rx_skb_queue);
 
        skb_queue_head_init(&precvpriv->free_recv_skb_queue);
        } while ((transfer_len > 0) && pkt_cnt > 0);
 }
 
-static void recv_tasklet(unsigned long priv)
+static void recv_tasklet(struct tasklet_struct *t)
 {
        struct sk_buff *pskb;
-       struct _adapter *padapter = (struct _adapter *)priv;
+       struct _adapter *padapter = from_tasklet(padapter, t,
+                                                recvpriv.recv_tasklet);
        struct recv_priv *precvpriv = &padapter->recvpriv;
 
        while (NULL != (pskb = skb_dequeue(&precvpriv->rx_skb_queue))) {
 
        INIT_WORK(&padapter->wk_filter_rx_ff0, r8712_SetFilter);
        alloc_hwxmits(padapter);
        init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
-       tasklet_init(&pxmitpriv->xmit_tasklet, r8712_xmit_bh,
-                    (unsigned long)padapter);
+       tasklet_setup(&pxmitpriv->xmit_tasklet, r8712_xmit_bh);
        return 0;
 }
 
 
 int r8712_xmit_enqueue(struct _adapter *padapter,
                       struct xmit_frame *pxmitframe);
 void r8712_xmit_direct(struct _adapter *padapter, struct xmit_frame *pxmitframe);
-void r8712_xmit_bh(unsigned long priv);
+void r8712_xmit_bh(struct tasklet_struct *t);
 
 void xmitframe_xmitbuf_attach(struct xmit_frame *pxmitframe,
                        struct xmit_buf *pxmitbuf);
 
        }
 }
 
-void r8712_xmit_bh(unsigned long priv)
+void r8712_xmit_bh(struct tasklet_struct *t)
 {
        int ret = false;
-       struct _adapter *padapter = (struct _adapter *)priv;
+       struct _adapter *padapter = from_tasklet(padapter, t,
+                                                xmitpriv.xmit_tasklet);
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
 
        if (padapter->driver_stopped ||