return false;
 }
 
-static void rtl8723bs_recv_tasklet(unsigned long priv)
+static void rtl8723bs_recv_tasklet(struct tasklet_struct *t)
 {
-       struct adapter *padapter;
+       struct adapter *padapter = from_tasklet(padapter, t,
+                                               recvpriv.recv_tasklet);
        struct hal_com_data *p_hal_data;
        struct recv_priv *precvpriv;
        struct recv_buf *precvbuf;
        _pkt *pkt_copy = NULL;
        u8 shift_sz = 0, rx_report_sz = 0;
 
-       padapter = (struct adapter *)priv;
        p_hal_data = GET_HAL_DATA(padapter);
        precvpriv = &padapter->recvpriv;
        recv_buf_queue = &precvpriv->recv_buf_pending_queue;
                goto initbuferror;
 
        /* 3 2. init tasklet */
-       tasklet_init(&precvpriv->recv_tasklet, rtl8723bs_recv_tasklet,
-                    (unsigned long)padapter);
+       tasklet_setup(&precvpriv->recv_tasklet, rtl8723bs_recv_tasklet);
 
        goto exit;