In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.
Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 void cxgb4_eosw_txq_free_desc(struct adapter *adap, struct sge_eosw_txq *txq,
                              u32 ndesc);
 int cxgb4_ethofld_send_flowc(struct net_device *dev, u32 eotid, u32 tc);
-void cxgb4_ethofld_restart(unsigned long data);
+void cxgb4_ethofld_restart(struct tasklet_struct *t);
 int cxgb4_ethofld_rx_handler(struct sge_rspq *q, const __be64 *rsp,
                             const struct pkt_gl *si);
 void free_txq(struct adapter *adap, struct sge_txq *q);
 
        eosw_txq->cred = adap->params.ofldq_wr_cred;
        eosw_txq->hwqid = hwqid;
        eosw_txq->netdev = dev;
-       tasklet_init(&eosw_txq->qresume_tsk, cxgb4_ethofld_restart,
-                    (unsigned long)eosw_txq);
+       tasklet_setup(&eosw_txq->qresume_tsk, cxgb4_ethofld_restart);
        return 0;
 }
 
 
        return work_done;
 }
 
-void cxgb4_ethofld_restart(unsigned long data)
+void cxgb4_ethofld_restart(struct tasklet_struct *t)
 {
-       struct sge_eosw_txq *eosw_txq = (struct sge_eosw_txq *)data;
+       struct sge_eosw_txq *eosw_txq = from_tasklet(eosw_txq, t,
+                                                    qresume_tsk);
        int pktcount;
 
        spin_lock(&eosw_txq->lock);