return work_done;
 }
 
-static void macb_hresp_error_task(unsigned long data)
+static void macb_hresp_error_task(struct tasklet_struct *t)
 {
-       struct macb *bp = (struct macb *)data;
+       struct macb *bp = from_tasklet(bp, t, hresp_err_tasklet);
        struct net_device *dev = bp->dev;
        struct macb_queue *queue;
        unsigned int q;
                goto err_out_unregister_mdio;
        }
 
-       tasklet_init(&bp->hresp_err_tasklet, macb_hresp_error_task,
-                    (unsigned long)bp);
+       tasklet_setup(&bp->hresp_err_tasklet, macb_hresp_error_task);
 
        netdev_info(dev, "Cadence %s rev 0x%08x at 0x%08lx irq %d (%pM)\n",
                    macb_is_gem(bp) ? "GEM" : "MACB", macb_readl(bp, MID),