static void
 srmcons_receive_chars(struct timer_list *t)
 {
-       struct srmcons_private *srmconsp = from_timer(srmconsp, t, timer);
+       struct srmcons_private *srmconsp = timer_container_of(srmconsp, t,
+                                                             timer);
        struct tty_port *port = &srmconsp->port;
        unsigned long flags;
        int incr = 10;
 
 
 static void kvmppc_watchdog_func(struct timer_list *t)
 {
-       struct kvm_vcpu *vcpu = from_timer(vcpu, t, arch.wdt_timer);
+       struct kvm_vcpu *vcpu = timer_container_of(vcpu, t, arch.wdt_timer);
        u32 tsr, new_tsr;
        int final;
 
 
 
 static void kw_i2c_timeout(struct timer_list *t)
 {
-       struct pmac_i2c_host_kw *host = from_timer(host, t, timeout_timer);
+       struct pmac_i2c_host_kw *host = timer_container_of(host, t,
+                                                          timeout_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&host->lock, flags);
 
 
 static void heartbeat_timer(struct timer_list *t)
 {
-       struct heartbeat_data *hd = from_timer(hd, t, timer);
+       struct heartbeat_data *hd = timer_container_of(hd, t, timer);
        static unsigned bit = 0, up = 1;
 
        heartbeat_toggle_bit(hd, bit, hd->flags & HEARTBEAT_INVERTED);
 
 
 static void pcibios_enable_err(struct timer_list *t)
 {
-       struct pci_channel *hose = from_timer(hose, t, err_timer);
+       struct pci_channel *hose = timer_container_of(hose, t, err_timer);
 
        timer_delete(&hose->err_timer);
        printk(KERN_DEBUG "PCI: re-enabling error IRQ.\n");
 
 static void pcibios_enable_serr(struct timer_list *t)
 {
-       struct pci_channel *hose = from_timer(hose, t, serr_timer);
+       struct pci_channel *hose = timer_container_of(hose, t, serr_timer);
 
        timer_delete(&hose->serr_timer);
        printk(KERN_DEBUG "PCI: re-enabling system error IRQ.\n");
 
 
 static void switch_timer(struct timer_list *t)
 {
-       struct push_switch *psw = from_timer(psw, t, debounce);
+       struct push_switch *psw = timer_container_of(psw, t, debounce);
 
        schedule_work(&psw->work);
 }
 
 
 static void vio_port_timer(struct timer_list *t)
 {
-       struct vio_driver_state *vio = from_timer(vio, t, timer);
+       struct vio_driver_state *vio = timer_container_of(vio, t, timer);
 
        vio_port_up(vio);
 }
 
 
 static void vector_timer_expire(struct timer_list *t)
 {
-       struct vector_private *vp = from_timer(vp, t, tl);
+       struct vector_private *vp = timer_container_of(vp, t, tl);
 
        vp->estats.tx_kicks++;
        napi_schedule(&vp->napi);
 
 
 static void cancel_evtchn_poll(struct timer_list *t)
 {
-       struct kvm_vcpu *vcpu = from_timer(vcpu, t, arch.xen.poll_timer);
+       struct kvm_vcpu *vcpu = timer_container_of(vcpu, t,
+                                                  arch.xen.poll_timer);
 
        kvm_make_request(KVM_REQ_UNBLOCK, vcpu);
        kvm_vcpu_kick(vcpu);
 
 
 static void iss_net_timer(struct timer_list *t)
 {
-       struct iss_net_private *lp = from_timer(lp, t, timer);
+       struct iss_net_private *lp = timer_container_of(lp, t, timer);
 
        iss_net_poll(lp);
        mod_timer(&lp->timer, jiffies + lp->timer_val);
 
 
 static void blk_rq_timed_out_timer(struct timer_list *t)
 {
-       struct request_queue *q = from_timer(q, t, timeout);
+       struct request_queue *q = timer_container_of(q, t, timeout);
 
        kblockd_schedule_work(&q->timeout_work);
 }
 
 
 static void blkiolatency_timer_fn(struct timer_list *t)
 {
-       struct blk_iolatency *blkiolat = from_timer(blkiolat, t, timer);
+       struct blk_iolatency *blkiolat = timer_container_of(blkiolat, t,
+                                                           timer);
        struct blkcg_gq *blkg;
        struct cgroup_subsys_state *pos_css;
        u64 now = blk_time_get_ns();
 
 
 static void blk_stat_timer_fn(struct timer_list *t)
 {
-       struct blk_stat_callback *cb = from_timer(cb, t, timer);
+       struct blk_stat_callback *cb = timer_container_of(cb, t, timer);
        unsigned int bucket;
        int cpu;
 
 
  */
 static void throtl_pending_timer_fn(struct timer_list *t)
 {
-       struct throtl_service_queue *sq = from_timer(sq, t, pending_timer);
+       struct throtl_service_queue *sq = timer_container_of(sq, t,
+                                                            pending_timer);
        struct throtl_grp *tg = sq_to_tg(sq);
        struct throtl_data *td = sq_to_td(sq);
        struct throtl_service_queue *parent_sq;
 
 
 static void kyber_timer_fn(struct timer_list *t)
 {
-       struct kyber_queue_data *kqd = from_timer(kqd, t, timer);
+       struct kyber_queue_data *kqd = timer_container_of(kqd, t, timer);
        unsigned int sched_domain;
        int cpu;
        bool bad = false;
 
 
 static void qaic_timesync_timer(struct timer_list *t)
 {
-       struct mqts_dev *mqtsdev = from_timer(mqtsdev, t, timer);
+       struct mqts_dev *mqtsdev = timer_container_of(mqtsdev, t, timer);
        struct qts_host_time_sync_msg_data *sync_msg;
        u64 device_qtimer_us;
        u64 device_qtimer;
 
 
 static void ghes_poll_func(struct timer_list *t)
 {
-       struct ghes *ghes = from_timer(ghes, t, timer);
+       struct ghes *ghes = timer_container_of(ghes, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&ghes_notify_lock_irq, flags);
 
 
 static void ahci_sw_activity_blink(struct timer_list *t)
 {
-       struct ahci_em_priv *emp = from_timer(emp, t, timer);
+       struct ahci_em_priv *emp = timer_container_of(emp, t, timer);
        struct ata_link *link = emp->link;
        struct ata_port *ap = link->ap;
 
 
 
 void ata_eh_fastdrain_timerfn(struct timer_list *t)
 {
-       struct ata_port *ap = from_timer(ap, t, fastdrain_timer);
+       struct ata_port *ap = timer_container_of(ap, t, fastdrain_timer);
        unsigned long flags;
        unsigned int cnt;
 
 
 static void
 tst_timer(struct timer_list *t)
 {
-       struct idt77252_dev *card = from_timer(card, t, tst_timer);
+       struct idt77252_dev *card = timer_container_of(card, t, tst_timer);
        unsigned long base, idle, jump;
        unsigned long flags;
        u32 pc;
 static void
 idt77252_est_timer(struct timer_list *t)
 {
-       struct rate_estimator *est = from_timer(est, t, timer);
+       struct rate_estimator *est = timer_container_of(est, t, timer);
        struct vc_map *vc = est->vc;
        struct idt77252_dev *card = vc->card;
        unsigned long flags;
 
 
 static void lanai_timed_poll(struct timer_list *t)
 {
-       struct lanai_dev *lanai = from_timer(lanai, t, timer);
+       struct lanai_dev *lanai = timer_container_of(lanai, t, timer);
 #ifndef DEBUG_RW
        unsigned long flags;
 #ifdef USE_POWERDOWN
 
  */
 static void linedisp_scroll(struct timer_list *t)
 {
-       struct linedisp *linedisp = from_timer(linedisp, t, timer);
+       struct linedisp *linedisp = timer_container_of(linedisp, t, timer);
        unsigned int i, ch = linedisp->scroll_pos;
        unsigned int num_chars = linedisp->num_chars;
 
 
  */
 static void dpm_watchdog_handler(struct timer_list *t)
 {
-       struct dpm_watchdog *wd = from_timer(wd, t, timer);
+       struct dpm_watchdog *wd = timer_container_of(wd, t, timer);
        struct timer_list *timer = &wd->timer;
        unsigned int time_left;
 
 
  */
 static void pm_wakeup_timer_fn(struct timer_list *t)
 {
-       struct wakeup_source *ws = from_timer(ws, t, timer);
+       struct wakeup_source *ws = timer_container_of(ws, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&ws->lock, flags);
 
        int utgts;      /* number of aoetgt descriptors (not slots) */
        int since;
 
-       d = from_timer(d, timer, timer);
+       d = timer_container_of(d, timer, timer);
 
        spin_lock_irqsave(&d->lock, flags);
 
 
 {
        struct aoedev *d;
 
-       d = from_timer(d, t, timer);
+       d = timer_container_of(d, t, timer);
        if (d->flags & DEVFL_TKILL)
                return;
        d->timer.expires = jiffies + HZ;
 
 
 static void md_sync_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = from_timer(device, t, md_sync_timer);
+       struct drbd_device *device = timer_container_of(device, t,
+                                                       md_sync_timer);
        drbd_device_post_work(device, MD_SYNC);
 }
 
 
 
 void request_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = from_timer(device, t, request_timer);
+       struct drbd_device *device = timer_container_of(device, t,
+                                                       request_timer);
        struct drbd_connection *connection = first_peer_device(device)->connection;
        struct drbd_request *req_read, *req_write, *req_peer; /* oldest request */
        struct net_conf *nc;
 
 
 void resync_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = from_timer(device, t, resync_timer);
+       struct drbd_device *device = timer_container_of(device, t,
+                                                       resync_timer);
 
        drbd_queue_work_if_unqueued(
                &first_peer_device(device)->connection->sender_work,
 
 void start_resync_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = from_timer(device, t, start_resync_timer);
+       struct drbd_device *device = timer_container_of(device, t,
+                                                       start_resync_timer);
        drbd_device_post_work(device, RS_START);
 }
 
 
 
 static void scan_timeout(struct timer_list *t)
 {
-       struct floppy_state *fs = from_timer(fs, t, timeout);
+       struct floppy_state *fs = timer_container_of(fs, t, timeout);
        struct swim3 __iomem *sw = fs->swim3;
        unsigned long flags;
 
 
 static void seek_timeout(struct timer_list *t)
 {
-       struct floppy_state *fs = from_timer(fs, t, timeout);
+       struct floppy_state *fs = timer_container_of(fs, t, timeout);
        struct swim3 __iomem *sw = fs->swim3;
        unsigned long flags;
 
 
 static void settle_timeout(struct timer_list *t)
 {
-       struct floppy_state *fs = from_timer(fs, t, timeout);
+       struct floppy_state *fs = timer_container_of(fs, t, timeout);
        struct swim3 __iomem *sw = fs->swim3;
        unsigned long flags;
 
 
 static void xfer_timeout(struct timer_list *t)
 {
-       struct floppy_state *fs = from_timer(fs, t, timeout);
+       struct floppy_state *fs = timer_container_of(fs, t, timeout);
        struct swim3 __iomem *sw = fs->swim3;
        struct dbdma_regs __iomem *dr = fs->dma;
        unsigned long flags;
 
 
 static void bluecard_activity_led_timeout(struct timer_list *t)
 {
-       struct bluecard_info *info = from_timer(info, t, timer);
+       struct bluecard_info *info = timer_container_of(info, t, timer);
        unsigned int iobase = info->p_dev->resource[0]->start;
 
        if (test_bit(CARD_ACTIVITY, &(info->hw_state))) {
 
 
 static void ps_timeout_func(struct timer_list *t)
 {
-       struct ps_data *data = from_timer(data, t, ps_timer);
+       struct ps_data *data = timer_container_of(data, t, ps_timer);
        struct hci_dev *hdev = data->hdev;
        struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev);
 
 
        /* Arrange to retransmit all messages in the relq. */
 static void bcsp_timed_event(struct timer_list *t)
 {
-       struct bcsp_struct *bcsp = from_timer(bcsp, t, tbcsp);
+       struct bcsp_struct *bcsp = timer_container_of(bcsp, t, tbcsp);
        struct hci_uart *hu = bcsp->hu;
        struct sk_buff *skb;
        unsigned long flags;
 
 {
        const unsigned char sync_req[] = { 0x01, 0x7e };
        unsigned char conf_req[3] = { 0x03, 0xfc };
-       struct h5 *h5 = from_timer(h5, t, timer);
+       struct h5 *h5 = timer_container_of(h5, t, timer);
        struct hci_uart *hu = h5->hu;
        struct sk_buff *skb;
        unsigned long flags;
 
 
 static void hci_ibs_tx_idle_timeout(struct timer_list *t)
 {
-       struct qca_data *qca = from_timer(qca, t, tx_idle_timer);
+       struct qca_data *qca = timer_container_of(qca, t, tx_idle_timer);
        struct hci_uart *hu = qca->hu;
        unsigned long flags;
 
 
 static void hci_ibs_wake_retrans_timeout(struct timer_list *t)
 {
-       struct qca_data *qca = from_timer(qca, t, wake_retrans_timer);
+       struct qca_data *qca = timer_container_of(qca, t, wake_retrans_timer);
        struct hci_uart *hu = qca->hu;
        unsigned long flags, retrans_delay;
        bool retransmit = false;
 
 
 static void health_check(struct timer_list *t)
 {
-       struct mhi_pci_device *mhi_pdev = from_timer(mhi_pdev, t, health_check_timer);
+       struct mhi_pci_device *mhi_pdev = timer_container_of(mhi_pdev, t,
+                                                            health_check_timer);
        struct mhi_controller *mhi_cntrl = &mhi_pdev->mhi_cntrl;
 
        if (!test_bit(MHI_PCI_DEV_STARTED, &mhi_pdev->status) ||
 
 
 static void xgene_rng_expired_timer(struct timer_list *t)
 {
-       struct xgene_rng_dev *ctx = from_timer(ctx, t, failure_timer);
+       struct xgene_rng_dev *ctx = timer_container_of(ctx, t, failure_timer);
 
        /* Clear failure counter as timer expired */
        disable_irq(ctx->irq);
 
 
 static void poll_timer(struct timer_list *t)
 {
-       struct bt_bmc *bt_bmc = from_timer(bt_bmc, t, poll_timer);
+       struct bt_bmc *bt_bmc = timer_container_of(bt_bmc, t, poll_timer);
 
        bt_bmc->poll_timer.expires += msecs_to_jiffies(500);
        wake_up(&bt_bmc->queue);
 
 
 static void smi_timeout(struct timer_list *t)
 {
-       struct smi_info   *smi_info = from_timer(smi_info, t, si_timer);
+       struct smi_info   *smi_info = timer_container_of(smi_info, t,
+                                                        si_timer);
        enum si_sm_result smi_result;
        unsigned long     flags;
        unsigned long     jiffies_now;
 
 
 static void retry_timeout(struct timer_list *t)
 {
-       struct ssif_info *ssif_info = from_timer(ssif_info, t, retry_timer);
+       struct ssif_info *ssif_info = timer_container_of(ssif_info, t,
+                                                        retry_timer);
        unsigned long oflags, *flags;
        bool waiting, resend;
 
 
 static void watch_timeout(struct timer_list *t)
 {
-       struct ssif_info *ssif_info = from_timer(ssif_info, t, watch_timer);
+       struct ssif_info *ssif_info = timer_container_of(ssif_info, t,
+                                                        watch_timer);
        unsigned long oflags, *flags;
 
        if (ssif_info->stopping)
 
 
 static void response_timeout(struct timer_list *t)
 {
-       struct ssif_bmc_ctx *ssif_bmc = from_timer(ssif_bmc, t, response_timer);
+       struct ssif_bmc_ctx *ssif_bmc = timer_container_of(ssif_bmc, t,
+                                                          response_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&ssif_bmc->lock, flags);
 
 
 static void user_reader_timeout(struct timer_list *t)
 {
-       struct file_priv *priv = from_timer(priv, t, user_read_timer);
+       struct file_priv *priv = timer_container_of(priv, t, user_read_timer);
 
        pr_warn("TPM user space timeout is deprecated (pid=%d)\n",
                task_tgid_nr(current));
 
  */
 static void waveform_ai_timer(struct timer_list *t)
 {
-       struct waveform_private *devpriv = from_timer(devpriv, t, ai_timer);
+       struct waveform_private *devpriv = timer_container_of(devpriv, t,
+                                                             ai_timer);
        struct comedi_device *dev = devpriv->dev;
        struct comedi_subdevice *s = dev->read_subdev;
        struct comedi_async *async = s->async;
  */
 static void waveform_ao_timer(struct timer_list *t)
 {
-       struct waveform_private *devpriv = from_timer(devpriv, t, ao_timer);
+       struct waveform_private *devpriv = timer_container_of(devpriv, t,
+                                                             ao_timer);
        struct comedi_device *dev = devpriv->dev;
        struct comedi_subdevice *s = dev->write_subdev;
        struct comedi_async *async = s->async;
 
 
 static void das16_timer_interrupt(struct timer_list *t)
 {
-       struct das16_private_struct *devpriv = from_timer(devpriv, t, timer);
+       struct das16_private_struct *devpriv = timer_container_of(devpriv, t,
+                                                                 timer);
        struct comedi_device *dev = devpriv->dev;
        unsigned long flags;
 
 
 
 static void jr3_pci_poll_dev(struct timer_list *t)
 {
-       struct jr3_pci_dev_private *devpriv = from_timer(devpriv, t, timer);
+       struct jr3_pci_dev_private *devpriv = timer_container_of(devpriv, t,
+                                                                timer);
        struct comedi_device *dev = devpriv->dev;
        struct jr3_pci_subdev_private *spriv;
        struct comedi_subdevice *s;
 
  */
 static void gpstate_timer_handler(struct timer_list *t)
 {
-       struct global_pstate_info *gpstates = from_timer(gpstates, t, timer);
+       struct global_pstate_info *gpstates = timer_container_of(gpstates, t,
+                                                                timer);
        struct cpufreq_policy *policy = gpstates->policy;
        int gpstate_idx, lpstate_idx;
        unsigned long val;
 
 
 static void artpec6_crypto_timeout(struct timer_list *t)
 {
-       struct artpec6_crypto *ac = from_timer(ac, t, timer);
+       struct artpec6_crypto *ac = timer_container_of(ac, t, timer);
 
        dev_info_ratelimited(artpec6_crypto_dev, "timeout\n");
 
 
 
 static void wait_timer(struct timer_list *timer)
 {
-       struct wait_timer *wt = from_timer(wt, timer, timer);
+       struct wait_timer *wt = timer_container_of(wt, timer, timer);
 
        dma_fence_signal(wt->f);
 }
 
 
 static void imxdma_watchdog(struct timer_list *t)
 {
-       struct imxdma_channel *imxdmac = from_timer(imxdmac, t, watchdog);
+       struct imxdma_channel *imxdmac = timer_container_of(imxdmac, t,
+                                                           watchdog);
        struct imxdma_engine *imxdma = imxdmac->imxdma;
        int channel = imxdmac->channel;
 
 
 
 void ioat_timer_event(struct timer_list *t)
 {
-       struct ioatdma_chan *ioat_chan = from_timer(ioat_chan, t, timer);
+       struct ioatdma_chan *ioat_chan = timer_container_of(ioat_chan, t,
+                                                           timer);
        dma_addr_t phys_complete;
        u64 status;
 
 
 
 static void split_transaction_timeout_callback(struct timer_list *timer)
 {
-       struct fw_transaction *t = from_timer(t, timer, split_timeout_timer);
+       struct fw_transaction *t = timer_container_of(t, timer, split_timeout_timer);
        struct fw_card *card = t->card;
 
        scoped_guard(spinlock_irqsave, &card->lock) {
 
  */
 static void amdgpu_fence_fallback(struct timer_list *t)
 {
-       struct amdgpu_ring *ring = from_timer(ring, t,
-                                             fence_drv.fallback_timer);
+       struct amdgpu_ring *ring = timer_container_of(ring, t,
+                                                     fence_drv.fallback_timer);
 
        if (amdgpu_fence_process(ring))
                DRM_WARN("Fence fallback timer expired on ring %s\n", ring->name);
 
 
 static void amdgpu_mux_resubmit_fallback(struct timer_list *t)
 {
-       struct amdgpu_ring_mux *mux = from_timer(mux, t, resubmit_timer);
+       struct amdgpu_ring_mux *mux = timer_container_of(mux, t,
+                                                        resubmit_timer);
 
        if (!spin_trylock(&mux->lock)) {
                amdgpu_ring_mux_schedule_resubmit(mux);
 
  */
 static void tda998x_edid_delay_done(struct timer_list *t)
 {
-       struct tda998x_priv *priv = from_timer(priv, t, edid_delay_timer);
+       struct tda998x_priv *priv = timer_container_of(priv, t,
+                                                      edid_delay_timer);
 
        priv->edid_delay_active = false;
        wake_up(&priv->edid_delay_waitq);
 
 
 static void vblank_disable_fn(struct timer_list *t)
 {
-       struct drm_vblank_crtc *vblank = from_timer(vblank, t, disable_timer);
+       struct drm_vblank_crtc *vblank = timer_container_of(vblank, t,
+                                                           disable_timer);
        struct drm_device *dev = vblank->dev;
        unsigned int pipe = vblank->pipe;
        unsigned long irqflags;
 
 
 static void vidi_fake_vblank_timer(struct timer_list *t)
 {
-       struct vidi_context *ctx = from_timer(ctx, t, timer);
+       struct vidi_context *ctx = timer_container_of(ctx, t, timer);
 
        if (drm_crtc_handle_vblank(&ctx->crtc->base))
                mod_timer(&ctx->timer,
 
 
 static void gud_usb_bulk_timeout(struct timer_list *t)
 {
-       struct gud_usb_bulk_context *ctx = from_timer(ctx, t, timer);
+       struct gud_usb_bulk_context *ctx = timer_container_of(ctx, t, timer);
 
        usb_sg_cancel(&ctx->sgr);
 }
 
 
 static void rps_timer(struct timer_list *t)
 {
-       struct intel_rps *rps = from_timer(rps, t, timer);
+       struct intel_rps *rps = timer_container_of(rps, t, timer);
        struct intel_gt *gt = rps_to_gt(rps);
        struct intel_engine_cs *engine;
        ktime_t dt, last, timestamp;
 
 
 static void hw_delay_complete(struct timer_list *t)
 {
-       struct mock_engine *engine = from_timer(engine, t, hw_delay);
+       struct mock_engine *engine = timer_container_of(engine, t, hw_delay);
        struct i915_request *request;
        unsigned long flags;
 
 
 
 static void spinner_kill(struct timer_list *timer)
 {
-       struct spinner_timer *st = from_timer(st, timer, timer);
+       struct spinner_timer *st = timer_container_of(st, timer, timer);
 
        igt_spinner_end(&st->spin);
        pr_info("%s\n", __func__);
 
 
 static void timer_i915_sw_fence_wake(struct timer_list *t)
 {
-       struct i915_sw_dma_fence_cb_timer *cb = from_timer(cb, t, timer);
+       struct i915_sw_dma_fence_cb_timer *cb = timer_container_of(cb, t,
+                                                                  timer);
        struct i915_sw_fence *fence;
 
        fence = xchg(&cb->base.fence, NULL);
 
 
 static void wakeref_auto_timeout(struct timer_list *t)
 {
-       struct intel_wakeref_auto *wf = from_timer(wf, t, timer);
+       struct intel_wakeref_auto *wf = timer_container_of(wf, t, timer);
        intel_wakeref_t wakeref;
        unsigned long flags;
 
 
 
 static void timed_fence_wake(struct timer_list *t)
 {
-       struct timed_fence *tf = from_timer(tf, t, timer);
+       struct timed_fence *tf = timer_container_of(tf, t, timer);
 
        i915_sw_fence_commit(&tf->fence);
 }
 
 
 static void mtk_dp_debounce_timer(struct timer_list *t)
 {
-       struct mtk_dp *mtk_dp = from_timer(mtk_dp, t, debounce_timer);
+       struct mtk_dp *mtk_dp = timer_container_of(mtk_dp, t, debounce_timer);
 
        mtk_dp->need_debounce = true;
 }
 
 
 static void a5xx_preempt_timer(struct timer_list *t)
 {
-       struct a5xx_gpu *a5xx_gpu = from_timer(a5xx_gpu, t, preempt_timer);
+       struct a5xx_gpu *a5xx_gpu = timer_container_of(a5xx_gpu, t,
+                                                      preempt_timer);
        struct msm_gpu *gpu = &a5xx_gpu->base.base;
        struct drm_device *dev = gpu->dev;
 
 
 
 static void a6xx_preempt_timer(struct timer_list *t)
 {
-       struct a6xx_gpu *a6xx_gpu = from_timer(a6xx_gpu, t, preempt_timer);
+       struct a6xx_gpu *a6xx_gpu = timer_container_of(a6xx_gpu, t,
+                                                      preempt_timer);
        struct msm_gpu *gpu = &a6xx_gpu->base.base;
        struct drm_device *dev = gpu->dev;
 
 
 
 static void dpu_encoder_frame_done_timeout(struct timer_list *t)
 {
-       struct dpu_encoder_virt *dpu_enc = from_timer(dpu_enc, t,
-                       frame_done_timer);
+       struct dpu_encoder_virt *dpu_enc = timer_container_of(dpu_enc, t,
+                                                             frame_done_timer);
        struct drm_encoder *drm_enc = &dpu_enc->base;
        u32 event;
 
 
 
 static void hangcheck_handler(struct timer_list *t)
 {
-       struct msm_gpu *gpu = from_timer(gpu, t, hangcheck_timer);
+       struct msm_gpu *gpu = timer_container_of(gpu, t, hangcheck_timer);
        struct drm_device *dev = gpu->dev;
        struct msm_ringbuffer *ring = gpu->funcs->active_ring(gpu);
        uint32_t fence = ring->memptrs->fence;
 
 
 static void signal_for_ttm_bo_reserve(struct timer_list *t)
 {
-       struct signal_timer *s_timer = from_timer(s_timer, t, timer);
+       struct signal_timer *s_timer = timer_container_of(s_timer, t, timer);
        struct task_struct *task = s_timer->ctx->task;
 
        do_send_sig_info(SIGTERM, SEND_SIG_PRIV, task, PIDTYPE_PID);
 
 
 static void vc4_bo_cache_time_timer(struct timer_list *t)
 {
-       struct vc4_dev *vc4 = from_timer(vc4, t, bo_cache.time_timer);
+       struct vc4_dev *vc4 = timer_container_of(vc4, t, bo_cache.time_timer);
 
        schedule_work(&vc4->bo_cache.time_work);
 }
 
 static void
 vc4_hangcheck_elapsed(struct timer_list *t)
 {
-       struct vc4_dev *vc4 = from_timer(vc4, t, hangcheck.timer);
+       struct vc4_dev *vc4 = timer_container_of(vc4, t, hangcheck.timer);
        struct drm_device *dev = &vc4->base;
        uint32_t ct0ca, ct1ca;
        unsigned long irqflags;
 
 
 static void vgem_fence_timeout(struct timer_list *t)
 {
-       struct vgem_fence *fence = from_timer(fence, t, timer);
+       struct vgem_fence *fence = timer_container_of(fence, t, timer);
 
        dma_fence_signal(&fence->base);
 }
 
 
 static void gb_operation_timeout(struct timer_list *t)
 {
-       struct gb_operation *operation = from_timer(operation, t, timer);
+       struct gb_operation *operation = timer_container_of(operation, t,
+                                                           timer);
 
        if (gb_operation_result_set(operation, -ETIMEDOUT)) {
                /*
 
 
 static void apple_battery_timer_tick(struct timer_list *t)
 {
-       struct apple_sc *asc = from_timer(asc, t, battery_timer);
+       struct apple_sc *asc = timer_container_of(asc, t, battery_timer);
        struct hid_device *hdev = asc->hdev;
 
        if (apple_fetch_battery(hdev) == 0) {
 
 
 static void key_up_tick(struct timer_list *t)
 {
-       struct appleir *appleir = from_timer(appleir, t, key_up_timer);
+       struct appleir *appleir = timer_container_of(appleir, t, key_up_timer);
        struct hid_device *hid = appleir->hid;
        unsigned long flags;
 
 
 
 static void appletb_inactivity_timer(struct timer_list *t)
 {
-       struct appletb_kbd *kbd = from_timer(kbd, t, inactivity_timer);
+       struct appletb_kbd *kbd = timer_container_of(kbd, t, inactivity_timer);
 
        if (kbd->backlight_dev && appletb_tb_autodim) {
                if (!kbd->has_dimmed) {
 
 
 static void letsketch_inrange_timeout(struct timer_list *t)
 {
-       struct letsketch_data *data = from_timer(data, t, inrange_timer);
+       struct letsketch_data *data = timer_container_of(data, t,
+                                                        inrange_timer);
        struct input_dev *input = data->input_tablet;
 
        input_report_key(input, BTN_TOOL_PEN, 0);
 
 
 static void magicmouse_battery_timer_tick(struct timer_list *t)
 {
-       struct magicmouse_sc *msc = from_timer(msc, t, battery_timer);
+       struct magicmouse_sc *msc = timer_container_of(msc, t, battery_timer);
        struct hid_device *hdev = msc->hdev;
 
        if (magicmouse_fetch_battery(hdev) == 0) {
 
 
 static void mt_expired_timeout(struct timer_list *t)
 {
-       struct mt_device *td = from_timer(td, t, release_timer);
+       struct mt_device *td = timer_container_of(td, t, release_timer);
        struct hid_device *hdev = td->hdev;
 
        /*
 
 
 static void pcmidi_sustained_note_release(struct timer_list *t)
 {
-       struct pcmidi_sustain *pms = from_timer(pms, t, timer);
+       struct pcmidi_sustain *pms = timer_container_of(pms, t, timer);
 
        pcmidi_send_note(pms->pm, pms->status, pms->note, pms->velocity);
        pms->in_use = 0;
 
 static void ghl_magic_poke(struct timer_list *t)
 {
        int ret;
-       struct sony_sc *sc = from_timer(sc, t, ghl_poke_timer);
+       struct sony_sc *sc = timer_container_of(sc, t, ghl_poke_timer);
 
        ret = usb_submit_urb(sc->ghl_urb, GFP_ATOMIC);
        if (ret < 0)
 
  */
 static void uclogic_inrange_timeout(struct timer_list *t)
 {
-       struct uclogic_drvdata *drvdata = from_timer(drvdata, t,
-                                                       inrange_timer);
+       struct uclogic_drvdata *drvdata = timer_container_of(drvdata, t,
+                                                            inrange_timer);
        struct input_dev *input = drvdata->pen_input;
 
        if (input == NULL)
 
 
 static void wiimote_init_timeout(struct timer_list *t)
 {
-       struct wiimote_data *wdata = from_timer(wdata, t, timer);
+       struct wiimote_data *wdata = timer_container_of(wdata, t, timer);
 
        wiimote_schedule(wdata);
 }
 
 /* I/O retry timer routine */
 static void hid_retry_timeout(struct timer_list *t)
 {
-       struct usbhid_device *usbhid = from_timer(usbhid, t, io_retry);
+       struct usbhid_device *usbhid = timer_container_of(usbhid, t, io_retry);
        struct hid_device *hid = usbhid->hid;
 
        dev_dbg(&usbhid->intf->dev, "retrying intr urb\n");
 
 
 void wacom_idleprox_timeout(struct timer_list *list)
 {
-       struct wacom *wacom = from_timer(wacom, list, idleprox_timer);
+       struct wacom *wacom = timer_container_of(wacom, list, idleprox_timer);
        struct wacom_wac *wacom_wac = &wacom->wacom_wac;
 
        if (!wacom_wac->hid_data.sense_state) {
 
 
 static void ssip_keep_alive(struct timer_list *t)
 {
-       struct ssi_protocol *ssi = from_timer(ssi, t, keep_alive);
+       struct ssi_protocol *ssi = timer_container_of(ssi, t, keep_alive);
        struct hsi_client *cl = ssi->cl;
 
        dev_dbg(&cl->device, "Keep alive kick in: m(%d) r(%d) s(%d)\n",
 
 static void ssip_rx_wd(struct timer_list *t)
 {
-       struct ssi_protocol *ssi = from_timer(ssi, t, rx_wd);
+       struct ssi_protocol *ssi = timer_container_of(ssi, t, rx_wd);
        struct hsi_client *cl = ssi->cl;
 
        dev_err(&cl->device, "Watchdog triggered\n");
 
 static void ssip_tx_wd(struct timer_list *t)
 {
-       struct ssi_protocol *ssi = from_timer(ssi, t, tx_wd);
+       struct ssi_protocol *ssi = timer_container_of(ssi, t, tx_wd);
        struct hsi_client *cl = ssi->cl;
 
        dev_err(&cl->device, "Watchdog triggered\n");
 
        struct npcm7xx_pwm_fan_data *data;
        int i;
 
-       data = from_timer(data, t, fan_timer);
+       data = timer_container_of(data, t, fan_timer);
 
        /*
         * Polling two module per one round,
 
 
 static void sample_timer(struct timer_list *t)
 {
-       struct pwm_fan_ctx *ctx = from_timer(ctx, t, rpm_timer);
+       struct pwm_fan_ctx *ctx = timer_container_of(ctx, t, rpm_timer);
        unsigned int delta = ktime_ms_delta(ktime_get(), ctx->sample_start);
        int i;
 
 
  */
 static void img_i2c_check_timer(struct timer_list *t)
 {
-       struct img_i2c *i2c = from_timer(i2c, t, check_timer);
+       struct img_i2c *i2c = timer_container_of(i2c, t, check_timer);
        unsigned long flags;
        unsigned int line_status;
 
 
 
 static void ssp_wdt_timer_func(struct timer_list *t)
 {
-       struct ssp_data *data = from_timer(data, t, wdt_timer);
+       struct ssp_data *data = timer_container_of(data, t, wdt_timer);
 
        switch (data->fw_dl_state) {
        case SSP_FW_DL_STATE_FAIL:
 
 
 static void ep_timeout(struct timer_list *t)
 {
-       struct c4iw_ep *ep = from_timer(ep, t, timer);
+       struct c4iw_ep *ep = timer_container_of(ep, t, timer);
        int kickit = 0;
 
        spin_lock(&timeout_lock);
 
 /* Timer function for re-enabling ASPM in the absence of interrupt activity */
 static  void aspm_ctx_timer_function(struct timer_list *t)
 {
-       struct hfi1_ctxtdata *rcd = from_timer(rcd, t, aspm_timer);
+       struct hfi1_ctxtdata *rcd = timer_container_of(rcd, t, aspm_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&rcd->aspm_lock, flags);
 
 #define RCVERR_CHECK_TIME 10
 static void update_rcverr_timer(struct timer_list *t)
 {
-       struct hfi1_devdata *dd = from_timer(dd, t, rcverr_timer);
+       struct hfi1_devdata *dd = timer_container_of(dd, t, rcverr_timer);
        struct hfi1_pportdata *ppd = dd->pport;
        u32 cur_ovfl_cnt = read_dev_cntr(dd, C_RCV_OVF, CNTR_INVALID_VL);
 
 
 static void update_synth_timer(struct timer_list *t)
 {
-       struct hfi1_devdata *dd = from_timer(dd, t, synth_stats_timer);
+       struct hfi1_devdata *dd = timer_container_of(dd, t, synth_stats_timer);
 
        queue_work(dd->update_cntr_wq, &dd->update_cntr_work);
        mod_timer(&dd->synth_stats_timer, jiffies + HZ * SYNTH_CNT_TIME);
 
 
 static void run_led_override(struct timer_list *t)
 {
-       struct hfi1_pportdata *ppd = from_timer(ppd, t, led_override_timer);
+       struct hfi1_pportdata *ppd = timer_container_of(ppd, t,
+                                                       led_override_timer);
        struct hfi1_devdata *dd = ppd->dd;
        unsigned long timeout;
        int phase_idx;
 
 
 void hfi1_handle_trap_timer(struct timer_list *t)
 {
-       struct hfi1_ibport *ibp = from_timer(ibp, t, rvp.trap_timer);
+       struct hfi1_ibport *ibp = timer_container_of(ibp, t, rvp.trap_timer);
        struct trap_node *trap = NULL;
        unsigned long flags;
        int i;
 
 static void sdma_err_progress_check(struct timer_list *t)
 {
        unsigned index;
-       struct sdma_engine *sde = from_timer(sde, t, err_progress_check_timer);
+       struct sdma_engine *sde = timer_container_of(sde, t,
+                                                    err_progress_check_timer);
 
        dd_dev_err(sde->dd, "SDE progress check event\n");
        for (index = 0; index < sde->dd->num_sdma; index++) {
 
 
 static void hfi1_tid_timeout(struct timer_list *t)
 {
-       struct hfi1_qp_priv *qpriv = from_timer(qpriv, t, s_tid_timer);
+       struct hfi1_qp_priv *qpriv = timer_container_of(qpriv, t, s_tid_timer);
        struct rvt_qp *qp = qpriv->owner;
        struct rvt_dev_info *rdi = ib_to_rvt(qp->ibqp.device);
        unsigned long flags;
 
 static void hfi1_tid_retry_timeout(struct timer_list *t)
 {
-       struct hfi1_qp_priv *priv = from_timer(priv, t, s_tid_retry_timer);
+       struct hfi1_qp_priv *priv = timer_container_of(priv, t,
+                                                      s_tid_retry_timer);
        struct rvt_qp *qp = priv->owner;
        struct rvt_swqe *wqe;
        unsigned long flags;
 
  */
 static void mem_timer(struct timer_list *t)
 {
-       struct hfi1_ibdev *dev = from_timer(dev, t, mem_timer);
+       struct hfi1_ibdev *dev = timer_container_of(dev, t, mem_timer);
        struct list_head *list = &dev->memwait;
        struct rvt_qp *qp = NULL;
        struct iowait *wait;
 
        struct irdma_timer_entry *send_entry, *close_entry;
        struct list_head *list_core_temp;
        struct list_head *list_node;
-       struct irdma_cm_core *cm_core = from_timer(cm_core, t, tcp_timer);
+       struct irdma_cm_core *cm_core = timer_container_of(cm_core, t,
+                                                          tcp_timer);
        struct irdma_sc_vsi *vsi;
        u32 settimer = 0;
        unsigned long timetosend;
 
 
 static void irdma_terminate_timeout(struct timer_list *t)
 {
-       struct irdma_qp *iwqp = from_timer(iwqp, t, terminate_timer);
+       struct irdma_qp *iwqp = timer_container_of(iwqp, t, terminate_timer);
        struct irdma_sc_qp *qp = &iwqp->sc_qp;
 
        irdma_terminate_done(qp, 1);
 static void irdma_hw_stats_timeout(struct timer_list *t)
 {
        struct irdma_vsi_pestat *pf_devstat =
-               from_timer(pf_devstat, t, stats_timer);
+               timer_container_of(pf_devstat, t, stats_timer);
        struct irdma_sc_vsi *sc_vsi = pf_devstat->vsi;
 
        if (sc_vsi->dev->hw_attrs.uk_attrs.hw_rev >= IRDMA_GEN_2)
 
 
 static void delay_time_func(struct timer_list *t)
 {
-       struct mlx5_ib_dev *dev = from_timer(dev, t, delay_timer);
+       struct mlx5_ib_dev *dev = timer_container_of(dev, t, delay_timer);
 
        WRITE_ONCE(dev->fill_delay, 0);
 }
 
 
 static void poll_catas(struct timer_list *t)
 {
-       struct mthca_dev *dev = from_timer(dev, t, catas_err.timer);
+       struct mthca_dev *dev = timer_container_of(dev, t, catas_err.timer);
        int i;
 
        for (i = 0; i < dev->catas_err.size; ++i)
 
 
 static void qib_run_led_override(struct timer_list *t)
 {
-       struct qib_pportdata *ppd = from_timer(ppd, t,
-                                                   led_override_timer);
+       struct qib_pportdata *ppd = timer_container_of(ppd, t,
+                                                      led_override_timer);
        struct qib_devdata *dd = ppd->dd;
        int timeoff;
        int ph_idx;
 
  */
 static void qib_get_6120_faststats(struct timer_list *t)
 {
-       struct qib_devdata *dd = from_timer(dd, t, stats_timer);
+       struct qib_devdata *dd = timer_container_of(dd, t, stats_timer);
        struct qib_pportdata *ppd = dd->pport;
        unsigned long flags;
        u64 traffic_wds;
 
 static void pma_6120_timer(struct timer_list *t)
 {
-       struct qib_chip_specific *cs = from_timer(cs, t, pma_timer);
+       struct qib_chip_specific *cs = timer_container_of(cs, t, pma_timer);
        struct qib_pportdata *ppd = cs->ppd;
        struct qib_ibport *ibp = &ppd->ibport_data;
        unsigned long flags;
 
 
 static void reenable_7220_chase(struct timer_list *t)
 {
-       struct qib_chippport_specific *cpspec = from_timer(cpspec, t,
-                                                        chase_timer);
+       struct qib_chippport_specific *cpspec = timer_container_of(cpspec, t,
+                                                                  chase_timer);
        struct qib_pportdata *ppd = &cpspec->pportdata;
 
        ppd->cpspec->chase_timer.expires = 0;
  */
 static void qib_get_7220_faststats(struct timer_list *t)
 {
-       struct qib_devdata *dd = from_timer(dd, t, stats_timer);
+       struct qib_devdata *dd = timer_container_of(dd, t, stats_timer);
        struct qib_pportdata *ppd = dd->pport;
        unsigned long flags;
        u64 traffic_wds;
 
 
 static void reenable_chase(struct timer_list *t)
 {
-       struct qib_chippport_specific *cp = from_timer(cp, t, chase_timer);
+       struct qib_chippport_specific *cp = timer_container_of(cp, t,
+                                                              chase_timer);
        struct qib_pportdata *ppd = cp->ppd;
 
        ppd->cpspec->chase_timer.expires = 0;
  */
 static void qib_get_7322_faststats(struct timer_list *t)
 {
-       struct qib_devdata *dd = from_timer(dd, t, stats_timer);
+       struct qib_devdata *dd = timer_container_of(dd, t, stats_timer);
        struct qib_pportdata *ppd;
        unsigned long flags;
        u64 traffic_wds;
 
 
 static void verify_interrupt(struct timer_list *t)
 {
-       struct qib_devdata *dd = from_timer(dd, t, intrchk_timer);
+       struct qib_devdata *dd = timer_container_of(dd, t, intrchk_timer);
        u64 int_counter;
 
        if (!dd)
 
 
 void qib_clear_symerror_on_linkup(struct timer_list *t)
 {
-       struct qib_pportdata *ppd = from_timer(ppd, t, symerr_clear_timer);
+       struct qib_pportdata *ppd = timer_container_of(ppd, t,
+                                                      symerr_clear_timer);
 
        if (ppd->lflags & QIBL_LINKACTIVE)
                return;
 
 
 static void xmit_wait_timer_func(struct timer_list *t)
 {
-       struct qib_pportdata *ppd = from_timer(ppd, t, cong_stats.timer);
+       struct qib_pportdata *ppd = timer_container_of(ppd, t,
+                                                      cong_stats.timer);
        struct qib_devdata *dd = dd_from_ppd(ppd);
        unsigned long flags;
        u8 status;
 
 
 static void qib_run_relock(struct timer_list *t)
 {
-       struct qib_chip_specific *cs = from_timer(cs, t, relock_timer);
+       struct qib_chip_specific *cs = timer_container_of(cs, t, relock_timer);
        struct qib_devdata *dd = cs->dd;
        struct qib_pportdata *ppd = dd->pport;
        int timeoff;
 
  */
 void qib_hol_event(struct timer_list *t)
 {
-       struct qib_pportdata *ppd = from_timer(ppd, t, hol_timer);
+       struct qib_pportdata *ppd = timer_container_of(ppd, t, hol_timer);
 
        /* If hardware error, etc, skip. */
        if (!(ppd->dd->flags & QIB_INITTED))
 
  */
 static void mem_timer(struct timer_list *t)
 {
-       struct qib_ibdev *dev = from_timer(dev, t, mem_timer);
+       struct qib_ibdev *dev = timer_container_of(dev, t, mem_timer);
        struct list_head *list = &dev->memwait;
        struct rvt_qp *qp = NULL;
        struct qib_qp_priv *priv = NULL;
 
  */
 static void rvt_rc_timeout(struct timer_list *t)
 {
-       struct rvt_qp *qp = from_timer(qp, t, s_timer);
+       struct rvt_qp *qp = timer_container_of(qp, t, s_timer);
        struct rvt_dev_info *rdi = ib_to_rvt(qp->ibqp.device);
        unsigned long flags;
 
 
 
 void retransmit_timer(struct timer_list *t)
 {
-       struct rxe_qp *qp = from_timer(qp, t, retrans_timer);
+       struct rxe_qp *qp = timer_container_of(qp, t, retrans_timer);
        unsigned long flags;
 
        rxe_dbg_qp(qp, "retransmit timer fired\n");
 
 
 void rnr_nak_timer(struct timer_list *t)
 {
-       struct rxe_qp *qp = from_timer(qp, t, rnr_nak_timer);
+       struct rxe_qp *qp = timer_container_of(qp, t, rnr_nak_timer);
        unsigned long flags;
 
        rxe_dbg_qp(qp, "nak timer fired\n");
 
 
 static void ml_effect_timer(struct timer_list *t)
 {
-       struct ml_device *ml = from_timer(ml, t, timer);
+       struct ml_device *ml = timer_container_of(ml, t, timer);
        struct input_dev *dev = ml->dev;
 
        pr_debug("timer: updating effects\n");
 
 
 static void gameport_run_poll_handler(struct timer_list *t)
 {
-       struct gameport *gameport = from_timer(gameport, t, poll_timer);
+       struct gameport *gameport = timer_container_of(gameport, t,
+                                                      poll_timer);
 
        gameport->poll_handler(gameport);
        if (gameport->poll_cnt)
 
  */
 static void input_repeat_key(struct timer_list *t)
 {
-       struct input_dev *dev = from_timer(dev, t, timer);
+       struct input_dev *dev = timer_container_of(dev, t, timer);
 
        guard(spinlock_irqsave)(&dev->event_lock);
 
 
 
 static void db9_timer(struct timer_list *t)
 {
-       struct db9 *db9 = from_timer(db9, t, timer);
+       struct db9 *db9 = timer_container_of(db9, t, timer);
        struct parport *port = db9->pd->port;
        struct input_dev *dev = db9->dev[0];
        struct input_dev *dev2 = db9->dev[1];
 
 
 static void gc_timer(struct timer_list *t)
 {
-       struct gc *gc = from_timer(gc, t, timer);
+       struct gc *gc = timer_container_of(gc, t, timer);
 
 /*
  * N64 pads - must be read first, any read confuses them for 200 us
 
 
 static void tgfx_timer(struct timer_list *t)
 {
-       struct tgfx *tgfx = from_timer(tgfx, t, timer);
+       struct tgfx *tgfx = timer_container_of(tgfx, t, timer);
        struct input_dev *dev;
        int data1, data2, i;
 
 
  */
 static void imx_keypad_check_for_events(struct timer_list *t)
 {
-       struct imx_keypad *keypad = from_timer(keypad, t, check_matrix_timer);
+       struct imx_keypad *keypad = timer_container_of(keypad, t,
+                                                      check_matrix_timer);
        unsigned short matrix_volatile_state[MAX_MATRIX_KEY_COLS];
        unsigned short reg_val;
        bool state_changed, is_zero_matrix;
 
  */
 static void locomokbd_timer_callback(struct timer_list *t)
 {
-       struct locomokbd *locomokbd = from_timer(locomokbd, t, timer);
+       struct locomokbd *locomokbd = timer_container_of(locomokbd, t, timer);
 
        locomokbd_scankeyboard(locomokbd);
 }
 
 
 static void imx_imx_snvs_check_for_events(struct timer_list *t)
 {
-       struct pwrkey_drv_data *pdata = from_timer(pdata, t, check_timer);
+       struct pwrkey_drv_data *pdata = timer_container_of(pdata, t,
+                                                          check_timer);
        struct input_dev *input = pdata->input;
        u32 state;
 
 
 
 static void tegra_kbc_keypress_timer(struct timer_list *t)
 {
-       struct tegra_kbc *kbc = from_timer(kbc, t, timer);
+       struct tegra_kbc *kbc = timer_container_of(kbc, t, timer);
        u32 val;
        unsigned int i;
 
 
 
 static void bbnsm_pwrkey_check_for_events(struct timer_list *t)
 {
-       struct bbnsm_pwrkey *bbnsm = from_timer(bbnsm, t, check_timer);
+       struct bbnsm_pwrkey *bbnsm = timer_container_of(bbnsm, t, check_timer);
        struct input_dev *input = bbnsm->input;
        u32 state;
 
 
 
 static void alps_flush_packet(struct timer_list *t)
 {
-       struct alps_data *priv = from_timer(priv, t, timer);
+       struct alps_data *priv = timer_container_of(priv, t, timer);
        struct psmouse *psmouse = priv->psmouse;
 
        guard(serio_pause_rx)(psmouse->ps2dev.serio);
 
 
 static void byd_clear_touch(struct timer_list *t)
 {
-       struct byd_data *priv = from_timer(priv, t, timer);
+       struct byd_data *priv = timer_container_of(priv, t, timer);
        struct psmouse *psmouse = priv->psmouse;
 
        guard(serio_pause_rx)(psmouse->ps2dev.serio);
 
 
 static void ad7877_timer(struct timer_list *t)
 {
-       struct ad7877 *ts = from_timer(ts, t, timer);
+       struct ad7877 *ts = timer_container_of(ts, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&ts->lock, flags);
 
 
 static void ad7879_timer(struct timer_list *t)
 {
-       struct ad7879 *ts = from_timer(ts, t, timer);
+       struct ad7879 *ts = timer_container_of(ts, t, timer);
 
        ad7879_ts_event_release(ts);
 }
 
 
 static void bu21029_touch_release(struct timer_list *t)
 {
-       struct bu21029_ts_data *bu21029 = from_timer(bu21029, t, timer);
+       struct bu21029_ts_data *bu21029 = timer_container_of(bu21029, t,
+                                                            timer);
 
        input_report_abs(bu21029->in_dev, ABS_PRESSURE, 0);
        input_report_key(bu21029->in_dev, BTN_TOUCH, 0);
 
 
 static void exc3000_timer(struct timer_list *t)
 {
-       struct exc3000_data *data = from_timer(data, t, timer);
+       struct exc3000_data *data = timer_container_of(data, t, timer);
 
        input_mt_sync_frame(data->input);
        input_sync(data->input);
 
 
 static void sx865x_penrelease_timer_handler(struct timer_list *t)
 {
-       struct sx8654 *ts = from_timer(ts, t, timer);
+       struct sx8654 *ts = timer_container_of(ts, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&ts->lock, flags);
 
 
 static void tsc200x_penup_timer(struct timer_list *t)
 {
-       struct tsc200x *ts = from_timer(ts, t, penup_timer);
+       struct tsc200x *ts = timer_container_of(ts, t, penup_timer);
 
        guard(spinlock_irqsave)(&ts->lock);
        tsc200x_update_pen_state(ts, 0, 0, 0);
 
 
 static void fq_flush_timeout(struct timer_list *t)
 {
-       struct iommu_dma_cookie *cookie = from_timer(cookie, t, fq_timer);
+       struct iommu_dma_cookie *cookie = timer_container_of(cookie, t,
+                                                            fq_timer);
        int cpu;
 
        atomic_set(&cookie->fq_timer_on, 0);
 
 static void
 hfcpci_Timer(struct timer_list *t)
 {
-       struct hfc_pci *hc = from_timer(hc, t, hw.timer);
+       struct hfc_pci *hc = timer_container_of(hc, t, hw.timer);
        hc->hw.timer.expires = jiffies + 75;
        /* WD RESET */
 /*
 
 static void
 dbusy_timer_handler(struct timer_list *t)
 {
-       struct isac_hw *isac = from_timer(isac, t, dch.timer);
+       struct isac_hw *isac = timer_container_of(isac, t, dch.timer);
        int rbch, star;
        u_long flags;
 
 
 static void
 ftimer_handler(struct timer_list *t)
 {
-       struct isar_ch *ch = from_timer(ch, t, ftimer);
+       struct isar_ch *ch = timer_container_of(ch, t, ftimer);
 
        pr_debug("%s: ftimer flags %lx\n", ch->is->name, ch->bch.Flags);
        test_and_clear_bit(FLG_FTI_RUN, &ch->bch.Flags);
 
 static void
 dbusy_timer_handler(struct timer_list *t)
 {
-       struct dchannel *dch = from_timer(dch, t, timer);
+       struct dchannel *dch = timer_container_of(dch, t, timer);
        struct w6692_hw *card = dch->hw;
        int             rbch, star;
        u_long          flags;
 
 void
 dsp_tone_timeout(struct timer_list *t)
 {
-       struct dsp *dsp = from_timer(dsp, t, tone.tl);
+       struct dsp *dsp = timer_container_of(dsp, t, tone.tl);
        struct dsp_tone *tone = &dsp->tone;
        struct pattern *pat = (struct pattern *)tone->pattern;
        int index = tone->index;
 
 static void
 FsmExpireTimer(struct timer_list *t)
 {
-       struct FsmTimer *ft = from_timer(ft, t, tl);
+       struct FsmTimer *ft = timer_container_of(ft, t, tl);
 #if FSM_TIMER_DEBUG
        if (ft->fi->debug)
                ft->fi->printdebug(ft->fi, "FsmExpireTimer %lx", (long) ft);
 
 static void
 l1oip_keepalive(struct timer_list *t)
 {
-       struct l1oip *hc = from_timer(hc, t, keep_tl);
+       struct l1oip *hc = timer_container_of(hc, t, keep_tl);
 
        schedule_work(&hc->workq);
 }
 static void
 l1oip_timeout(struct timer_list *t)
 {
-       struct l1oip                    *hc = from_timer(hc, t,
-                                                                 timeout_tl);
+       struct l1oip                    *hc = timer_container_of(hc, t,
+                                                                    timeout_tl);
        struct dchannel         *dch = hc->chan[hc->d_idx].dch;
 
        if (debug & DEBUG_L1OIP_MSG)
 
 static void
 dev_expire_timer(struct timer_list *t)
 {
-       struct mISDNtimer *timer = from_timer(timer, t, tl);
+       struct mISDNtimer *timer = timer_container_of(timer, t, tl);
        u_long                  flags;
 
        spin_lock_irqsave(&timer->dev->lock, flags);
 
 
 static void rt8515_powerdown_timer(struct timer_list *t)
 {
-       struct rt8515 *rt = from_timer(rt, t, powerdown_timer);
+       struct rt8515 *rt = timer_container_of(rt, t, powerdown_timer);
 
        /* Turn the LED off */
        rt8515_gpio_led_off(rt);
 
 
 static void sgm3140_powerdown_timer(struct timer_list *t)
 {
-       struct sgm3140 *priv = from_timer(priv, t, powerdown_timer);
+       struct sgm3140 *priv = timer_container_of(priv, t, powerdown_timer);
 
        gpiod_set_value(priv->enable_gpio, 0);
        gpiod_set_value(priv->flash_gpio, 0);
 
 
 static void led_timer_function(struct timer_list *t)
 {
-       struct led_classdev *led_cdev = from_timer(led_cdev, t, blink_timer);
+       struct led_classdev *led_cdev = timer_container_of(led_cdev, t,
+                                                          blink_timer);
        unsigned long brightness;
        unsigned long delay;
 
 
 
 static void led_activity_function(struct timer_list *t)
 {
-       struct activity_data *activity_data = from_timer(activity_data, t,
-                                                        timer);
+       struct activity_data *activity_data = timer_container_of(activity_data,
+                                                                t, timer);
        struct led_classdev *led_cdev = activity_data->led_cdev;
        unsigned int target;
        unsigned int usage;
 
 static void led_heartbeat_function(struct timer_list *t)
 {
        struct heartbeat_trig_data *heartbeat_data =
-               from_timer(heartbeat_data, t, timer);
+               timer_container_of(heartbeat_data, t, timer);
        struct led_classdev *led_cdev;
        unsigned long brightness = LED_OFF;
        unsigned long delay = 0;
 
 
 static void pattern_trig_timer_function(struct timer_list *t)
 {
-       struct pattern_trig_data *data = from_timer(data, t, timer);
+       struct pattern_trig_data *data = timer_container_of(data, t, timer);
 
        return pattern_trig_timer_common_function(data);
 }
 
 static void transient_timer_function(struct timer_list *t)
 {
        struct transient_trig_data *transient_data =
-               from_timer(transient_data, t, timer);
+               timer_container_of(transient_data, t, timer);
        struct led_classdev *led_cdev = transient_data->led_cdev;
 
        transient_data->activate = 0;
 
 
 static void altera_mbox_poll_rx(struct timer_list *t)
 {
-       struct altera_mbox *mbox = from_timer(mbox, t, rxpoll_timer);
+       struct altera_mbox *mbox = timer_container_of(mbox, t, rxpoll_timer);
 
        altera_mbox_rx_data(mbox->chan);
 
 
 
 static void scale_accounting(struct timer_list *t)
 {
-       struct cache_accounting *acc = from_timer(acc, t, timer);
+       struct cache_accounting *acc = timer_container_of(acc, t, timer);
 
 #define move_stat(name) do {                                           \
        unsigned int t = atomic_xchg(&acc->collector.name, 0);          \
 
 
 static void handle_delayed_timer(struct timer_list *t)
 {
-       struct delay_c *dc = from_timer(dc, t, delay_timer);
+       struct delay_c *dc = timer_container_of(dc, t, delay_timer);
 
        queue_work(dc->kdelayd_wq, &dc->flush_expired_bios);
 }
 
 
 static void autocommit_fn(struct timer_list *t)
 {
-       struct dm_integrity_c *ic = from_timer(ic, t, autocommit_timer);
+       struct dm_integrity_c *ic = timer_container_of(ic, t,
+                                                      autocommit_timer);
 
        if (likely(!dm_integrity_failed(ic)))
                queue_work(ic->commit_wq, &ic->commit_work);
 
  */
 static void queue_if_no_path_timeout_work(struct timer_list *t)
 {
-       struct multipath *m = from_timer(m, t, nopath_timer);
+       struct multipath *m = timer_container_of(m, t, nopath_timer);
 
        DMWARN("queue_if_no_path timeout on %s, failing queued IO",
               dm_table_device_name(m->ti->table));
 
 
 static void delayed_wake_fn(struct timer_list *t)
 {
-       struct mirror_set *ms = from_timer(ms, t, timer);
+       struct mirror_set *ms = timer_container_of(ms, t, timer);
 
        clear_bit(0, &ms->timer_pending);
        wakeup_mirrord(ms);
 
 
 static void timeout_index_operations(struct timer_list *t)
 {
-       struct hash_zone *zone = from_timer(zone, t, timer);
+       struct hash_zone *zone = timer_container_of(zone, t, timer);
 
        if (change_timer_state(zone, DEDUPE_QUERY_TIMER_RUNNING,
                               DEDUPE_QUERY_TIMER_FIRED))
 
 
 static void writecache_max_age_timer(struct timer_list *t)
 {
-       struct dm_writecache *wc = from_timer(wc, t, max_age_timer);
+       struct dm_writecache *wc = timer_container_of(wc, t, max_age_timer);
 
        if (!dm_suspended(wc->ti) && !writecache_has_error(wc)) {
                queue_work(wc->writeback_wq, &wc->writeback_work);
 
 static void writecache_autocommit_timer(struct timer_list *t)
 {
-       struct dm_writecache *wc = from_timer(wc, t, autocommit_timer);
+       struct dm_writecache *wc = timer_container_of(wc, t, autocommit_timer);
 
        if (!writecache_has_error(wc))
                queue_work(wc->writeback_wq, &wc->flush_work);
 
 
 static void md_safemode_timeout(struct timer_list *t)
 {
-       struct mddev *mddev = from_timer(mddev, t, safemode_timer);
+       struct mddev *mddev = timer_container_of(mddev, t, safemode_timer);
 
        mddev->safemode = 1;
        if (mddev->external)
 
 
 void saa7146_buffer_timeout(struct timer_list *t)
 {
-       struct saa7146_dmaqueue *q = from_timer(q, t, timeout);
+       struct saa7146_dmaqueue *q = timer_container_of(q, t, timeout);
        struct saa7146_dev *dev = q->dev;
        unsigned long flags;
 
 
 
 static void vbi_read_timeout(struct timer_list *t)
 {
-       struct saa7146_vv *vv = from_timer(vv, t, vbi_read_timeout);
+       struct saa7146_vv *vv = timer_container_of(vv, t, vbi_read_timeout);
        struct saa7146_dev *dev = vv->vbi_dmaq.dev;
 
        DEB_VBI("dev:%p\n", dev);
 
 
 static void dvb_dmxdev_filter_timeout(struct timer_list *t)
 {
-       struct dmxdev_filter *dmxdevfilter = from_timer(dmxdevfilter, t, timer);
+       struct dmxdev_filter *dmxdevfilter = timer_container_of(dmxdevfilter,
+                                                               t, timer);
 
        dmxdevfilter->buffer.error = -ETIMEDOUT;
        spin_lock_irq(&dmxdevfilter->dev->lock);
 
 
 static void tc358743_irq_poll_timer(struct timer_list *t)
 {
-       struct tc358743_state *state = from_timer(state, t, timer);
+       struct tc358743_state *state = timer_container_of(state, t, timer);
        unsigned int msecs;
 
        schedule_work(&state->work_i2c_poll);
 
 
 static void chip_thread_wake(struct timer_list *t)
 {
-       struct CHIPSTATE *chip = from_timer(chip, t, wt);
+       struct CHIPSTATE *chip = timer_container_of(chip, t, wt);
        wake_up_process(chip->thread);
 }
 
 
 
 static void bttv_irq_timeout(struct timer_list *t)
 {
-       struct bttv *btv = from_timer(btv, t, timeout);
+       struct bttv *btv = timer_container_of(btv, t, timeout);
        struct bttv_buffer_set old,new;
        struct bttv_buffer *ovbi;
        struct bttv_buffer *item;
 
 
 static void bttv_input_timer(struct timer_list *t)
 {
-       struct bttv_ir *ir = from_timer(ir, t, timer);
+       struct bttv_ir *ir = timer_container_of(ir, t, timer);
        struct bttv *btv = ir->btv;
 
        if (btv->c.type == BTTV_BOARD_ENLTV_FM_2)
 
 static void bttv_rc5_timer_end(struct timer_list *t)
 {
-       struct bttv_ir *ir = from_timer(ir, t, timer);
+       struct bttv_ir *ir = timer_container_of(ir, t, timer);
        ktime_t tv;
        u32 gap, rc5, scancode;
        u8 toggle, command, system;
 
 
 void cx18_vb_timeout(struct timer_list *t)
 {
-       struct cx18_stream *s = from_timer(s, t, vb_timeout);
+       struct cx18_stream *s = timer_container_of(s, t, vb_timeout);
 
        /*
         * Return all of the buffers in error state, so the vbi/vid inode
 
 
 void ivtv_unfinished_dma(struct timer_list *t)
 {
-       struct ivtv *itv = from_timer(itv, t, dma_timer);
+       struct ivtv *itv = timer_container_of(itv, t, dma_timer);
 
        if (!test_bit(IVTV_F_I_DMA, &itv->i_flags))
                return;
 
 
 static void netup_unidvb_dma_timeout(struct timer_list *t)
 {
-       struct netup_dma *dma = from_timer(dma, t, timeout);
+       struct netup_dma *dma = timer_container_of(dma, t, timeout);
        struct netup_unidvb_dev *ndev = dma->ndev;
 
        dev_dbg(&ndev->pci_dev->dev, "%s()\n", __func__);
 
 
 void saa7134_buffer_timeout(struct timer_list *t)
 {
-       struct saa7134_dmaqueue *q = from_timer(q, t, timeout);
+       struct saa7134_dmaqueue *q = timer_container_of(q, t, timeout);
        struct saa7134_dev *dev = q->dev;
        unsigned long flags;
 
 
 
 static void saa7134_input_timer(struct timer_list *t)
 {
-       struct saa7134_card_ir *ir = from_timer(ir, t, timer);
+       struct saa7134_card_ir *ir = timer_container_of(ir, t, timer);
        struct saa7134_dev *dev = ir->dev->priv;
 
        build_key(dev);
 
  */
 static void tw686x_dma_delay(struct timer_list *t)
 {
-       struct tw686x_dev *dev = from_timer(dev, t, dma_delay_timer);
+       struct tw686x_dev *dev = timer_container_of(dev, t, dma_delay_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&dev->lock, flags);
 
 
 static void s5p_mfc_watchdog(struct timer_list *t)
 {
-       struct s5p_mfc_dev *dev = from_timer(dev, t, watchdog_timer);
+       struct s5p_mfc_dev *dev = timer_container_of(dev, t, watchdog_timer);
 
        if (test_bit(0, &dev->hw_lock))
                atomic_inc(&dev->watchdog_cnt);
 
 
 static void c8sectpfe_timer_interrupt(struct timer_list *t)
 {
-       struct c8sectpfei *fei = from_timer(fei, t, timer);
+       struct c8sectpfei *fei = timer_container_of(fei, t, timer);
        struct channel_info *channel;
        int chan_num;
 
 
 
 static void cadet_handler(struct timer_list *t)
 {
-       struct cadet *dev = from_timer(dev, t, readtimer);
+       struct cadet *dev = timer_container_of(dev, t, readtimer);
 
        /* Service the RDS fifo */
        if (mutex_trylock(&dev->lock)) {
 
 /* timer to simulate tx done interrupt */
 static void ene_tx_irqsim(struct timer_list *t)
 {
-       struct ene_device *dev = from_timer(dev, t, tx_sim_timer);
+       struct ene_device *dev = timer_container_of(dev, t, tx_sim_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&dev->hw_lock, flags);
 
 
 static void igorplugusb_timer(struct timer_list *t)
 {
-       struct igorplugusb *ir = from_timer(ir, t, timer);
+       struct igorplugusb *ir = timer_container_of(ir, t, timer);
 
        igorplugusb_cmd(ir, GET_INFRACODE);
 }
 
 /* timer function to end waiting for repeat. */
 static void img_ir_end_timer(struct timer_list *t)
 {
-       struct img_ir_priv *priv = from_timer(priv, t, hw.end_timer);
+       struct img_ir_priv *priv = timer_container_of(priv, t, hw.end_timer);
 
        spin_lock_irq(&priv->lock);
        img_ir_end_repeat(priv);
  */
 static void img_ir_suspend_timer(struct timer_list *t)
 {
-       struct img_ir_priv *priv = from_timer(priv, t, hw.suspend_timer);
+       struct img_ir_priv *priv = timer_container_of(priv, t,
+                                                     hw.suspend_timer);
 
        spin_lock_irq(&priv->lock);
        /*
 
  */
 static void img_ir_echo_timer(struct timer_list *t)
 {
-       struct img_ir_priv *priv = from_timer(priv, t, raw.timer);
+       struct img_ir_priv *priv = timer_container_of(priv, t, raw.timer);
 
        spin_lock_irq(&priv->lock);
 
 
  */
 static void imon_touch_display_timeout(struct timer_list *t)
 {
-       struct imon_context *ictx = from_timer(ictx, t, ttimer);
+       struct imon_context *ictx = timer_container_of(ictx, t, ttimer);
 
        if (ictx->display_type != IMON_DISPLAY_TYPE_VGA)
                return;
 
 
 static void mce_kbd_rx_timeout(struct timer_list *t)
 {
-       struct ir_raw_event_ctrl *raw = from_timer(raw, t, mce_kbd.rx_timeout);
+       struct ir_raw_event_ctrl *raw = timer_container_of(raw, t,
+                                                          mce_kbd.rx_timeout);
        unsigned char maskcode;
        unsigned long flags;
        int i;
 
  */
 static void ir_raw_edge_handle(struct timer_list *t)
 {
-       struct ir_raw_event_ctrl *raw = from_timer(raw, t, edge_handle);
+       struct ir_raw_event_ctrl *raw = timer_container_of(raw, t,
+                                                          edge_handle);
        struct rc_dev *dev = raw->dev;
        unsigned long flags;
        ktime_t interval;
 
  */
 static void ir_timer_keyup(struct timer_list *t)
 {
-       struct rc_dev *dev = from_timer(dev, t, timer_keyup);
+       struct rc_dev *dev = timer_container_of(dev, t, timer_keyup);
        unsigned long flags;
 
        /*
  */
 static void ir_timer_repeat(struct timer_list *t)
 {
-       struct rc_dev *dev = from_timer(dev, t, timer_repeat);
+       struct rc_dev *dev = timer_container_of(dev, t, timer_repeat);
        struct input_dev *input = dev->input_dev;
        unsigned long flags;
 
 
 
 static void au0828_bulk_timeout(struct timer_list *t)
 {
-       struct au0828_dev *dev = from_timer(dev, t, bulk_timeout);
+       struct au0828_dev *dev = timer_container_of(dev, t, bulk_timeout);
 
        dprintk(1, "%s called\n", __func__);
        dev->bulk_timeout_running = 0;
 
    such as tvtime from hanging) */
 static void au0828_vid_buffer_timeout(struct timer_list *t)
 {
-       struct au0828_dev *dev = from_timer(dev, t, vid_timeout);
+       struct au0828_dev *dev = timer_container_of(dev, t, vid_timeout);
        struct au0828_dmaqueue *dma_q = &dev->vidq;
        struct au0828_buffer *buf;
        unsigned char *vid_data;
 
 static void au0828_vbi_buffer_timeout(struct timer_list *t)
 {
-       struct au0828_dev *dev = from_timer(dev, t, vbi_timeout);
+       struct au0828_dev *dev = timer_container_of(dev, t, vbi_timeout);
        struct au0828_dmaqueue *dma_q = &dev->vbiq;
        struct au0828_buffer *buf;
        unsigned char *vbi_data;
 
 
 static void pvr2_ctl_timeout(struct timer_list *t)
 {
-       struct hdw_timer *timer = from_timer(timer, t, timer);
+       struct hdw_timer *timer = timer_container_of(timer, t, timer);
        struct pvr2_hdw *hdw = timer->hdw;
 
        if (hdw->ctl_write_pend_flag || hdw->ctl_read_pend_flag) {
 /* Timeout function for quiescent timer. */
 static void pvr2_hdw_quiescent_timeout(struct timer_list *t)
 {
-       struct pvr2_hdw *hdw = from_timer(hdw, t, quiescent_timer);
+       struct pvr2_hdw *hdw = timer_container_of(hdw, t, quiescent_timer);
        hdw->state_decoder_quiescent = !0;
        trace_stbit("state_decoder_quiescent",hdw->state_decoder_quiescent);
        hdw->state_stale = !0;
 /* Timeout function for decoder stabilization timer. */
 static void pvr2_hdw_decoder_stabilization_timeout(struct timer_list *t)
 {
-       struct pvr2_hdw *hdw = from_timer(hdw, t, decoder_stabilization_timer);
+       struct pvr2_hdw *hdw = timer_container_of(hdw, t,
+                                                 decoder_stabilization_timer);
        hdw->state_decoder_ready = !0;
        trace_stbit("state_decoder_ready", hdw->state_decoder_ready);
        hdw->state_stale = !0;
 /* Timeout function for encoder wait timer. */
 static void pvr2_hdw_encoder_wait_timeout(struct timer_list *t)
 {
-       struct pvr2_hdw *hdw = from_timer(hdw, t, encoder_wait_timer);
+       struct pvr2_hdw *hdw = timer_container_of(hdw, t, encoder_wait_timer);
        hdw->state_encoder_waitok = !0;
        trace_stbit("state_encoder_waitok",hdw->state_encoder_waitok);
        hdw->state_stale = !0;
 /* Timeout function for encoder run timer. */
 static void pvr2_hdw_encoder_run_timeout(struct timer_list *t)
 {
-       struct pvr2_hdw *hdw = from_timer(hdw, t, encoder_run_timer);
+       struct pvr2_hdw *hdw = timer_container_of(hdw, t, encoder_run_timer);
        if (!hdw->state_encoder_runok) {
                hdw->state_encoder_runok = !0;
                trace_stbit("state_encoder_runok",hdw->state_encoder_runok);
 
  */
 static void s2255_timer(struct timer_list *t)
 {
-       struct s2255_dev *dev = from_timer(dev, t, timer);
+       struct s2255_dev *dev = timer_container_of(dev, t, timer);
        struct s2255_fw *data = dev->fw_data;
        if (usb_submit_urb(data->fw_urb, GFP_ATOMIC) < 0) {
                pr_err("s2255: can't submit urb\n");
 
 
 static void tegra210_emc_train(struct timer_list *timer)
 {
-       struct tegra210_emc *emc = from_timer(emc, timer, training);
+       struct tegra210_emc *emc = timer_container_of(emc, timer, training);
        unsigned long flags;
 
        if (!emc->last)
 
 static void tegra210_emc_poll_refresh(struct timer_list *timer)
 {
-       struct tegra210_emc *emc = from_timer(emc, timer, refresh_timer);
+       struct tegra210_emc *emc = timer_container_of(emc, timer,
+                                                     refresh_timer);
        unsigned int temperature;
 
        if (!emc->debugfs.temperature)
 
 
 static void msb_cache_flush_timer(struct timer_list *t)
 {
-       struct msb_data *msb = from_timer(msb, t, cache_flush_timer);
+       struct msb_data *msb = timer_container_of(msb, t, cache_flush_timer);
 
        msb->need_flush_cache = true;
        queue_work(msb->io_queue, &msb->io_work);
 
 
 static void jmb38x_ms_abort(struct timer_list *t)
 {
-       struct jmb38x_ms_host *host = from_timer(host, t, timer);
+       struct jmb38x_ms_host *host = timer_container_of(host, t, timer);
        struct memstick_host *msh = host->msh;
        unsigned long flags;
 
 
 /* Timer routine that fires 1 second after last card detection event, */
 static void r592_detect_timer(struct timer_list *t)
 {
-       struct r592_device *dev = from_timer(dev, t, detect_timer);
+       struct r592_device *dev = timer_container_of(dev, t, detect_timer);
        r592_update_card_detect(dev);
        memstick_detect_change(dev->host);
 }
 
 
 static void tifm_ms_abort(struct timer_list *t)
 {
-       struct tifm_ms *host = from_timer(host, t, timer);
+       struct tifm_ms *host = timer_container_of(host, t, timer);
 
        dev_dbg(&host->dev->dev, "status %x\n",
                readl(host->dev->addr + SOCK_MS_STATUS));
 
 
 static void bcm_vk_tty_poll(struct timer_list *t)
 {
-       struct bcm_vk *vk = from_timer(vk, t, serial_timer);
+       struct bcm_vk *vk = timer_container_of(vk, t, serial_timer);
 
        queue_work(vk->tty_wq_thread, &vk->tty_wq_work);
        mod_timer(&vk->serial_timer, jiffies + SERIAL_TIMER_VALUE);
 
 
 static void rtsx_usb_sg_timed_out(struct timer_list *t)
 {
-       struct rtsx_ucr *ucr = from_timer(ucr, t, sg_timer);
+       struct rtsx_ucr *ucr = timer_container_of(ucr, t, sg_timer);
 
        dev_dbg(&ucr->pusb_intf->dev, "%s: sg transfer timed out", __func__);
        usb_sg_cancel(&ucr->current_sg);
 
 static void
 xpc_timeout_partition_disengage(struct timer_list *t)
 {
-       struct xpc_partition *part = from_timer(part, t, disengage_timer);
+       struct xpc_partition *part = timer_container_of(part, t,
+                                                       disengage_timer);
 
        DBUG_ON(time_is_after_jiffies(part->disengage_timeout));
 
 
 
 static void mmc_retune_timer(struct timer_list *t)
 {
-       struct mmc_host *host = from_timer(host, t, retune_timer);
+       struct mmc_host *host = timer_container_of(host, t, retune_timer);
 
        mmc_retune_needed(host);
 }
 
 
 static void atmci_timeout_timer(struct timer_list *t)
 {
-       struct atmel_mci *host = from_timer(host, t, timer);
+       struct atmel_mci *host = timer_container_of(host, t, timer);
        struct device *dev = host->dev;
 
        dev_dbg(dev, "software timeout\n");
 
 static void atmci_detect_change(struct timer_list *t)
 {
-       struct atmel_mci_slot   *slot = from_timer(slot, t, detect_timer);
+       struct atmel_mci_slot   *slot = timer_container_of(slot, t,
+                                                               detect_timer);
        bool                    present;
        bool                    present_old;
 
 
 
 static void dw_mci_cmd11_timer(struct timer_list *t)
 {
-       struct dw_mci *host = from_timer(host, t, cmd11_timer);
+       struct dw_mci *host = timer_container_of(host, t, cmd11_timer);
 
        if (host->state != STATE_SENDING_CMD11) {
                dev_warn(host->dev, "Unexpected CMD11 timeout\n");
 
 static void dw_mci_cto_timer(struct timer_list *t)
 {
-       struct dw_mci *host = from_timer(host, t, cto_timer);
+       struct dw_mci *host = timer_container_of(host, t, cto_timer);
        unsigned long irqflags;
        u32 pending;
 
 
 static void dw_mci_dto_timer(struct timer_list *t)
 {
-       struct dw_mci *host = from_timer(host, t, dto_timer);
+       struct dw_mci *host = timer_container_of(host, t, dto_timer);
        unsigned long irqflags;
        u32 pending;
 
 
 
 static void jz4740_mmc_timeout(struct timer_list *t)
 {
-       struct jz4740_mmc_host *host = from_timer(host, t, timeout_timer);
+       struct jz4740_mmc_host *host = timer_container_of(host, t,
+                                                         timeout_timer);
 
        if (!test_and_clear_bit(0, &host->waiting))
                return;
 
 
 static void meson_mx_mmc_timeout(struct timer_list *t)
 {
-       struct meson_mx_mmc_host *host = from_timer(host, t, cmd_timeout);
+       struct meson_mx_mmc_host *host = timer_container_of(host, t,
+                                                           cmd_timeout);
        unsigned long irqflags;
        u32 irqc;
 
 
 
 static void mvsd_timeout_timer(struct timer_list *t)
 {
-       struct mvsd_host *host = from_timer(host, t, timer);
+       struct mvsd_host *host = timer_container_of(host, t, timer);
        void __iomem *iobase = host->base;
        struct mmc_request *mrq;
        unsigned long flags;
 
 
 static void mxcmci_watchdog(struct timer_list *t)
 {
-       struct mxcmci_host *host = from_timer(host, t, watchdog);
+       struct mxcmci_host *host = timer_container_of(host, t, watchdog);
        struct mmc_request *req = host->req;
        unsigned int stat = mxcmci_readl(host, MMC_REG_STATUS);
 
 
 static void
 mmc_omap_cmd_timer(struct timer_list *t)
 {
-       struct mmc_omap_host *host = from_timer(host, t, cmd_abort_timer);
+       struct mmc_omap_host *host = timer_container_of(host, t,
+                                                       cmd_abort_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&host->slot_lock, flags);
 static void
 mmc_omap_clk_timer(struct timer_list *t)
 {
-       struct mmc_omap_host *host = from_timer(host, t, clk_timer);
+       struct mmc_omap_host *host = timer_container_of(host, t, clk_timer);
 
        mmc_omap_fclk_enable(host, 0);
 }
 
 static void mmc_omap_cover_timer(struct timer_list *t)
 {
-       struct mmc_omap_slot *slot = from_timer(slot, t, cover_timer);
+       struct mmc_omap_slot *slot = timer_container_of(slot, t, cover_timer);
        queue_work(system_bh_wq, &slot->cover_bh_work);
 }
 
 
        struct sdhci_host *host;
        unsigned long flags;
 
-       host = from_timer(host, t, timer);
+       host = timer_container_of(host, t, timer);
 
        spin_lock_irqsave(&host->lock, flags);
 
        struct sdhci_host *host;
        unsigned long flags;
 
-       host = from_timer(host, t, data_timer);
+       host = timer_container_of(host, t, data_timer);
 
        spin_lock_irqsave(&host->lock, flags);
 
 
 
 static void tifm_sd_abort(struct timer_list *t)
 {
-       struct tifm_sd *host = from_timer(host, t, timer);
+       struct tifm_sd *host = timer_container_of(host, t, timer);
 
        pr_err("%s : card failed to respond for a long period of time "
               "(%x, %x)\n",
 
        struct via_crdr_mmc_host *sdhost;
        unsigned long flags;
 
-       sdhost = from_timer(sdhost, t, timer);
+       sdhost = timer_container_of(sdhost, t, timer);
 
        spin_lock_irqsave(&sdhost->lock, flags);
 
 
 
 static void vub300_inactivity_timer_expired(struct timer_list *t)
 {                              /* softirq */
-       struct vub300_mmc_host *vub300 = from_timer(vub300, t,
-                                                   inactivity_timer);
+       struct vub300_mmc_host *vub300 = timer_container_of(vub300, t,
+                                                           inactivity_timer);
        if (!vub300->interface) {
                kref_put(&vub300->kref, vub300_delete);
        } else if (vub300->cmd) {
  */
 static void vub300_sg_timed_out(struct timer_list *t)
 {
-       struct vub300_mmc_host *vub300 = from_timer(vub300, t,
-                                                   sg_transfer_timer);
+       struct vub300_mmc_host *vub300 = timer_container_of(vub300, t,
+                                                           sg_transfer_timer);
        vub300->usb_timed_out = 1;
        usb_sg_cancel(&vub300->sg_request);
        usb_unlink_urb(vub300->command_out_urb);
 
 
 static void wbsd_reset_ignore(struct timer_list *t)
 {
-       struct wbsd_host *host = from_timer(host, t, ignore_timer);
+       struct wbsd_host *host = timer_container_of(host, t, ignore_timer);
 
        BUG_ON(host == NULL);
 
 
  */
 static void link_stat_timer_handler(struct timer_list *t)
 {
-       struct most_dev *mdev = from_timer(mdev, t, link_stat_timer);
+       struct most_dev *mdev = timer_container_of(mdev, t, link_stat_timer);
 
        schedule_work(&mdev->poll_work_obj);
        mdev->link_stat_timer.expires = jiffies + (2 * HZ);
 
 /* flush timer, runs a second after last write */
 static void sm_cache_flush_timer(struct timer_list *t)
 {
-       struct sm_ftl *ftl = from_timer(ftl, t, timer);
+       struct sm_ftl *ftl = timer_container_of(ftl, t, timer);
        queue_work(cache_flush_workqueue, &ftl->flush_work);
 }
 
 
 
 static void arcnet_timer(struct timer_list *t)
 {
-       struct arcnet_local *lp = from_timer(lp, t, timer);
+       struct arcnet_local *lp = timer_container_of(lp, t, timer);
        struct net_device *dev = lp->dev;
 
        spin_lock_irq(&lp->lock);
 
  */
 static void grcan_running_reset(struct timer_list *t)
 {
-       struct grcan_priv *priv = from_timer(priv, t, rr_timer);
+       struct grcan_priv *priv = timer_container_of(priv, t, rr_timer);
        struct net_device *dev = priv->dev;
        struct grcan_registers __iomem *regs = priv->regs;
        unsigned long flags;
 /* Disable channels and schedule a running reset */
 static void grcan_initiate_running_reset(struct timer_list *t)
 {
-       struct grcan_priv *priv = from_timer(priv, t, hang_timer);
+       struct grcan_priv *priv = timer_container_of(priv, t, hang_timer);
        struct net_device *dev = priv->dev;
        struct grcan_registers __iomem *regs = priv->regs;
        unsigned long flags;
 
 
 static void kvaser_pciefd_bec_poll_timer(struct timer_list *data)
 {
-       struct kvaser_pciefd_can *can = from_timer(can, data, bec_poll_timer);
+       struct kvaser_pciefd_can *can = timer_container_of(can, data,
+                                                          bec_poll_timer);
 
        kvaser_pciefd_enable_err_gen(can);
        kvaser_pciefd_request_status(can);
 
  */
 static void pcan_led_timer(struct timer_list *t)
 {
-       struct pcan_pccard *card = from_timer(card, t, led_timer);
+       struct pcan_pccard *card = timer_container_of(card, t, led_timer);
        struct net_device *netdev;
        int i, up_count = 0;
        u8 ccr;
 
  */
 static void pcan_usb_restart(struct timer_list *t)
 {
-       struct pcan_usb *pdev = from_timer(pdev, t, restart_timer);
+       struct pcan_usb *pdev = timer_container_of(pdev, t, restart_timer);
        struct peak_usb_device *dev = &pdev->dev;
 
        /* notify candev and netdev */
 
 
 static void mv88e6xxx_phy_ppu_reenable_timer(struct timer_list *t)
 {
-       struct mv88e6xxx_chip *chip = from_timer(chip, t, ppu_timer);
+       struct mv88e6xxx_chip *chip = timer_container_of(chip, t, ppu_timer);
 
        schedule_work(&chip->ppu_work);
 }
 
 
 static void eql_timer(struct timer_list *t)
 {
-       equalizer_t *eql = from_timer(eql, t, timer);
+       equalizer_t *eql = timer_container_of(eql, t, timer);
        struct list_head *this, *tmp, *head;
 
        spin_lock(&eql->queue.lock);
 
 static void corkscrew_timer(struct timer_list *t)
 {
 #ifdef AUTOMEDIA
-       struct corkscrew_private *vp = from_timer(vp, t, timer);
+       struct corkscrew_private *vp = timer_container_of(vp, t, timer);
        struct net_device *dev = vp->our_dev;
        int ioaddr = dev->base_addr;
        unsigned long flags;
 
 */
 static void media_check(struct timer_list *t)
 {
-       struct el3_private *lp = from_timer(lp, t, media);
+       struct el3_private *lp = timer_container_of(lp, t, media);
        struct net_device *dev = lp->p_dev->priv;
        unsigned int ioaddr = dev->base_addr;
        unsigned long flags;
 
 
 static void media_check(struct timer_list *t)
 {
-       struct el3_private *lp = from_timer(lp, t, media);
+       struct el3_private *lp = timer_container_of(lp, t, media);
        struct net_device *dev = lp->p_dev->priv;
        unsigned int ioaddr = dev->base_addr;
        u16 media, errs;
 
 static void
 vortex_timer(struct timer_list *t)
 {
-       struct vortex_private *vp = from_timer(vp, t, timer);
+       struct vortex_private *vp = timer_container_of(vp, t, timer);
        struct net_device *dev = vp->mii.dev;
        void __iomem *ioaddr = vp->ioaddr;
        int next_tick = 60*HZ;
 
 
 static void ei_watchdog(struct timer_list *t)
 {
-    struct axnet_dev *info = from_timer(info, t, watchdog);
+    struct axnet_dev *info = timer_container_of(info, t, watchdog);
     struct net_device *dev = info->p_dev->priv;
     unsigned int nic_base = dev->base_addr;
     unsigned int mii_addr = nic_base + AXNET_MII_EEP;
 
 
 static void ei_watchdog(struct timer_list *t)
 {
-    struct pcnet_dev *info = from_timer(info, t, watchdog);
+    struct pcnet_dev *info = timer_container_of(info, t, watchdog);
     struct net_device *dev = info->p_dev->priv;
     unsigned int nic_base = dev->base_addr;
     unsigned int mii_addr = nic_base + DLINK_GPIO;
 
  */
 static void et131x_error_timer_handler(struct timer_list *t)
 {
-       struct et131x_adapter *adapter = from_timer(adapter, t, error_timer);
+       struct et131x_adapter *adapter = timer_container_of(adapter, t,
+                                                           error_timer);
        struct phy_device *phydev = adapter->netdev->phydev;
 
        if (et1310_in_phy_coma(adapter)) {
 
 
 static void ena_timer_service(struct timer_list *t)
 {
-       struct ena_adapter *adapter = from_timer(adapter, t, timer_service);
+       struct ena_adapter *adapter = timer_container_of(adapter, t,
+                                                        timer_service);
        u8 *debug_area = adapter->ena_dev->host_attr.debug_area_virt_addr;
        struct ena_admin_host_info *host_info =
                adapter->ena_dev->host_attr.host_info;
 
 
 static void lance_set_multicast_retry(struct timer_list *t)
 {
-       struct lance_private *lp = from_timer(lp, t, multicast_timer);
+       struct lance_private *lp = timer_container_of(lp, t, multicast_timer);
 
        lance_set_multicast(lp->dev);
 }
 
 
 static void amd8111e_config_ipg(struct timer_list *t)
 {
-       struct amd8111e_priv *lp = from_timer(lp, t, ipg_data.ipg_timer);
+       struct amd8111e_priv *lp = timer_container_of(lp, t,
+                                                     ipg_data.ipg_timer);
        struct ipg_info *ipg_data = &lp->ipg_data;
        void __iomem *mmio = lp->mmio;
        unsigned int prev_col_cnt = ipg_data->col_cnt;
 
 
 static void lance_set_multicast_retry(struct timer_list *t)
 {
-       struct lance_private *lp = from_timer(lp, t, multicast_timer);
+       struct lance_private *lp = timer_container_of(lp, t, multicast_timer);
        struct net_device *dev = lp->dev;
 
        lance_set_multicast(dev);
 
 
 static void pcnet32_watchdog(struct timer_list *t)
 {
-       struct pcnet32_private *lp = from_timer(lp, t, watchdog_timer);
+       struct pcnet32_private *lp = timer_container_of(lp, t, watchdog_timer);
        struct net_device *dev = lp->dev;
        unsigned long flags;
 
 
 
 static void pdsc_wdtimer_cb(struct timer_list *t)
 {
-       struct pdsc *pdsc = from_timer(pdsc, t, wdtimer);
+       struct pdsc *pdsc = timer_container_of(pdsc, t, wdtimer);
 
        dev_dbg(pdsc->dev, "%s: jiffies %ld\n", __func__, jiffies);
        mod_timer(&pdsc->wdtimer,
 
 
 static void lance_set_multicast_retry(struct timer_list *t)
 {
-       struct lance_private *lp = from_timer(lp, t, multicast_timer);
+       struct lance_private *lp = timer_container_of(lp, t, multicast_timer);
        struct net_device *dev = lp->dev;
 
        lance_set_multicast(dev);
 
 
 static void xgbe_tx_timer(struct timer_list *t)
 {
-       struct xgbe_channel *channel = from_timer(channel, t, tx_timer);
+       struct xgbe_channel *channel = timer_container_of(channel, t,
+                                                         tx_timer);
        struct xgbe_prv_data *pdata = channel->pdata;
        struct napi_struct *napi;
 
 
 static void xgbe_service_timer(struct timer_list *t)
 {
-       struct xgbe_prv_data *pdata = from_timer(pdata, t, service_timer);
+       struct xgbe_prv_data *pdata = timer_container_of(pdata, t,
+                                                        service_timer);
        struct xgbe_channel *channel;
        unsigned int i;
 
 
 
 static void bmac_tx_timeout(struct timer_list *t)
 {
-       struct bmac_data *bp = from_timer(bp, t, tx_timeout);
+       struct bmac_data *bp = timer_container_of(bp, t, tx_timeout);
        struct net_device *dev = macio_get_drvdata(bp->mdev);
        volatile struct dbdma_regs __iomem *td = bp->tx_dma;
        volatile struct dbdma_regs __iomem *rd = bp->rx_dma;
 
 
 static void mace_tx_timeout(struct timer_list *t)
 {
-    struct mace_data *mp = from_timer(mp, t, tx_timeout);
+    struct mace_data *mp = timer_container_of(mp, t, tx_timeout);
     struct net_device *dev = macio_get_drvdata(mp->mdev);
     volatile struct mace __iomem *mb = mp->mace;
     volatile struct dbdma_regs __iomem *td = mp->tx_dma;
 
 
 static void aq_nic_service_timer_cb(struct timer_list *t)
 {
-       struct aq_nic_s *self = from_timer(self, t, service_timer);
+       struct aq_nic_s *self = timer_container_of(self, t, service_timer);
 
        mod_timer(&self->service_timer,
                  jiffies + AQ_CFG_SERVICE_TIMER_INTERVAL);
 
 static void aq_nic_polling_timer_cb(struct timer_list *t)
 {
-       struct aq_nic_s *self = from_timer(self, t, polling_timer);
+       struct aq_nic_s *self = timer_container_of(self, t, polling_timer);
        unsigned int i = 0U;
 
        for (i = 0U; self->aq_vecs > i; ++i)
 
 
 static void ag71xx_oom_timer_handler(struct timer_list *t)
 {
-       struct ag71xx *ag = from_timer(ag, t, oom_timer);
+       struct ag71xx *ag = timer_container_of(ag, t, oom_timer);
 
        napi_schedule(&ag->napi);
 }
 
  */
 static void atl1c_phy_config(struct timer_list *t)
 {
-       struct atl1c_adapter *adapter = from_timer(adapter, t,
-                                                  phy_config_timer);
+       struct atl1c_adapter *adapter = timer_container_of(adapter, t,
+                                                          phy_config_timer);
        struct atl1c_hw *hw = &adapter->hw;
        unsigned long flags;
 
 
  */
 static void atl1e_phy_config(struct timer_list *t)
 {
-       struct atl1e_adapter *adapter = from_timer(adapter, t,
-                                                  phy_config_timer);
+       struct atl1e_adapter *adapter = timer_container_of(adapter, t,
+                                                          phy_config_timer);
        struct atl1e_hw *hw = &adapter->hw;
        unsigned long flags;
 
 
  */
 static void atl1_phy_config(struct timer_list *t)
 {
-       struct atl1_adapter *adapter = from_timer(adapter, t,
-                                                 phy_config_timer);
+       struct atl1_adapter *adapter = timer_container_of(adapter, t,
+                                                         phy_config_timer);
        struct atl1_hw *hw = &adapter->hw;
        unsigned long flags;
 
 
  */
 static void atl2_watchdog(struct timer_list *t)
 {
-       struct atl2_adapter *adapter = from_timer(adapter, t, watchdog_timer);
+       struct atl2_adapter *adapter = timer_container_of(adapter, t,
+                                                         watchdog_timer);
 
        if (!test_bit(__ATL2_DOWN, &adapter->flags)) {
                u32 drop_rxd, drop_rxs;
  */
 static void atl2_phy_config(struct timer_list *t)
 {
-       struct atl2_adapter *adapter = from_timer(adapter, t,
-                                                 phy_config_timer);
+       struct atl2_adapter *adapter = timer_container_of(adapter, t,
+                                                         phy_config_timer);
        struct atl2_hw *hw = &adapter->hw;
        unsigned long flags;
 
 
 
 static void b44_timer(struct timer_list *t)
 {
-       struct b44 *bp = from_timer(bp, t, timer);
+       struct b44 *bp = timer_container_of(bp, t, timer);
 
        spin_lock_irq(&bp->lock);
 
 
  */
 static void bcm_enet_refill_rx_timer(struct timer_list *t)
 {
-       struct bcm_enet_priv *priv = from_timer(priv, t, rx_timeout);
+       struct bcm_enet_priv *priv = timer_container_of(priv, t, rx_timeout);
        struct net_device *dev = priv->net_dev;
 
        spin_lock(&priv->rx_lock);
  */
 static void swphy_poll_timer(struct timer_list *t)
 {
-       struct bcm_enet_priv *priv = from_timer(priv, t, swphy_poll);
+       struct bcm_enet_priv *priv = timer_container_of(priv, t, swphy_poll);
        unsigned int i;
 
        for (i = 0; i < priv->num_ports; i++) {
 
 static void
 bnx2_timer(struct timer_list *t)
 {
-       struct bnx2 *bp = from_timer(bp, t, timer);
+       struct bnx2 *bp = timer_container_of(bp, t, timer);
 
        if (!netif_running(bp->dev))
                return;
 
 
 static void bnx2x_timer(struct timer_list *t)
 {
-       struct bnx2x *bp = from_timer(bp, t, timer);
+       struct bnx2x *bp = timer_container_of(bp, t, timer);
 
        if (!netif_running(bp->dev))
                return;
 
 
 static void bnxt_timer(struct timer_list *t)
 {
-       struct bnxt *bp = from_timer(bp, t, timer);
+       struct bnxt *bp = timer_container_of(bp, t, timer);
        struct net_device *dev = bp->dev;
 
        if (!netif_running(dev) || !test_bit(BNXT_STATE_OPEN, &bp->state))
 
 
 static void tg3_timer(struct timer_list *t)
 {
-       struct tg3 *tp = from_timer(tp, t, timer);
+       struct tg3 *tp = timer_container_of(tp, t, timer);
 
        spin_lock(&tp->lock);
 
 
 static void
 bnad_ioc_timeout(struct timer_list *t)
 {
-       struct bnad *bnad = from_timer(bnad, t, bna.ioceth.ioc.ioc_timer);
+       struct bnad *bnad = timer_container_of(bnad, t,
+                                              bna.ioceth.ioc.ioc_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&bnad->bna_lock, flags);
 static void
 bnad_ioc_hb_check(struct timer_list *t)
 {
-       struct bnad *bnad = from_timer(bnad, t, bna.ioceth.ioc.hb_timer);
+       struct bnad *bnad = timer_container_of(bnad, t,
+                                              bna.ioceth.ioc.hb_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&bnad->bna_lock, flags);
 static void
 bnad_iocpf_timeout(struct timer_list *t)
 {
-       struct bnad *bnad = from_timer(bnad, t, bna.ioceth.ioc.iocpf_timer);
+       struct bnad *bnad = timer_container_of(bnad, t,
+                                              bna.ioceth.ioc.iocpf_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&bnad->bna_lock, flags);
 static void
 bnad_iocpf_sem_timeout(struct timer_list *t)
 {
-       struct bnad *bnad = from_timer(bnad, t, bna.ioceth.ioc.sem_timer);
+       struct bnad *bnad = timer_container_of(bnad, t,
+                                              bna.ioceth.ioc.sem_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&bnad->bna_lock, flags);
 static void
 bnad_dim_timeout(struct timer_list *t)
 {
-       struct bnad *bnad = from_timer(bnad, t, dim_timer);
+       struct bnad *bnad = timer_container_of(bnad, t, dim_timer);
        struct bnad_rx_info *rx_info;
        struct bnad_rx_ctrl *rx_ctrl;
        int i, j;
 static void
 bnad_stats_timeout(struct timer_list *t)
 {
-       struct bnad *bnad = from_timer(bnad, t, stats_timer);
+       struct bnad *bnad = timer_container_of(bnad, t, stats_timer);
        unsigned long flags;
 
        if (!netif_running(bnad->netdev) ||
 
 static void sge_tx_reclaim_cb(struct timer_list *t)
 {
        int i;
-       struct sge *sge = from_timer(sge, t, tx_reclaim_timer);
+       struct sge *sge = timer_container_of(sge, t, tx_reclaim_timer);
 
        for (i = 0; i < SGE_CMDQ_N; ++i) {
                struct cmdQ *q = &sge->cmdQ[i];
  */
 static void espibug_workaround_t204(struct timer_list *t)
 {
-       struct sge *sge = from_timer(sge, t, espibug_timer);
+       struct sge *sge = timer_container_of(sge, t, espibug_timer);
        struct adapter *adapter = sge->adapter;
        unsigned int nports = adapter->params.nports;
        u32 seop[MAX_NPORTS];
 
 static void espibug_workaround(struct timer_list *t)
 {
-       struct sge *sge = from_timer(sge, t, espibug_timer);
+       struct sge *sge = timer_container_of(sge, t, espibug_timer);
        struct adapter *adapter = sge->adapter;
 
        if (netif_running(adapter->port[0].dev)) {
 
  */
 static void sge_timer_tx(struct timer_list *t)
 {
-       struct sge_qset *qs = from_timer(qs, t, tx_reclaim_timer);
+       struct sge_qset *qs = timer_container_of(qs, t, tx_reclaim_timer);
        struct port_info *pi = netdev_priv(qs->netdev);
        struct adapter *adap = pi->adapter;
        unsigned int tbd[SGE_TXQ_PER_SET] = {0, 0};
 static void sge_timer_rx(struct timer_list *t)
 {
        spinlock_t *lock;
-       struct sge_qset *qs = from_timer(qs, t, rx_reclaim_timer);
+       struct sge_qset *qs = timer_container_of(qs, t, rx_reclaim_timer);
        struct port_info *pi = netdev_priv(qs->netdev);
        struct adapter *adap = pi->adapter;
        u32 status;
 
 
 static void ch_flower_stats_cb(struct timer_list *t)
 {
-       struct adapter *adap = from_timer(adap, t, flower_stats_timer);
+       struct adapter *adap = timer_container_of(adap, t, flower_stats_timer);
 
        schedule_work(&adap->flower_stats_work);
 }
 
 {
        unsigned long m;
        unsigned int i;
-       struct adapter *adap = from_timer(adap, t, sge.rx_timer);
+       struct adapter *adap = timer_container_of(adap, t, sge.rx_timer);
        struct sge *s = &adap->sge;
 
        for (i = 0; i < BITS_TO_LONGS(s->egr_sz); i++)
 
 static void sge_tx_timer_cb(struct timer_list *t)
 {
-       struct adapter *adap = from_timer(adap, t, sge.tx_timer);
+       struct adapter *adap = timer_container_of(adap, t, sge.tx_timer);
        struct sge *s = &adap->sge;
        unsigned long m, period;
        unsigned int i, budget;
 
  */
 static void sge_rx_timer_cb(struct timer_list *t)
 {
-       struct adapter *adapter = from_timer(adapter, t, sge.rx_timer);
+       struct adapter *adapter = timer_container_of(adapter, t, sge.rx_timer);
        struct sge *s = &adapter->sge;
        unsigned int i;
 
  */
 static void sge_tx_timer_cb(struct timer_list *t)
 {
-       struct adapter *adapter = from_timer(adapter, t, sge.tx_timer);
+       struct adapter *adapter = timer_container_of(adapter, t, sge.tx_timer);
        struct sge *s = &adapter->sge;
        unsigned int i, budget;
 
 
 #ifdef CONFIG_RFS_ACCEL
 void enic_flow_may_expire(struct timer_list *t)
 {
-       struct enic *enic = from_timer(enic, t, rfs_h.rfs_may_expire);
+       struct enic *enic = timer_container_of(enic, t, rfs_h.rfs_may_expire);
        bool res;
        int j;
 
 
 
 static void enic_notify_timer(struct timer_list *t)
 {
-       struct enic *enic = from_timer(enic, t, notify_timer);
+       struct enic *enic = timer_container_of(enic, t, notify_timer);
 
        enic_notify_check(enic);
 
 
 
 static void de21040_media_timer (struct timer_list *t)
 {
-       struct de_private *de = from_timer(de, t, media_timer);
+       struct de_private *de = timer_container_of(de, t, media_timer);
        struct net_device *dev = de->dev;
        u32 status = dr32(SIAStatus);
        unsigned int carrier;
 
 static void de21041_media_timer (struct timer_list *t)
 {
-       struct de_private *de = from_timer(de, t, media_timer);
+       struct de_private *de = timer_container_of(de, t, media_timer);
        struct net_device *dev = de->dev;
        u32 status = dr32(SIAStatus);
        unsigned int carrier;
 
 
 static void dmfe_timer(struct timer_list *t)
 {
-       struct dmfe_board_info *db = from_timer(db, t, timer);
+       struct dmfe_board_info *db = timer_container_of(db, t, timer);
        struct net_device *dev = pci_get_drvdata(db->pdev);
        void __iomem *ioaddr = db->ioaddr;
        u32 tmp_cr8;
 
 
 void oom_timer(struct timer_list *t)
 {
-       struct tulip_private *tp = from_timer(tp, t, oom_timer);
+       struct tulip_private *tp = timer_container_of(tp, t, oom_timer);
 
        napi_schedule(&tp->napi);
 }
 
 
 void pnic_timer(struct timer_list *t)
 {
-       struct tulip_private *tp = from_timer(tp, t, timer);
+       struct tulip_private *tp = timer_container_of(tp, t, timer);
        struct net_device *dev = tp->dev;
        void __iomem *ioaddr = tp->base_addr;
        int next_tick = 60*HZ;
 
 
 void pnic2_timer(struct timer_list *t)
 {
-       struct tulip_private *tp = from_timer(tp, t, timer);
+       struct tulip_private *tp = timer_container_of(tp, t, timer);
        struct net_device *dev = tp->dev;
        void __iomem *ioaddr = tp->base_addr;
        int next_tick = 60*HZ;
 
 
 void mxic_timer(struct timer_list *t)
 {
-       struct tulip_private *tp = from_timer(tp, t, timer);
+       struct tulip_private *tp = timer_container_of(tp, t, timer);
        struct net_device *dev = tp->dev;
        void __iomem *ioaddr = tp->base_addr;
        int next_tick = 60*HZ;
 
 void comet_timer(struct timer_list *t)
 {
-       struct tulip_private *tp = from_timer(tp, t, timer);
+       struct tulip_private *tp = timer_container_of(tp, t, timer);
        struct net_device *dev = tp->dev;
        int next_tick = 2*HZ;
 
 
 
 static void tulip_timer(struct timer_list *t)
 {
-       struct tulip_private *tp = from_timer(tp, t, timer);
+       struct tulip_private *tp = timer_container_of(tp, t, timer);
        struct net_device *dev = tp->dev;
 
        if (netif_running(dev))
 
 
 static void uli526x_timer(struct timer_list *t)
 {
-       struct uli526x_board_info *db = from_timer(db, t, timer);
+       struct uli526x_board_info *db = timer_container_of(db, t, timer);
        struct net_device *dev = pci_get_drvdata(db->pdev);
        struct uli_phy_ops *phy = &db->phy;
        void __iomem *ioaddr = db->ioaddr;
 
 
 static void netdev_timer(struct timer_list *t)
 {
-       struct netdev_private *np = from_timer(np, t, timer);
+       struct netdev_private *np = timer_container_of(np, t, timer);
        struct net_device *dev = pci_get_drvdata(np->pci_dev);
        void __iomem *ioaddr = np->base_addr;
 
 
 static void
 rio_timer (struct timer_list *t)
 {
-       struct netdev_private *np = from_timer(np, t, timer);
+       struct netdev_private *np = timer_container_of(np, t, timer);
        struct net_device *dev = pci_get_drvdata(np->pdev);
        unsigned int entry;
        int next_tick = 1*HZ;
 
 
 static void netdev_timer(struct timer_list *t)
 {
-       struct netdev_private *np = from_timer(np, t, timer);
+       struct netdev_private *np = timer_container_of(np, t, timer);
        struct net_device *dev = np->mii.dev;
        void __iomem *ioaddr = np->mem;
        int old_crvalue = np->crvalue;
 
 static void reset_timer(struct timer_list *t)
 {
-       struct netdev_private *np = from_timer(np, t, reset_timer);
+       struct netdev_private *np = timer_container_of(np, t, reset_timer);
        struct net_device *dev = np->mii.dev;
        unsigned long flags;
 
 
 
 static void gve_stats_report_timer(struct timer_list *t)
 {
-       struct gve_priv *priv = from_timer(priv, t, stats_report_timer);
+       struct gve_priv *priv = timer_container_of(priv, t,
+                                                  stats_report_timer);
 
        mod_timer(&priv->stats_report_timer,
                  round_jiffies(jiffies +
 
 
 static void hns_nic_service_timer(struct timer_list *t)
 {
-       struct hns_nic_priv *priv = from_timer(priv, t, service_timer);
+       struct hns_nic_priv *priv = timer_container_of(priv, t, service_timer);
 
        (void)mod_timer(&priv->service_timer, jiffies + SERVICE_TIMER_HZ);
 
 
 
 static void hclge_reset_timer(struct timer_list *t)
 {
-       struct hclge_dev *hdev = from_timer(hdev, t, reset_timer);
+       struct hclge_dev *hdev = timer_container_of(hdev, t, reset_timer);
 
        /* if default_reset_request has no value, it means that this reset
         * request has already be handled, so just return here
 
 
 static void hclgevf_reset_timer(struct timer_list *t)
 {
-       struct hclgevf_dev *hdev = from_timer(hdev, t, reset_timer);
+       struct hclgevf_dev *hdev = timer_container_of(hdev, t, reset_timer);
 
        hclgevf_clear_event_cause(hdev, HCLGEVF_VECTOR0_EVENT_RST);
        hclgevf_reset_task_schedule(hdev);
 
 
 static void e100_watchdog(struct timer_list *t)
 {
-       struct nic *nic = from_timer(nic, t, watchdog);
+       struct nic *nic = timer_container_of(nic, t, watchdog);
        struct ethtool_cmd cmd = { .cmd = ETHTOOL_GSET };
        u32 speed;
 
 
  **/
 static void e1000_update_phy_info(struct timer_list *t)
 {
-       struct e1000_adapter *adapter = from_timer(adapter, t, phy_info_timer);
+       struct e1000_adapter *adapter = timer_container_of(adapter, t,
+                                                          phy_info_timer);
 
        if (test_bit(__E1000_DOWN, &adapter->state))
                return;
  **/
 static void e1000_watchdog(struct timer_list *t)
 {
-       struct e1000_adapter *adapter = from_timer(adapter, t, watchdog_timer);
+       struct e1000_adapter *adapter = timer_container_of(adapter, t,
+                                                          watchdog_timer);
 
        /* Do the rest outside of interrupt context */
        schedule_work(&adapter->watchdog_task);
 
  **/
 static void fm10k_service_timer(struct timer_list *t)
 {
-       struct fm10k_intfc *interface = from_timer(interface, t,
-                                                  service_timer);
+       struct fm10k_intfc *interface = timer_container_of(interface, t,
+                                                          service_timer);
 
        /* Reset the timer */
        mod_timer(&interface->service_timer, (HZ * 2) + jiffies);
 
  **/
 static void i40e_service_timer(struct timer_list *t)
 {
-       struct i40e_pf *pf = from_timer(pf, t, service_timer);
+       struct i40e_pf *pf = timer_container_of(pf, t, service_timer);
 
        mod_timer(&pf->service_timer,
                  round_jiffies(jiffies + pf->service_timer_period));
 
  */
 static void ice_service_timer(struct timer_list *t)
 {
-       struct ice_pf *pf = from_timer(pf, t, serv_tmr);
+       struct ice_pf *pf = timer_container_of(pf, t, serv_tmr);
 
        mod_timer(&pf->serv_tmr, round_jiffies(pf->serv_tmr_period + jiffies));
        ice_service_task_schedule(pf);
 
  */
 static void ice_vf_fdir_timer(struct timer_list *t)
 {
-       struct ice_vf_fdir_ctx *ctx_irq = from_timer(ctx_irq, t, rx_tmr);
+       struct ice_vf_fdir_ctx *ctx_irq = timer_container_of(ctx_irq, t,
+                                                            rx_tmr);
        struct ice_vf_fdir_ctx *ctx_done;
        struct ice_vf_fdir *fdir;
        unsigned long flags;
 
  */
 static void igb_update_phy_info(struct timer_list *t)
 {
-       struct igb_adapter *adapter = from_timer(adapter, t, phy_info_timer);
+       struct igb_adapter *adapter = timer_container_of(adapter, t,
+                                                        phy_info_timer);
        igb_get_phy_info(&adapter->hw);
 }
 
  **/
 static void igb_watchdog(struct timer_list *t)
 {
-       struct igb_adapter *adapter = from_timer(adapter, t, watchdog_timer);
+       struct igb_adapter *adapter = timer_container_of(adapter, t,
+                                                        watchdog_timer);
        /* Do the rest outside of interrupt context */
        schedule_work(&adapter->watchdog_task);
 }
 
  **/
 static void igbvf_watchdog(struct timer_list *t)
 {
-       struct igbvf_adapter *adapter = from_timer(adapter, t, watchdog_timer);
+       struct igbvf_adapter *adapter = timer_container_of(adapter, t,
+                                                          watchdog_timer);
 
        /* Do the rest outside of interrupt context */
        schedule_work(&adapter->watchdog_task);
 
  */
 static void igc_update_phy_info(struct timer_list *t)
 {
-       struct igc_adapter *adapter = from_timer(adapter, t, phy_info_timer);
+       struct igc_adapter *adapter = timer_container_of(adapter, t,
+                                                        phy_info_timer);
 
        igc_get_phy_info(&adapter->hw);
 }
  */
 static void igc_watchdog(struct timer_list *t)
 {
-       struct igc_adapter *adapter = from_timer(adapter, t, watchdog_timer);
+       struct igc_adapter *adapter = timer_container_of(adapter, t,
+                                                        watchdog_timer);
        /* Do the rest outside of interrupt context */
        schedule_work(&adapter->watchdog_task);
 }
 
  **/
 static void ixgbe_service_timer(struct timer_list *t)
 {
-       struct ixgbe_adapter *adapter = from_timer(adapter, t, service_timer);
+       struct ixgbe_adapter *adapter = timer_container_of(adapter, t,
+                                                          service_timer);
        unsigned long next_event_offset;
 
        /* poll faster when waiting for link */
 
  **/
 static void ixgbevf_service_timer(struct timer_list *t)
 {
-       struct ixgbevf_adapter *adapter = from_timer(adapter, t,
-                                                    service_timer);
+       struct ixgbevf_adapter *adapter = timer_container_of(adapter, t,
+                                                            service_timer);
 
        /* Reset the timer */
        mod_timer(&adapter->service_timer, (HZ * 2) + jiffies);
 
 
 static void korina_poll_media(struct timer_list *t)
 {
-       struct korina_private *lp = from_timer(lp, t, media_check_timer);
+       struct korina_private *lp = timer_container_of(lp, t,
+                                                      media_check_timer);
        struct net_device *dev = lp->dev;
 
        korina_check_media(dev, 0);
 
 
 static void mib_counters_timer_wrapper(struct timer_list *t)
 {
-       struct mv643xx_eth_private *mp = from_timer(mp, t, mib_counters_timer);
+       struct mv643xx_eth_private *mp = timer_container_of(mp, t,
+                                                           mib_counters_timer);
        mib_counters_update(mp);
        mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ);
 }
 
 static inline void oom_timer_wrapper(struct timer_list *t)
 {
-       struct mv643xx_eth_private *mp = from_timer(mp, t, rx_oom);
+       struct mv643xx_eth_private *mp = timer_container_of(mp, t, rx_oom);
 
        napi_schedule(&mp->napi);
 }
 
 
 static inline void rxq_refill_timer_wrapper(struct timer_list *t)
 {
-       struct pxa168_eth_private *pep = from_timer(pep, t, timeout);
+       struct pxa168_eth_private *pep = timer_container_of(pep, t, timeout);
        napi_schedule(&pep->napi);
 }
 
 
  */
 static void xm_link_timer(struct timer_list *t)
 {
-       struct skge_port *skge = from_timer(skge, t, link_timer);
+       struct skge_port *skge = timer_container_of(skge, t, link_timer);
        struct net_device *dev = skge->netdev;
        struct skge_hw *hw = skge->hw;
        int port = skge->port;
 
 
 static void sky2_watchdog(struct timer_list *t)
 {
-       struct sky2_hw *hw = from_timer(hw, t, watchdog_timer);
+       struct sky2_hw *hw = timer_container_of(hw, t, watchdog_timer);
 
        /* Check for lost IRQ once a second */
        if (sky2_read32(hw, B0_ISRC)) {
 
 
 static void poll_catas(struct timer_list *t)
 {
-       struct mlx4_priv *priv = from_timer(priv, t, catas_err.timer);
+       struct mlx4_priv *priv = timer_container_of(priv, t, catas_err.timer);
        struct mlx4_dev *dev = &priv->dev;
        u32 slave_read;
 
 
 #define MLX5_RESET_POLL_INTERVAL       (HZ / 10)
 static void poll_sync_reset(struct timer_list *t)
 {
-       struct mlx5_fw_reset *fw_reset = from_timer(fw_reset, t, timer);
+       struct mlx5_fw_reset *fw_reset = timer_container_of(fw_reset, t,
+                                                           timer);
        struct mlx5_core_dev *dev = fw_reset->dev;
        u32 fatal_error;
 
 
 
 static void poll_health(struct timer_list *t)
 {
-       struct mlx5_core_dev *dev = from_timer(dev, t, priv.health.timer);
+       struct mlx5_core_dev *dev = timer_container_of(dev, t,
+                                                      priv.health.timer);
        struct mlx5_core_health *health = &dev->priv.health;
        struct health_buffer __iomem *h = health->health;
        u32 fatal_error;
 
 
 static void mib_monitor(struct timer_list *t)
 {
-       struct dev_info *hw_priv = from_timer(hw_priv, t, mib_timer_info.timer);
+       struct dev_info *hw_priv = timer_container_of(hw_priv, t,
+                                                     mib_timer_info.timer);
 
        mib_read_work(&hw_priv->mib_read);
 
  */
 static void dev_monitor(struct timer_list *t)
 {
-       struct dev_priv *priv = from_timer(priv, t, monitor_timer_info.timer);
+       struct dev_priv *priv = timer_container_of(priv, t,
+                                                  monitor_timer_info.timer);
        struct net_device *dev = priv->mii_if.dev;
        struct dev_info *hw_priv = priv->adapter;
        struct ksz_hw *hw = &hw_priv->hw;
 
        u32 rx_pause_cnt;
        u16 cmd;
 
-       mgp = from_timer(mgp, t, watchdog_timer);
+       mgp = timer_container_of(mgp, t, watchdog_timer);
 
        rx_pause_cnt = ntohl(mgp->ss[0].fw_stats->dropped_pause);
        busy_slice_cnt = 0;
 
  */
 static void netdev_timer(struct timer_list *t)
 {
-       struct netdev_private *np = from_timer(np, t, timer);
+       struct netdev_private *np = timer_container_of(np, t, timer);
        struct net_device *dev = np->dev;
        void __iomem * ioaddr = ns_ioaddr(dev);
        int next_tick = NATSEMI_TIMER_FREQ;
 
 
 static void ns83820_tx_watch(struct timer_list *t)
 {
-       struct ns83820 *dev = from_timer(dev, t, tx_watchdog);
+       struct ns83820 *dev = timer_container_of(dev, t, tx_watchdog);
        struct net_device *ndev = dev->ndev;
 
 #if defined(DEBUG)
 
 static void
 s2io_alarm_handle(struct timer_list *t)
 {
-       struct s2io_nic *sp = from_timer(sp, t, alarm_timer);
+       struct s2io_nic *sp = timer_container_of(sp, t, alarm_timer);
        struct net_device *dev = sp->dev;
 
        s2io_handle_errors(dev);
 
 
 static void nfp_net_reconfig_timer(struct timer_list *t)
 {
-       struct nfp_net *nn = from_timer(nn, t, reconfig_timer);
+       struct nfp_net *nn = timer_container_of(nn, t, reconfig_timer);
 
        spin_lock_bh(&nn->reconfig_lock);
 
 
 /* If rx bufs are exhausted called after 50ms to attempt to refresh */
 static void nv_do_rx_refill(struct timer_list *t)
 {
-       struct fe_priv *np = from_timer(np, t, oom_kick);
+       struct fe_priv *np = timer_container_of(np, t, oom_kick);
 
        /* Just reschedule NAPI rx processing */
        napi_schedule(&np->napi);
 
 static void nv_do_nic_poll(struct timer_list *t)
 {
-       struct fe_priv *np = from_timer(np, t, nic_poll);
+       struct fe_priv *np = timer_container_of(np, t, nic_poll);
        struct net_device *dev = np->dev;
        u8 __iomem *base = get_hwbase(dev);
        u32 mask = 0;
        __acquires(&netdev_priv(dev)->hwstats_lock)
        __releases(&netdev_priv(dev)->hwstats_lock)
 {
-       struct fe_priv *np = from_timer(np, t, stats_poll);
+       struct fe_priv *np = timer_container_of(np, t, stats_poll);
        struct net_device *dev = np->dev;
 
        /* If lock is currently taken, the stats are being refreshed
 
  */
 static void pch_gbe_watchdog(struct timer_list *t)
 {
-       struct pch_gbe_adapter *adapter = from_timer(adapter, t,
-                                                    watchdog_timer);
+       struct pch_gbe_adapter *adapter = timer_container_of(adapter, t,
+                                                            watchdog_timer);
        struct net_device *netdev = adapter->netdev;
        struct pch_gbe_hw *hw = &adapter->hw;
 
 
 
 static void hamachi_timer(struct timer_list *t)
 {
-       struct hamachi_private *hmp = from_timer(hmp, t, timer);
+       struct hamachi_private *hmp = timer_container_of(hmp, t, timer);
        struct net_device *dev = hmp->mii_if.dev;
        void __iomem *ioaddr = hmp->base;
        int next_tick = 10*HZ;
 
 
 static void yellowfin_timer(struct timer_list *t)
 {
-       struct yellowfin_private *yp = from_timer(yp, t, timer);
+       struct yellowfin_private *yp = timer_container_of(yp, t, timer);
        struct net_device *dev = pci_get_drvdata(yp->pci_dev);
        void __iomem *ioaddr = yp->base;
        int next_tick = 60*HZ;
 
 
 static void pasemi_mac_tx_timer(struct timer_list *t)
 {
-       struct pasemi_mac_txring *txring = from_timer(txring, t, clean_timer);
+       struct pasemi_mac_txring *txring = timer_container_of(txring, t,
+                                                             clean_timer);
        struct pasemi_mac *mac = txring->mac;
 
        pasemi_mac_clean_tx(txring);
 
 
 static void ionic_watchdog_cb(struct timer_list *t)
 {
-       struct ionic *ionic = from_timer(ionic, t, watchdog_timer);
+       struct ionic *ionic = timer_container_of(ionic, t, watchdog_timer);
        struct ionic_lif *lif = ionic->lif;
        struct ionic_deferred_work *work;
        int hb;
 
 
 static void ql3xxx_timer(struct timer_list *t)
 {
-       struct ql3_adapter *qdev = from_timer(qdev, t, adapter_timer);
+       struct ql3_adapter *qdev = timer_container_of(qdev, t, adapter_timer);
        queue_delayed_work(qdev->workqueue, &qdev->link_state_work, 0);
 }
 
 
    problem where the adapter forgets its ethernet address. */
 static void atp_timed_checker(struct timer_list *t)
 {
-       struct net_local *lp = from_timer(lp, t, timer);
+       struct net_local *lp = timer_container_of(lp, t, timer);
        struct net_device *dev = lp->dev;
        long ioaddr = dev->base_addr;
        int tickssofar = jiffies - lp->last_rx_time;
 
 
 static void ofdpa_fdb_cleanup(struct timer_list *t)
 {
-       struct ofdpa *ofdpa = from_timer(ofdpa, t, fdb_cleanup_timer);
+       struct ofdpa *ofdpa = timer_container_of(ofdpa, t, fdb_cleanup_timer);
        struct ofdpa_port *ofdpa_port;
        struct ofdpa_fdb_tbl_entry *entry;
        struct hlist_node *tmp;
 
  */
 static void sxgbe_eee_ctrl_timer(struct timer_list *t)
 {
-       struct sxgbe_priv_data *priv = from_timer(priv, t, eee_ctrl_timer);
+       struct sxgbe_priv_data *priv = timer_container_of(priv, t,
+                                                         eee_ctrl_timer);
 
        sxgbe_enable_eee_mode(priv);
        mod_timer(&priv->eee_ctrl_timer, SXGBE_LPI_TIMER(eee_timer));
  */
 static void sxgbe_tx_timer(struct timer_list *t)
 {
-       struct sxgbe_tx_queue *p = from_timer(p, t, txtimer);
+       struct sxgbe_tx_queue *p = timer_container_of(p, t, txtimer);
        sxgbe_tx_queue_clean(p);
 }
 
 
  */
 static void ether3_ledoff(struct timer_list *t)
 {
-       struct dev_priv *private = from_timer(private, t, timer);
+       struct dev_priv *private = timer_container_of(private, t, timer);
        struct net_device *dev = private->dev;
 
        ether3_outw(priv(dev)->regs.config2 |= CFG2_CTRLO, REG_CONFIG2);
 
 
 static void falcon_stats_timer_func(struct timer_list *t)
 {
-       struct falcon_nic_data *nic_data = from_timer(nic_data, t,
-                                                     stats_timer);
+       struct falcon_nic_data *nic_data = timer_container_of(nic_data, t,
+                                                             stats_timer);
        struct ef4_nic *efx = nic_data->efx;
 
        spin_lock(&efx->stats_lock);
 
 
 void ef4_rx_slow_fill(struct timer_list *t)
 {
-       struct ef4_rx_queue *rx_queue = from_timer(rx_queue, t, slow_fill);
+       struct ef4_rx_queue *rx_queue = timer_container_of(rx_queue, t,
+                                                          slow_fill);
 
        /* Post an event to cause NAPI to run and refill the queue */
        ef4_nic_generate_fill_event(rx_queue);
 
 
 static void efx_mcdi_timeout_async(struct timer_list *t)
 {
-       struct efx_mcdi_iface *mcdi = from_timer(mcdi, t, async_timer);
+       struct efx_mcdi_iface *mcdi = timer_container_of(mcdi, t, async_timer);
 
        efx_mcdi_complete_async(mcdi, true);
 }
 
 
 void efx_rx_slow_fill(struct timer_list *t)
 {
-       struct efx_rx_queue *rx_queue = from_timer(rx_queue, t, slow_fill);
+       struct efx_rx_queue *rx_queue = timer_container_of(rx_queue, t,
+                                                          slow_fill);
 
        /* Post an event to cause NAPI to run and refill the queue */
        efx_nic_generate_fill_event(rx_queue);
 
 
 static void efx_mcdi_timeout_async(struct timer_list *t)
 {
-       struct efx_mcdi_iface *mcdi = from_timer(mcdi, t, async_timer);
+       struct efx_mcdi_iface *mcdi = timer_container_of(mcdi, t, async_timer);
 
        efx_mcdi_complete_async(mcdi, true);
 }
 
 
 void efx_siena_rx_slow_fill(struct timer_list *t)
 {
-       struct efx_rx_queue *rx_queue = from_timer(rx_queue, t, slow_fill);
+       struct efx_rx_queue *rx_queue = timer_container_of(rx_queue, t,
+                                                          slow_fill);
 
        /* Post an event to cause NAPI to run and refill the queue */
        efx_nic_generate_fill_event(rx_queue);
 
 
 static void ioc3_timer(struct timer_list *t)
 {
-       struct ioc3_private *ip = from_timer(ip, t, ioc3_timer);
+       struct ioc3_private *ip = timer_container_of(ip, t, ioc3_timer);
 
        /* Print the link status if it has changed */
        mii_check_media(&ip->mii, 1, 0);
 
 
 static void sis190_phy_timer(struct timer_list *t)
 {
-       struct sis190_private *tp = from_timer(tp, t, timer);
+       struct sis190_private *tp = timer_container_of(tp, t, timer);
        struct net_device *dev = tp->dev;
 
        if (likely(netif_running(dev)))
 
 
 static void sis900_timer(struct timer_list *t)
 {
-       struct sis900_private *sis_priv = from_timer(sis_priv, t, timer);
+       struct sis900_private *sis_priv = timer_container_of(sis_priv, t,
+                                                            timer);
        struct net_device *net_dev = sis_priv->mii_info.dev;
        struct mii_phy *mii_phy = sis_priv->mii;
        static const int next_tick = 5*HZ;
 
 
 static void epic_timer(struct timer_list *t)
 {
-       struct epic_private *ep = from_timer(ep, t, timer);
+       struct epic_private *ep = timer_container_of(ep, t, timer);
        struct net_device *dev = ep->mii.dev;
        void __iomem *ioaddr = ep->ioaddr;
        int next_tick = 5*HZ;
 
 
 static void media_check(struct timer_list *t)
 {
-    struct smc_private *smc = from_timer(smc, t, media);
+    struct smc_private *smc = timer_container_of(smc, t, media);
     struct net_device *dev = smc->mii_if.dev;
     unsigned int ioaddr = dev->base_addr;
     u_short i, media, saved_bank;
 
  */
 static void stmmac_eee_ctrl_timer(struct timer_list *t)
 {
-       struct stmmac_priv *priv = from_timer(priv, t, eee_ctrl_timer);
+       struct stmmac_priv *priv = timer_container_of(priv, t, eee_ctrl_timer);
 
        stmmac_try_to_start_sw_lpi(priv);
 }
 
 
 static void cas_link_timer(struct timer_list *t)
 {
-       struct cas *cp = from_timer(cp, t, link_timer);
+       struct cas *cp = timer_container_of(cp, t, link_timer);
        int mask, pending = 0, reset = 0;
        unsigned long flags;
 
 
 
 static void niu_timer(struct timer_list *t)
 {
-       struct niu *np = from_timer(np, t, timer);
+       struct niu *np = timer_container_of(np, t, timer);
        unsigned long off;
        int err, link_up;
 
 
 
 static void bigmac_timer(struct timer_list *t)
 {
-       struct bigmac *bp = from_timer(bp, t, bigmac_timer);
+       struct bigmac *bp = timer_container_of(bp, t, bigmac_timer);
        void __iomem *tregs = bp->tregs;
        int restart_timer = 0;
 
 
 
 static void gem_link_timer(struct timer_list *t)
 {
-       struct gem *gp = from_timer(gp, t, link_timer);
+       struct gem *gp = timer_container_of(gp, t, link_timer);
        struct net_device *dev = gp->dev;
        int restart_aneg = 0;
 
 
 
 static void happy_meal_timer(struct timer_list *t)
 {
-       struct happy_meal *hp = from_timer(hp, t, happy_timer);
+       struct happy_meal *hp = timer_container_of(hp, t, happy_timer);
        void __iomem *tregs = hp->tcvregs;
        int restart_timer = 0;
 
 
 
 void sunvnet_clean_timer_expire_common(struct timer_list *t)
 {
-       struct vnet_port *port = from_timer(port, t, clean_timer);
+       struct vnet_port *port = timer_container_of(port, t, clean_timer);
        struct sk_buff *freeskbs;
        unsigned pending;
 
 
 
 static void xlgmac_tx_timer(struct timer_list *t)
 {
-       struct xlgmac_channel *channel = from_timer(channel, t, tx_timer);
+       struct xlgmac_channel *channel = timer_container_of(channel, t,
+                                                           tx_timer);
        struct xlgmac_pdata *pdata = channel->pdata;
        struct napi_struct *napi;
 
 
 
 static void cpsw_ale_timer(struct timer_list *t)
 {
-       struct cpsw_ale *ale = from_timer(ale, t, timer);
+       struct cpsw_ale *ale = timer_container_of(ale, t, timer);
 
        cpsw_ale_control_set(ale, 0, ALE_AGEOUT, 1);
 
 
 
 static void netcp_ethss_timer(struct timer_list *t)
 {
-       struct gbe_priv *gbe_dev = from_timer(gbe_dev, t, timer);
+       struct gbe_priv *gbe_dev = timer_container_of(gbe_dev, t, timer);
        struct gbe_intf *gbe_intf;
        struct gbe_slave *slave;
 
 
 
 static void tlan_timer(struct timer_list *t)
 {
-       struct tlan_priv        *priv = from_timer(priv, t, timer);
+       struct tlan_priv        *priv = timer_container_of(priv, t, timer);
        struct net_device       *dev = priv->dev;
        u32             elapsed;
        unsigned long   flags = 0;
 
 static void tlan_phy_monitor(struct timer_list *t)
 {
-       struct tlan_priv *priv = from_timer(priv, t, media_timer);
+       struct tlan_priv *priv = timer_container_of(priv, t, media_timer);
        struct net_device *dev = priv->dev;
        u16     phy;
        u16     phy_status;
 
 
 static void tsi108_timed_checker(struct timer_list *t)
 {
-       struct tsi108_prv_data *data = from_timer(data, t, timer);
+       struct tsi108_prv_data *data = timer_container_of(data, t, timer);
        struct net_device *dev = data->dev;
 
        tsi108_check_phy(dev);
 
 
 void wx_service_timer(struct timer_list *t)
 {
-       struct wx *wx = from_timer(wx, t, service_timer);
+       struct wx *wx = timer_container_of(wx, t, service_timer);
        unsigned long next_event_offset = HZ * 2;
 
        /* Reset the timer */
 
 
 static void fza_reset_timer(struct timer_list *t)
 {
-       struct fza_private *fp = from_timer(fp, t, reset_timer);
+       struct fza_private *fp = timer_container_of(fp, t, reset_timer);
 
        if (!fp->timer_state) {
                pr_err("%s: RESET timed out!\n", fp->name);
 
 
 static void sp_xmit_on_air(struct timer_list *t)
 {
-       struct sixpack *sp = from_timer(sp, t, tx_t);
+       struct sixpack *sp = timer_container_of(sp, t, tx_t);
        int actual, when = sp->slottime;
        static unsigned char random;
 
 
 static void resync_tnc(struct timer_list *t)
 {
-       struct sixpack *sp = from_timer(sp, t, resync_t);
+       struct sixpack *sp = timer_container_of(sp, t, resync_t);
        static char resync_cmd = 0xe8;
 
        /* clear any data that might have been received */
 
 
 static void t_dwait(struct timer_list *t)
 {
-       struct scc_channel *scc = from_timer(scc, t, tx_t);
+       struct scc_channel *scc = timer_container_of(scc, t, tx_t);
        
        if (scc->stat.tx_state == TXS_WAIT)     /* maxkeyup or idle timeout */
        {
 
 static void t_txdelay(struct timer_list *t)
 {
-       struct scc_channel *scc = from_timer(scc, t, tx_t);
+       struct scc_channel *scc = timer_container_of(scc, t, tx_t);
 
        scc_start_maxkeyup(scc);
 
 
 static void t_tail(struct timer_list *t)
 {
-       struct scc_channel *scc = from_timer(scc, t, tx_t);
+       struct scc_channel *scc = timer_container_of(scc, t, tx_t);
        unsigned long flags;
        
        spin_lock_irqsave(&scc->lock, flags); 
 
 static void t_busy(struct timer_list *t)
 {
-       struct scc_channel *scc = from_timer(scc, t, tx_wdog);
+       struct scc_channel *scc = timer_container_of(scc, t, tx_wdog);
 
        timer_delete(&scc->tx_t);
        netif_stop_queue(scc->dev);     /* don't pile on the wabbit! */
 
 static void t_maxkeyup(struct timer_list *t)
 {
-       struct scc_channel *scc = from_timer(scc, t, tx_wdog);
+       struct scc_channel *scc = timer_container_of(scc, t, tx_wdog);
        unsigned long flags;
 
        spin_lock_irqsave(&scc->lock, flags);
 
 static void t_idle(struct timer_list *t)
 {
-       struct scc_channel *scc = from_timer(scc, t, tx_t);
+       struct scc_channel *scc = timer_container_of(scc, t, tx_t);
        
        timer_delete(&scc->tx_wdog);
 
 
 static void scc_stop_calibrate(struct timer_list *t)
 {
-       struct scc_channel *scc = from_timer(scc, t, tx_wdog);
+       struct scc_channel *scc = timer_container_of(scc, t, tx_wdog);
        unsigned long flags;
        
        spin_lock_irqsave(&scc->lock, flags);
 
 
 static void rr_timer(struct timer_list *t)
 {
-       struct rr_private *rrpriv = from_timer(rrpriv, t, timer);
+       struct rr_private *rrpriv = timer_container_of(rrpriv, t, timer);
        struct net_device *dev = pci_get_drvdata(rrpriv->pci_dev);
        struct rr_regs __iomem *regs = rrpriv->regs;
        unsigned long flags;
 
 
 static void ntb_netdev_tx_timer(struct timer_list *t)
 {
-       struct ntb_netdev *dev = from_timer(dev, t, tx_timer);
+       struct ntb_netdev *dev = timer_container_of(dev, t, tx_timer);
        struct net_device *ndev = dev->ndev;
 
        if (ntb_transport_tx_free_entry(dev->qp) < tx_stop) {
 
 
 static void sl_outfill(struct timer_list *t)
 {
-       struct slip *sl = from_timer(sl, t, outfill_timer);
+       struct slip *sl = timer_container_of(sl, t, outfill_timer);
 
        spin_lock(&sl->lock);
 
 
 static void sl_keepalive(struct timer_list *t)
 {
-       struct slip *sl = from_timer(sl, t, keepalive_timer);
+       struct slip *sl = timer_container_of(sl, t, keepalive_timer);
 
        spin_lock(&sl->lock);
 
 
 
 static void tun_flow_cleanup(struct timer_list *t)
 {
-       struct tun_struct *tun = from_timer(tun, t, flow_gc_timer);
+       struct tun_struct *tun = timer_container_of(tun, t, flow_gc_timer);
        unsigned long delay = tun->ageing_time;
        unsigned long next_timer = jiffies + delay;
        unsigned long count = 0;
 
 
 static void catc_stats_timer(struct timer_list *t)
 {
-       struct catc *catc = from_timer(catc, t, timer);
+       struct catc *catc = timer_container_of(catc, t, timer);
        int i;
 
        for (i = 0; i < 8; i++)
 
 
 static void lan78xx_stat_monitor(struct timer_list *t)
 {
-       struct lan78xx_net *dev = from_timer(dev, t, stat_monitor);
+       struct lan78xx_net *dev = timer_container_of(dev, t, stat_monitor);
 
        lan78xx_defer_kevent(dev, EVENT_STAT_UPDATE);
 }
 
  */
 static void sierra_sync_timer(struct timer_list *t)
 {
-       struct sierra_net_data *priv = from_timer(priv, t, sync_timer);
+       struct sierra_net_data *priv = timer_container_of(priv, t, sync_timer);
        struct usbnet *dev = priv->usbnet;
 
        dev_dbg(&dev->udev->dev, "%s", __func__);
 
 
 static void usbnet_bh (struct timer_list *t)
 {
-       struct usbnet           *dev = from_timer(dev, t, delay);
+       struct usbnet           *dev = timer_container_of(dev, t, delay);
        struct sk_buff          *skb;
        struct skb_data         *entry;
 
 
 /* Walk the forwarding table and purge stale entries */
 static void vxlan_cleanup(struct timer_list *t)
 {
-       struct vxlan_dev *vxlan = from_timer(vxlan, t, age_timer);
+       struct vxlan_dev *vxlan = timer_container_of(vxlan, t, age_timer);
        unsigned long next_timer = jiffies + FDB_AGE_INTERVAL;
        struct vxlan_fdb *f;
 
 
 
 static void cisco_timer(struct timer_list *t)
 {
-       struct cisco_state *st = from_timer(st, t, timer);
+       struct cisco_state *st = timer_container_of(st, t, timer);
        struct net_device *dev = st->dev;
 
        spin_lock(&st->lock);
 
 
 static void fr_timer(struct timer_list *t)
 {
-       struct frad_state *st = from_timer(st, t, timer);
+       struct frad_state *st = timer_container_of(st, t, timer);
        struct net_device *dev = st->dev;
        hdlc_device *hdlc = dev_to_hdlc(dev);
        int i, cnt = 0, reliable;
 
 
 static void ppp_timer(struct timer_list *t)
 {
-       struct proto *proto = from_timer(proto, t, timer);
+       struct proto *proto = timer_container_of(proto, t, timer);
        struct ppp *ppp = get_ppp(proto->dev);
        unsigned long flags;
 
 
 
 static void wg_expired_retransmit_handshake(struct timer_list *timer)
 {
-       struct wg_peer *peer = from_timer(peer, timer,
-                                         timer_retransmit_handshake);
+       struct wg_peer *peer = timer_container_of(peer, timer,
+                                                 timer_retransmit_handshake);
 
        if (peer->timer_handshake_attempts > MAX_TIMER_HANDSHAKES) {
                pr_debug("%s: Handshake for peer %llu (%pISpfsc) did not complete after %d attempts, giving up\n",
 
 static void wg_expired_send_keepalive(struct timer_list *timer)
 {
-       struct wg_peer *peer = from_timer(peer, timer, timer_send_keepalive);
+       struct wg_peer *peer = timer_container_of(peer, timer,
+                                                 timer_send_keepalive);
 
        wg_packet_send_keepalive(peer);
        if (peer->timer_need_another_keepalive) {
 
 static void wg_expired_new_handshake(struct timer_list *timer)
 {
-       struct wg_peer *peer = from_timer(peer, timer, timer_new_handshake);
+       struct wg_peer *peer = timer_container_of(peer, timer,
+                                                 timer_new_handshake);
 
        pr_debug("%s: Retrying handshake with peer %llu (%pISpfsc) because we stopped hearing back after %d seconds\n",
                 peer->device->dev->name, peer->internal_id,
 
 static void wg_expired_zero_key_material(struct timer_list *timer)
 {
-       struct wg_peer *peer = from_timer(peer, timer, timer_zero_key_material);
+       struct wg_peer *peer = timer_container_of(peer, timer,
+                                                 timer_zero_key_material);
 
        rcu_read_lock_bh();
        if (!READ_ONCE(peer->is_dead)) {
 
 static void wg_expired_send_persistent_keepalive(struct timer_list *timer)
 {
-       struct wg_peer *peer = from_timer(peer, timer,
-                                         timer_persistent_keepalive);
+       struct wg_peer *peer = timer_container_of(peer, timer,
+                                                 timer_persistent_keepalive);
 
        if (likely(peer->persistent_keepalive_interval))
                wg_packet_send_keepalive(peer);
 
 
 static void ar5523_tx_wd_timer(struct timer_list *t)
 {
-       struct ar5523 *ar = from_timer(ar, t, tx_wd_timer);
+       struct ar5523 *ar = timer_container_of(ar, t, tx_wd_timer);
 
        ar5523_dbg(ar, "TX watchdog timer triggered\n");
        ieee80211_queue_work(ar->hw, &ar->tx_wd_work);
 
 
 static void ath10k_htt_rx_ring_refill_retry(struct timer_list *t)
 {
-       struct ath10k_htt *htt = from_timer(htt, t, rx_ring.refill_retry_timer);
+       struct ath10k_htt *htt = timer_container_of(htt, t,
+                                                   rx_ring.refill_retry_timer);
 
        ath10k_htt_rx_msdu_buff_replenish(htt);
 }
 
 
 static void ath10k_pci_ps_timer(struct timer_list *t)
 {
-       struct ath10k_pci *ar_pci = from_timer(ar_pci, t, ps_timer);
+       struct ath10k_pci *ar_pci = timer_container_of(ar_pci, t, ps_timer);
        struct ath10k *ar = ar_pci->ar;
        unsigned long flags;
 
 
 void ath10k_pci_rx_replenish_retry(struct timer_list *t)
 {
-       struct ath10k_pci *ar_pci = from_timer(ar_pci, t, rx_post_retry);
+       struct ath10k_pci *ar_pci = timer_container_of(ar_pci, t,
+                                                      rx_post_retry);
        struct ath10k *ar = ar_pci->ar;
 
        ath10k_pci_rx_post(ar);
 
 
 static void ath10k_sdio_sleep_timer_handler(struct timer_list *t)
 {
-       struct ath10k_sdio *ar_sdio = from_timer(ar_sdio, t, sleep_timer);
+       struct ath10k_sdio *ar_sdio = timer_container_of(ar_sdio, t,
+                                                        sleep_timer);
 
        ar_sdio->mbox_state = SDIO_MBOX_REQUEST_TO_SLEEP_STATE;
        queue_work(ar_sdio->workqueue, &ar_sdio->wr_async_work);
 
 
 static void ath10k_snoc_rx_replenish_retry(struct timer_list *t)
 {
-       struct ath10k_snoc *ar_snoc = from_timer(ar_snoc, t, rx_post_retry);
+       struct ath10k_snoc *ar_snoc = timer_container_of(ar_snoc, t,
+                                                        rx_post_retry);
        struct ath10k *ar = ar_snoc->ar;
 
        ath10k_snoc_rx_post(ar);
 
 
 void ath11k_ce_rx_replenish_retry(struct timer_list *t)
 {
-       struct ath11k_base *ab = from_timer(ab, t, rx_replenish_retry);
+       struct ath11k_base *ab = timer_container_of(ab, t, rx_replenish_retry);
 
        ath11k_ce_rx_post_buf(ab);
 }
 
 
 static void ath11k_dp_shadow_timer_handler(struct timer_list *t)
 {
-       struct ath11k_hp_update_timer *update_timer = from_timer(update_timer,
-                                                                t, timer);
+       struct ath11k_hp_update_timer *update_timer = timer_container_of(update_timer,
+                                                                        t,
+                                                                        timer);
        struct ath11k_base *ab = update_timer->ab;
        struct hal_srng *srng = &ab->hal.srng_list[update_timer->ring_id];
 
 
 
 static void ath11k_dp_service_mon_ring(struct timer_list *t)
 {
-       struct ath11k_base *ab = from_timer(ab, t, mon_reap_timer);
+       struct ath11k_base *ab = timer_container_of(ab, t, mon_reap_timer);
        int i;
 
        for (i = 0; i < ab->hw_params.num_rxdma_per_pdev; i++)
 
 static void ath11k_dp_rx_frag_timer(struct timer_list *timer)
 {
-       struct dp_rx_tid *rx_tid = from_timer(rx_tid, timer, frag_timer);
+       struct dp_rx_tid *rx_tid = timer_container_of(rx_tid, timer,
+                                                     frag_timer);
 
        spin_lock_bh(&rx_tid->ab->base_lock);
        if (rx_tid->last_frag_no &&
 
 
 void ath12k_ce_rx_replenish_retry(struct timer_list *t)
 {
-       struct ath12k_base *ab = from_timer(ab, t, rx_replenish_retry);
+       struct ath12k_base *ab = timer_container_of(ab, t, rx_replenish_retry);
 
        ath12k_ce_rx_post_buf(ab);
 }
 
 
 static void ath12k_dp_rx_frag_timer(struct timer_list *timer)
 {
-       struct ath12k_dp_rx_tid *rx_tid = from_timer(rx_tid, timer, frag_timer);
+       struct ath12k_dp_rx_tid *rx_tid = timer_container_of(rx_tid, timer,
+                                                            frag_timer);
 
        spin_lock_bh(&rx_tid->ab->base_lock);
        if (rx_tid->last_frag_no &&
 
 
 void disconnect_timer_handler(struct timer_list *t)
 {
-       struct ath6kl_vif *vif = from_timer(vif, t, disconnect_timer);
+       struct ath6kl_vif *vif = timer_container_of(vif, t, disconnect_timer);
 
        ath6kl_init_profile_info(vif);
        ath6kl_disconnect(vif);
 
 
 static void ath6kl_recovery_hb_timer(struct timer_list *t)
 {
-       struct ath6kl *ar = from_timer(ar, t, fw_recovery.hb_timer);
+       struct ath6kl *ar = timer_container_of(ar, t, fw_recovery.hb_timer);
        int err;
 
        if (test_bit(RECOVERY_CLEANUP, &ar->flag) ||
 
 static void aggr_timeout(struct timer_list *t)
 {
        u8 i, j;
-       struct aggr_info_conn *aggr_conn = from_timer(aggr_conn, t, timer);
+       struct aggr_info_conn *aggr_conn = timer_container_of(aggr_conn, t,
+                                                             timer);
        struct rxtid *rxtid;
        struct rxtid_stats *stats;
 
 
 
 void ath6kl_wmi_sscan_timer(struct timer_list *t)
 {
-       struct ath6kl_vif *vif = from_timer(vif, t, sched_scan_timer);
+       struct ath6kl_vif *vif = timer_container_of(vif, t, sched_scan_timer);
 
        cfg80211_sched_scan_results(vif->ar->wiphy, 0);
 }
 
 
 static void ath_chanctx_timer(struct timer_list *t)
 {
-       struct ath_softc *sc = from_timer(sc, t, sched.timer);
+       struct ath_softc *sc = timer_container_of(sc, t, sched.timer);
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
 
        ath_dbg(common, CHAN_CTX,
 
 static void ath_offchannel_timer(struct timer_list *t)
 {
-       struct ath_softc *sc = from_timer(sc, t, offchannel.timer);
+       struct ath_softc *sc = timer_container_of(sc, t, offchannel.timer);
        struct ath_chanctx *ctx;
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
 
 
  */
 static void ath_btcoex_period_timer(struct timer_list *t)
 {
-       struct ath_softc *sc = from_timer(sc, t, btcoex.period_timer);
+       struct ath_softc *sc = timer_container_of(sc, t, btcoex.period_timer);
        struct ath_hw *ah = sc->sc_ah;
        struct ath_btcoex *btcoex = &sc->btcoex;
        enum ath_stomp_type stomp_type;
  */
 static void ath_btcoex_no_stomp_timer(struct timer_list *t)
 {
-       struct ath_softc *sc = from_timer(sc, t, btcoex.no_stomp_timer);
+       struct ath_softc *sc = timer_container_of(sc, t,
+                                                 btcoex.no_stomp_timer);
        struct ath_hw *ah = sc->sc_ah;
        struct ath_btcoex *btcoex = &sc->btcoex;
 
 
 
 void ath9k_htc_tx_cleanup_timer(struct timer_list *t)
 {
-       struct ath9k_htc_priv *priv = from_timer(priv, t, tx.cleanup_timer);
+       struct ath9k_htc_priv *priv = timer_container_of(priv, t,
+                                                        tx.cleanup_timer);
        struct ath_common *common = ath9k_hw_common(priv->ah);
        struct ath9k_htc_tx_event *event, *tmp;
        struct sk_buff *skb;
 
  */
 void ath_ani_calibrate(struct timer_list *t)
 {
-       struct ath_common *common = from_timer(common, t, ani.timer);
+       struct ath_common *common = timer_container_of(common, t, ani.timer);
        struct ath_softc *sc = common->priv;
        struct ath_hw *ah = sc->sc_ah;
        bool longcal = false;
 
 
 void ath_ps_full_sleep(struct timer_list *t)
 {
-       struct ath_softc *sc = from_timer(sc, t, sleep_timer);
+       struct ath_softc *sc = timer_container_of(sc, t, sleep_timer);
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
        unsigned long flags;
        bool reset;
 
 
 static void wcn36xx_dxe_tx_timer(struct timer_list *t)
 {
-       struct wcn36xx *wcn = from_timer(wcn, t, tx_ack_timer);
+       struct wcn36xx *wcn = timer_container_of(wcn, t, tx_ack_timer);
        struct ieee80211_tx_info *info;
        unsigned long flags;
        struct sk_buff *skb;
 
 
 static void wil_connect_timer_fn(struct timer_list *t)
 {
-       struct wil6210_vif *vif = from_timer(vif, t, connect_timer);
+       struct wil6210_vif *vif = timer_container_of(vif, t, connect_timer);
        struct wil6210_priv *wil = vif_to_wil(vif);
        bool q;
 
 
 static void wil_scan_timer_fn(struct timer_list *t)
 {
-       struct wil6210_vif *vif = from_timer(vif, t, scan_timer);
+       struct wil6210_vif *vif = timer_container_of(vif, t, scan_timer);
        struct wil6210_priv *wil = vif_to_wil(vif);
 
        clear_bit(wil_status_fwready, wil->status);
 
 static void wil_p2p_discovery_timer_fn(struct timer_list *t)
 {
-       struct wil6210_vif *vif = from_timer(vif, t, p2p.discovery_timer);
+       struct wil6210_vif *vif = timer_container_of(vif, t,
+                                                    p2p.discovery_timer);
        struct wil6210_priv *wil = vif_to_wil(vif);
 
        wil_dbg_misc(wil, "p2p_discovery_timer_fn\n");
 
  */
 static void brcmf_btcoex_timerfunc(struct timer_list *t)
 {
-       struct brcmf_btcoex_info *bt_local = from_timer(bt_local, t, timer);
+       struct brcmf_btcoex_info *bt_local = timer_container_of(bt_local, t,
+                                                               timer);
        brcmf_dbg(TRACE, "enter\n");
 
        bt_local->timer_on = false;
 
 static void brcmf_escan_timeout(struct timer_list *t)
 {
        struct brcmf_cfg80211_info *cfg =
-                       from_timer(cfg, t, escan_timeout);
+                       timer_container_of(cfg, t, escan_timeout);
        struct brcmf_pub *drvr = cfg->pub;
 
        if (cfg->int_escan_map || cfg->scan_request) {
 
 static void
 brcmf_pcie_fwcon(struct timer_list *t)
 {
-       struct brcmf_pciedev_info *devinfo = from_timer(devinfo, t, timer);
+       struct brcmf_pciedev_info *devinfo = timer_container_of(devinfo, t,
+                                                               timer);
 
        if (!devinfo->console_active)
                return;
 
 static void
 brcmf_sdio_watchdog(struct timer_list *t)
 {
-       struct brcmf_sdio *bus = from_timer(bus, t, timer);
+       struct brcmf_sdio *bus = timer_container_of(bus, t, timer);
 
        if (bus->watchdog_tsk) {
                complete(&bus->watchdog_wait);
 
 
 static void libipw_crypt_deinit_handler(struct timer_list *t)
 {
-       struct libipw_crypt_info *info = from_timer(info, t,
-                                                   crypt_deinit_timer);
+       struct libipw_crypt_info *info = timer_container_of(info, t,
+                                                           crypt_deinit_timer);
        unsigned long flags;
 
        libipw_crypt_deinit_entries(info, 0);
 
 static void
 il3945_bg_rate_scale_flush(struct timer_list *t)
 {
-       struct il3945_rs_sta *rs_sta = from_timer(rs_sta, t, rate_scale_flush);
+       struct il3945_rs_sta *rs_sta = timer_container_of(rs_sta, t,
+                                                         rate_scale_flush);
        struct il_priv *il __maybe_unused = rs_sta->il;
        int unflushed = 0;
        unsigned long flags;
 
 static void
 il4965_bg_stats_periodic(struct timer_list *t)
 {
-       struct il_priv *il = from_timer(il, t, stats_periodic);
+       struct il_priv *il = timer_container_of(il, t, stats_periodic);
 
        if (test_bit(S_EXIT_PENDING, &il->status))
                return;
 
 void
 il_bg_watchdog(struct timer_list *t)
 {
-       struct il_priv *il = from_timer(il, t, watchdog);
+       struct il_priv *il = timer_container_of(il, t, watchdog);
        int cnt;
        unsigned long timeout;
 
 
  */
 static void iwl_bg_statistics_periodic(struct timer_list *t)
 {
-       struct iwl_priv *priv = from_timer(priv, t, statistics_periodic);
+       struct iwl_priv *priv = timer_container_of(priv, t,
+                                                  statistics_periodic);
 
        if (test_bit(STATUS_EXIT_PENDING, &priv->status))
                return;
  */
 static void iwl_bg_ucode_trace(struct timer_list *t)
 {
-       struct iwl_priv *priv = from_timer(priv, t, ucode_trace);
+       struct iwl_priv *priv = timer_container_of(priv, t, ucode_trace);
 
        if (test_bit(STATUS_EXIT_PENDING, &priv->status))
                return;
 
  */
 static void iwl_tt_check_exit_ct_kill(struct timer_list *t)
 {
-       struct iwl_priv *priv = from_timer(priv, t,
-                                          thermal_throttle.ct_kill_exit_tm);
+       struct iwl_priv *priv = timer_container_of(priv, t,
+                                                  thermal_throttle.ct_kill_exit_tm);
        struct iwl_tt_mgmt *tt = &priv->thermal_throttle;
 
        if (test_bit(STATUS_EXIT_PENDING, &priv->status))
 
 static void iwl_tt_ready_for_ct_kill(struct timer_list *t)
 {
-       struct iwl_priv *priv = from_timer(priv, t,
-                                          thermal_throttle.ct_kill_waiting_tm);
+       struct iwl_priv *priv = timer_container_of(priv, t,
+                                                  thermal_throttle.ct_kill_waiting_tm);
        struct iwl_tt_mgmt *tt = &priv->thermal_throttle;
 
        if (test_bit(STATUS_EXIT_PENDING, &priv->status))
 
 static void iwl_dbg_tlv_periodic_trig_handler(struct timer_list *t)
 {
        struct iwl_dbg_tlv_timer_node *timer_node =
-               from_timer(timer_node, t, timer);
+               timer_container_of(timer_node, t, timer);
        struct iwl_fwrt_dump_data dump_data = {
                .trig = (void *)timer_node->tlv->data,
        };
 
 static void iwl_mld_rx_agg_session_expired(struct timer_list *t)
 {
        struct iwl_mld_baid_data *data =
-               from_timer(data, t, session_timer);
+               timer_container_of(data, t, session_timer);
        struct iwl_mld_baid_data __rcu **rcu_ptr = data->rcu_ptr;
        struct iwl_mld_baid_data *ba_data;
        struct ieee80211_link_sta *link_sta;
 
 static void iwl_mvm_rx_agg_session_expired(struct timer_list *t)
 {
        struct iwl_mvm_baid_data *data =
-               from_timer(data, t, session_timer);
+               timer_container_of(data, t, session_timer);
        struct iwl_mvm_baid_data __rcu **rcu_ptr = data->rcu_ptr;
        struct iwl_mvm_baid_data *ba_data;
        struct ieee80211_sta *sta;
 
 
 static void iwl_txq_stuck_timer(struct timer_list *t)
 {
-       struct iwl_txq *txq = from_timer(txq, t, stuck_timer);
+       struct iwl_txq *txq = timer_container_of(txq, t, stuck_timer);
        struct iwl_trans *trans = txq->trans;
 
        spin_lock(&txq->lock);
 
 
 static void if_usb_fw_timeo(struct timer_list *t)
 {
-       struct if_usb_card *cardp = from_timer(cardp, t, fw_timeout);
+       struct if_usb_card *cardp = timer_container_of(cardp, t, fw_timeout);
 
        if (cardp->fwdnldover) {
                lbs_deb_usb("Download complete, no event. Assuming success\n");
 
  */
 static void lbs_cmd_timeout_handler(struct timer_list *t)
 {
-       struct lbs_private *priv = from_timer(priv, t, command_timer);
+       struct lbs_private *priv = timer_container_of(priv, t, command_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&priv->driver_lock, flags);
  */
 static void lbs_tx_lockup_handler(struct timer_list *t)
 {
-       struct lbs_private *priv = from_timer(priv, t, tx_lockup_timer);
+       struct lbs_private *priv = timer_container_of(priv, t,
+                                                     tx_lockup_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&priv->driver_lock, flags);
 
 
 static void if_usb_fw_timeo(struct timer_list *t)
 {
-       struct if_usb_card *cardp = from_timer(cardp, t, fw_timeout);
+       struct if_usb_card *cardp = timer_container_of(cardp, t, fw_timeout);
 
        lbtf_deb_enter(LBTF_DEB_USB);
        if (!cardp->fwdnldover) {
 
  */
 static void command_timer_fn(struct timer_list *t)
 {
-       struct lbtf_private *priv = from_timer(priv, t, command_timer);
+       struct lbtf_private *priv = timer_container_of(priv, t, command_timer);
        unsigned long flags;
        lbtf_deb_enter(LBTF_DEB_CMD);
 
 
 mwifiex_flush_data(struct timer_list *t)
 {
        struct reorder_tmr_cnxt *ctx =
-               from_timer(ctx, t, timer);
+               timer_container_of(ctx, t, timer);
        int start_win, seq_num;
 
        ctx->timer_is_set = false;
 
 void
 mwifiex_cmd_timeout_func(struct timer_list *t)
 {
-       struct mwifiex_adapter *adapter = from_timer(adapter, t, cmd_timer);
+       struct mwifiex_adapter *adapter = timer_container_of(adapter, t,
+                                                            cmd_timer);
        struct cmd_ctrl_node *cmd_node;
 
        set_bit(MWIFIEX_IS_CMD_TIMEDOUT, &adapter->work_flags);
 
 
 static void wakeup_timer_fn(struct timer_list *t)
 {
-       struct mwifiex_adapter *adapter = from_timer(adapter, t, wakeup_timer);
+       struct mwifiex_adapter *adapter = timer_container_of(adapter, t,
+                                                            wakeup_timer);
 
        mwifiex_dbg(adapter, ERROR, "Firmware wakeup failed\n");
        adapter->hw_status = MWIFIEX_HW_STATUS_RESET;
 
 
 void mwifiex_check_auto_tdls(struct timer_list *t)
 {
-       struct mwifiex_private *priv = from_timer(priv, t, auto_tdls_timer);
+       struct mwifiex_private *priv = timer_container_of(priv, t,
+                                                         auto_tdls_timer);
        struct mwifiex_auto_tdls_peer *tdls_peer;
        u16 reason = WLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED;
 
 
        struct urb_context *urb_cnxt = NULL;
        struct sk_buff *skb_send = NULL;
        struct tx_aggr_tmr_cnxt *timer_context =
-               from_timer(timer_context, t, hold_timer);
+               timer_container_of(timer_context, t, hold_timer);
        struct mwifiex_adapter *adapter = timer_context->adapter;
        struct usb_tx_data_port *port = timer_context->port;
        int err = 0;
 
 
 void mt7615_roc_timer(struct timer_list *timer)
 {
-       struct mt7615_phy *phy = from_timer(phy, timer, roc_timer);
+       struct mt7615_phy *phy = timer_container_of(phy, timer, roc_timer);
 
        ieee80211_queue_work(phy->mt76->hw, &phy->roc_work);
 }
 
 
 void mt792x_roc_timer(struct timer_list *timer)
 {
-       struct mt792x_phy *phy = from_timer(phy, timer, roc_timer);
+       struct mt792x_phy *phy = timer_container_of(phy, timer, roc_timer);
 
        ieee80211_queue_work(phy->mt76->hw, &phy->roc_work);
 }
 
 void mt792x_csa_timer(struct timer_list *timer)
 {
-       struct mt792x_vif *mvif = from_timer(mvif, timer, csa_timer);
+       struct mt792x_vif *mvif = timer_container_of(mvif, timer, csa_timer);
 
        ieee80211_queue_work(mvif->phy->mt76->hw, &mvif->csa_work);
 }
 
 
 static void listen_timer_cb(struct timer_list *t)
 {
-       struct host_if_drv *hif_drv = from_timer(hif_drv, t,
-                                                     remain_on_ch_timer);
+       struct host_if_drv *hif_drv = timer_container_of(hif_drv, t,
+                                                        remain_on_ch_timer);
        struct wilc_vif *vif = hif_drv->remain_on_ch_timer_vif;
        int result;
        struct host_if_msg *msg;
 
 static void timer_scan_cb(struct timer_list *t)
 {
-       struct host_if_drv *hif_drv = from_timer(hif_drv, t, scan_timer);
+       struct host_if_drv *hif_drv = timer_container_of(hif_drv, t,
+                                                        scan_timer);
        struct wilc_vif *vif = hif_drv->scan_timer_vif;
        struct host_if_msg *msg;
        int result;
 
 static void timer_connect_cb(struct timer_list *t)
 {
-       struct host_if_drv *hif_drv = from_timer(hif_drv, t,
-                                                     connect_timer);
+       struct host_if_drv *hif_drv = timer_container_of(hif_drv, t,
+                                                        connect_timer);
        struct wilc_vif *vif = hif_drv->connect_timer_vif;
        struct host_if_msg *msg;
        int result;
 
 static void get_periodic_rssi(struct timer_list *t)
 {
-       struct wilc_vif *vif = from_timer(vif, t, periodic_rssi);
+       struct wilc_vif *vif = timer_container_of(vif, t, periodic_rssi);
 
        if (!vif->hif_drv) {
                netdev_err(vif->ndev, "%s: hif driver is NULL", __func__);
 
 
 static void slif_data_plane_sap_timer_callb(struct timer_list *t)
 {
-       struct plfxlc_usb *usb = from_timer(usb, t, tx.tx_retry_timer);
+       struct plfxlc_usb *usb = timer_container_of(usb, t, tx.tx_retry_timer);
 
        plfxlc_send_packet_from_data_queue(usb);
        timer_setup(&usb->tx.tx_retry_timer,
 
 static void sta_queue_cleanup_timer_callb(struct timer_list *t)
 {
-       struct plfxlc_usb *usb = from_timer(usb, t, sta_queue_cleanup);
+       struct plfxlc_usb *usb = timer_container_of(usb, t, sta_queue_cleanup);
        struct plfxlc_usb_tx *tx = &usb->tx;
        int sidx;
 
 
 
 void rtl_watch_dog_timer_callback(struct timer_list *t)
 {
-       struct rtl_priv *rtlpriv = from_timer(rtlpriv, t, works.watchdog_timer);
+       struct rtl_priv *rtlpriv = timer_container_of(rtlpriv, t,
+                                                     works.watchdog_timer);
 
        queue_delayed_work(rtlpriv->works.rtl_wq,
                           &rtlpriv->works.watchdog_wq, 0);
 
 void rtl88e_dm_fast_antenna_training_callback(struct timer_list *t)
 {
        struct rtl_priv *rtlpriv =
-               from_timer(rtlpriv, t, works.fast_antenna_training_timer);
+               timer_container_of(rtlpriv, t,
+                                  works.fast_antenna_training_timer);
        struct ieee80211_hw *hw = rtlpriv->hw;
 
        rtl88e_dm_fast_ant_training(hw);
 
 
 void rtl88ee_fw_clk_off_timer_callback(struct timer_list *t)
 {
-       struct rtl_priv *rtlpriv = from_timer(rtlpriv, t,
-                                             works.fw_clockoff_timer);
+       struct rtl_priv *rtlpriv = timer_container_of(rtlpriv, t,
+                                                     works.fw_clockoff_timer);
        struct ieee80211_hw *hw = rtlpriv->hw;
 
        _rtl88ee_set_fw_ps_rf_off_low_power(hw);
 
 
 void rtw_tx_report_purge_timer(struct timer_list *t)
 {
-       struct rtw_dev *rtwdev = from_timer(rtwdev, t, tx_report.purge_timer);
+       struct rtw_dev *rtwdev = timer_container_of(rtwdev, t,
+                                                   tx_report.purge_timer);
        struct rtw_tx_report *tx_report = &rtwdev->tx_report;
        unsigned long flags;
 
 
 
 static void bl_cmd_timeout(struct timer_list *t)
 {
-       struct rsi_hw *adapter = from_timer(adapter, t, bl_cmd_timer);
+       struct rsi_hw *adapter = timer_container_of(adapter, t, bl_cmd_timer);
 
        adapter->blcmd_timer_expired = true;
        timer_delete(&adapter->bl_cmd_timer);
 
 
 void rsi_roc_timeout(struct timer_list *t)
 {
-       struct rsi_common *common = from_timer(common, t, roc_timer);
+       struct rsi_common *common = timer_container_of(common, t, roc_timer);
 
        rsi_dbg(INFO_ZONE, "Remain on channel expired\n");
 
 
 {
        LIST_HEAD(list);
        struct cw1200_queue *queue =
-               from_timer(queue, t, gc);
+               timer_container_of(queue, t, gc);
 
        spin_lock_bh(&queue->lock);
        __cw1200_queue_gc(queue, &list, true);
 
 
 void cw1200_mcast_timeout(struct timer_list *t)
 {
-       struct cw1200_common *priv = from_timer(priv, t, mcast_timeout);
+       struct cw1200_common *priv = timer_container_of(priv, t,
+                                                       mcast_timeout);
 
        wiphy_warn(priv->hw->wiphy,
                   "Multicast delivery timeout.\n");
 
 
 static void wl1271_rx_streaming_timer(struct timer_list *t)
 {
-       struct wl12xx_vif *wlvif = from_timer(wlvif, t, rx_streaming_timer);
+       struct wl12xx_vif *wlvif = timer_container_of(wlvif, t,
+                                                     rx_streaming_timer);
        struct wl1271 *wl = wlvif->wl;
        ieee80211_queue_work(wl->hw, &wlvif->rx_streaming_disable_work);
 }
 
 
 void xenvif_tx_credit_callback(struct timer_list *t)
 {
-       struct xenvif_queue *queue = from_timer(queue, t, credit_timeout);
+       struct xenvif_queue *queue = timer_container_of(queue, t,
+                                                       credit_timeout);
        tx_add_credit(queue);
        xenvif_napi_schedule_or_enable_events(queue);
 }
 
 
 static void rx_refill_timeout(struct timer_list *t)
 {
-       struct netfront_queue *queue = from_timer(queue, t, rx_refill_timer);
+       struct netfront_queue *queue = timer_container_of(queue, t,
+                                                         rx_refill_timer);
        napi_schedule(&queue->napi);
 }
 
 
 
 static void fw_dnld_timeout(struct timer_list *t)
 {
-       struct nfcmrvl_private *priv = from_timer(priv, t, fw_dnld.timer);
+       struct nfcmrvl_private *priv = timer_container_of(priv, t,
+                                                         fw_dnld.timer);
 
        nfc_err(priv->dev, "FW loading timeout");
        priv->fw_dnld.state = STATE_RESET;
 
 
 static void pn533_listen_mode_timer(struct timer_list *t)
 {
-       struct pn533 *dev = from_timer(dev, t, listen_timer);
+       struct pn533 *dev = timer_container_of(dev, t, listen_timer);
 
        dev->cancel_listen = 1;
 
 
 
 static void pn532_cmd_timeout(struct timer_list *t)
 {
-       struct pn532_uart_phy *dev = from_timer(dev, t, cmd_timeout);
+       struct pn532_uart_phy *dev = timer_container_of(dev, t, cmd_timeout);
 
        pn532_uart_send_frame(dev->priv, dev->cur_out_buf);
 }
 
 
 static void ndlc_t1_timeout(struct timer_list *t)
 {
-       struct llt_ndlc *ndlc = from_timer(ndlc, t, t1_timer);
+       struct llt_ndlc *ndlc = timer_container_of(ndlc, t, t1_timer);
 
        schedule_work(&ndlc->sm_work);
 }
 
 static void ndlc_t2_timeout(struct timer_list *t)
 {
-       struct llt_ndlc *ndlc = from_timer(ndlc, t, t2_timer);
+       struct llt_ndlc *ndlc = timer_container_of(ndlc, t, t2_timer);
 
        schedule_work(&ndlc->sm_work);
 }
 
         */
        /* hardware reset managed through VCC_UICC_OUT power supply */
        u8 param = 0x01;
-       struct st_nci_info *info = from_timer(info, t, se_info.bwi_timer);
+       struct st_nci_info *info = timer_container_of(info, t,
+                                                     se_info.bwi_timer);
 
        info->se_info.bwi_active = false;
 
 
 static void st_nci_se_activation_timeout(struct timer_list *t)
 {
-       struct st_nci_info *info = from_timer(info, t,
-                                             se_info.se_active_timer);
+       struct st_nci_info *info = timer_container_of(info, t,
+                                                     se_info.se_active_timer);
 
        info->se_info.se_active = false;
 
 
 
 static void st21nfca_se_wt_timeout(struct timer_list *t)
 {
-       struct st21nfca_hci_info *info = from_timer(info, t, se_info.bwi_timer);
+       struct st21nfca_hci_info *info = timer_container_of(info, t,
+                                                           se_info.bwi_timer);
 
        schedule_work(&info->se_info.timeout_work);
 }
 
 static void st21nfca_se_activation_timeout(struct timer_list *t)
 {
-       struct st21nfca_hci_info *info = from_timer(info, t,
-                                                   se_info.se_active_timer);
+       struct st21nfca_hci_info *info = timer_container_of(info, t,
+                                                           se_info.se_active_timer);
 
        info->se_info.se_active = false;
 
 
 
 static void nvme_anatt_timeout(struct timer_list *t)
 {
-       struct nvme_ctrl *ctrl = from_timer(ctrl, t, anatt_timer);
+       struct nvme_ctrl *ctrl = timer_container_of(ctrl, t, anatt_timer);
 
        dev_info(ctrl->device, "ANATT timeout, resetting controller.\n");
        nvme_reset_ctrl(ctrl);
 
 
 static void timeout_waiting_on_port (struct timer_list *t)
 {
-       struct parport *port = from_timer(port, t, timer);
+       struct parport *port = timer_container_of(port, t, timer);
 
        parport_ieee1284_wakeup (port);
 }
 
 {
        u8 hp_slot;
        struct pci_func *func;
-       struct slot *p_slot = from_timer(p_slot, t, task_event);
+       struct slot *p_slot = timer_container_of(p_slot, t, task_event);
        struct controller *ctrl = (struct controller *) p_slot->ctrl;
 
        pushbutton_pending = NULL;
 
  */
 static void int_poll_timeout(struct timer_list *t)
 {
-       struct controller *ctrl = from_timer(ctrl, t, poll_timer);
+       struct controller *ctrl = timer_container_of(ctrl, t, poll_timer);
 
        /* Poll for interrupt events.  regs == NULL => polling */
        shpc_isr(0, ctrl);
 
        struct bcm63xx_pcmcia_socket *skt;
        unsigned int stat, events;
 
-       skt = from_timer(skt, t, timer);
+       skt = timer_container_of(skt, t, timer);
 
        spin_lock_bh(&skt->lock);
 
 
 /* the timer is primarily to kick this socket's pccardd */
 static void electra_cf_timer(struct timer_list *t)
 {
-       struct electra_cf_socket *cf = from_timer(cf, t, timer);
+       struct electra_cf_socket *cf = timer_container_of(cf, t, timer);
        int present = electra_cf_present(cf);
 
        if (present != cf->present) {
 
 /* the timer is primarily to kick this socket's pccardd */
 static void omap_cf_timer(struct timer_list *t)
 {
-       struct omap_cf_socket   *cf = from_timer(cf, t, timer);
+       struct omap_cf_socket   *cf = timer_container_of(cf, t, timer);
        unsigned                present = omap_cf_present();
 
        if (present != cf->present) {
 
 
 static void pd6729_interrupt_wrapper(struct timer_list *t)
 {
-       struct pd6729_socket *socket = from_timer(socket, t, poll_timer);
+       struct pd6729_socket *socket = timer_container_of(socket, t,
+                                                         poll_timer);
 
        pd6729_interrupt(0, (void *)socket);
        mod_timer(&socket->poll_timer, jiffies + HZ);
 
 /* Let's poll for events in addition to IRQs since IRQ only is unreliable... */
 static void soc_common_pcmcia_poll_event(struct timer_list *t)
 {
-       struct soc_pcmcia_socket *skt = from_timer(skt, t, poll_timer);
+       struct soc_pcmcia_socket *skt = timer_container_of(skt, t, poll_timer);
        debug(skt, 4, "polling for events\n");
 
        mod_timer(&skt->poll_timer, jiffies + SOC_PCMCIA_POLL_PERIOD);
 
 
 static void yenta_interrupt_wrapper(struct timer_list *t)
 {
-       struct yenta_socket *socket = from_timer(socket, t, poll_timer);
+       struct yenta_socket *socket = timer_container_of(socket, t,
+                                                        poll_timer);
 
        yenta_interrupt(0, (void *)socket);
        socket->poll_timer.expires = jiffies + HZ;
 
 
 static void monitor_timeout(struct timer_list *t)
 {
-       struct ips_driver *ips = from_timer(ips, t, timer);
+       struct ips_driver *ips = timer_container_of(ips, t, timer);
        wake_up_process(ips->monitor);
 }
 
 
 {
        const struct pps_gpio_device_data *info;
 
-       info = from_timer(info, t, echo_timer);
+       info = timer_container_of(info, t, echo_timer);
 
        gpiod_set_value(info->echo_pin, 0);
 }
 
 static void
 ptp_ocp_watchdog(struct timer_list *t)
 {
-       struct ptp_ocp *bp = from_timer(bp, t, watchdog);
+       struct ptp_ocp *bp = timer_container_of(bp, t, watchdog);
        unsigned long flags;
        u32 status, utc_offset;
 
 
 
 static void rtc_uie_timer(struct timer_list *t)
 {
-       struct rtc_device *rtc = from_timer(rtc, t, uie_timer);
+       struct rtc_device *rtc = timer_container_of(rtc, t, uie_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&rtc->irq_lock, flags);
 
 
 static void test_rtc_alarm_handler(struct timer_list *t)
 {
-       struct rtc_test_data *rtd = from_timer(rtd, t, alarm);
+       struct rtc_test_data *rtd = timer_container_of(rtd, t, alarm);
 
        rtc_update_irq(rtd->rtc, 1, RTC_AF | RTC_IRQF);
 }
 
        unsigned long flags;
        struct dasd_device *device;
 
-       device = from_timer(device, t, timer);
+       device = timer_container_of(device, t, timer);
        spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
        /* re-activate request queue */
        dasd_device_remove_stop_bits(device, DASD_STOPPED_PENDING);
        unsigned long flags;
        struct dasd_block *block;
 
-       block = from_timer(block, t, timer);
+       block = timer_container_of(block, t, timer);
        spin_lock_irqsave(get_ccwdev_lock(block->base->cdev), flags);
        /* re-activate request queue */
        dasd_device_remove_stop_bits(block->base, DASD_STOPPED_PENDING);
 
  */
 static void raw3215_timeout(struct timer_list *t)
 {
-       struct raw3215_info *raw = from_timer(raw, t, timer);
+       struct raw3215_info *raw = timer_container_of(raw, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
 
  */
 static void tty3270_update(struct timer_list *t)
 {
-       struct tty3270 *tp = from_timer(tp, t, timer);
+       struct tty3270 *tp = timer_container_of(tp, t, timer);
        struct raw3270_request *wrq;
        u8 cmd = TC_WRITE;
        int rc, len;
 
 
 static void tape_long_busy_timeout(struct timer_list *t)
 {
-       struct tape_device *device = from_timer(device, t, lb_timeout);
+       struct tape_device *device = timer_container_of(device, t, lb_timeout);
        struct tape_request *request;
 
        spin_lock_irq(get_ccwdev_lock(device->cdev));
 
 static void
 tape_std_assign_timeout(struct timer_list *t)
 {
-       struct tape_request *   request = from_timer(request, t, timer);
+       struct tape_request *   request = timer_container_of(request, t,
+                                                                 timer);
        struct tape_device *    device = request->device;
        int rc;
 
 
 void
 ccw_device_timeout(struct timer_list *t)
 {
-       struct ccw_device_private *priv = from_timer(priv, t, timer);
+       struct ccw_device_private *priv = timer_container_of(priv, t, timer);
        struct ccw_device *cdev = priv->cdev;
 
        spin_lock_irq(cdev->ccwlock);
 
 
 static void eadm_subchannel_timeout(struct timer_list *t)
 {
-       struct eadm_private *private = from_timer(private, t, timer);
+       struct eadm_private *private = timer_container_of(private, t, timer);
        struct subchannel *sch = private->sch;
 
        spin_lock_irq(&sch->lock);
 
  */
 void ap_request_timeout(struct timer_list *t)
 {
-       struct ap_queue *aq = from_timer(aq, t, timeout);
+       struct ap_queue *aq = timer_container_of(aq, t, timeout);
 
        spin_lock_bh(&aq->lock);
        ap_wait(ap_sm_event(aq, AP_SM_EVENT_TIMEOUT));
 
 static void
 fsm_expire_timer(struct timer_list *t)
 {
-       fsm_timer *this = from_timer(this, t, tl);
+       fsm_timer *this = timer_container_of(this, t, tl);
 #if FSM_TIMER_DEBUG
        printk(KERN_DEBUG "fsm(%s): Timer %p expired\n",
               this->fi->name, this);
 
 
 static void qeth_tx_completion_timer(struct timer_list *timer)
 {
-       struct qeth_qdio_out_q *queue = from_timer(queue, timer, timer);
+       struct qeth_qdio_out_q *queue = timer_container_of(queue, timer,
+                                                          timer);
 
        napi_schedule(&queue->napi);
        QETH_TXQ_STAT_INC(queue, completion_timer);
 
  */
 void zfcp_erp_timeout_handler(struct timer_list *t)
 {
-       struct zfcp_fsf_req *fsf_req = from_timer(fsf_req, t, timer);
+       struct zfcp_fsf_req *fsf_req = timer_container_of(fsf_req, t, timer);
        struct zfcp_erp_action *act;
 
        if (fsf_req->status & ZFCP_STATUS_FSFREQ_DISMISSED)
 
 static void zfcp_erp_memwait_handler(struct timer_list *t)
 {
-       struct zfcp_erp_action *act = from_timer(act, t, timer);
+       struct zfcp_erp_action *act = timer_container_of(act, t, timer);
 
        zfcp_erp_notify(act, 0);
 }
 
 
 static void zfcp_fsf_request_timeout_handler(struct timer_list *t)
 {
-       struct zfcp_fsf_req *fsf_req = from_timer(fsf_req, t, timer);
+       struct zfcp_fsf_req *fsf_req = timer_container_of(fsf_req, t, timer);
        struct zfcp_adapter *adapter = fsf_req->adapter;
 
        zfcp_qdio_siosl(adapter);
 
 
 static void zfcp_qdio_request_timer(struct timer_list *timer)
 {
-       struct zfcp_qdio *qdio = from_timer(qdio, timer, request_timer);
+       struct zfcp_qdio *qdio = timer_container_of(qdio, timer,
+                                                   request_timer);
 
        tasklet_schedule(&qdio->request_tasklet);
 }
 
 static void
 ahd_stat_timer(struct timer_list *t)
 {
-       struct  ahd_softc *ahd = from_timer(ahd, t, stat_timer);
+       struct  ahd_softc *ahd = timer_container_of(ahd, t, stat_timer);
        u_long  s;
        int     enint_coal;
 
 
  */
 void asd_ascb_timedout(struct timer_list *t)
 {
-       struct asd_ascb *ascb = from_timer(ascb, t, timer);
+       struct asd_ascb *ascb = timer_container_of(ascb, t, timer);
        struct asd_seq_data *seq = &ascb->ha->seq;
        unsigned long flags;
 
 
 
 static void asd_clear_nexus_timedout(struct timer_list *t)
 {
-       struct asd_ascb *ascb = from_timer(ascb, t, timer);
+       struct asd_ascb *ascb = timer_container_of(ascb, t, timer);
        struct tasklet_completion_status *tcs = ascb->uldd_task;
 
        ASD_DPRINTK("%s: here\n", __func__);
 
 static void asd_tmf_timedout(struct timer_list *t)
 {
-       struct asd_ascb *ascb = from_timer(ascb, t, timer);
+       struct asd_ascb *ascb = timer_container_of(ascb, t, timer);
        struct tasklet_completion_status *tcs = ascb->uldd_task;
 
        ASD_DPRINTK("tmf timed out\n");
 
 
 static void arcmsr_set_iop_datetime(struct timer_list *t)
 {
-       struct AdapterControlBlock *pacb = from_timer(pacb, t, refresh_timer);
+       struct AdapterControlBlock *pacb = timer_container_of(pacb, t,
+                                                             refresh_timer);
        unsigned int next_time;
        struct tm tm;
 
 
 static void arcmsr_request_device_map(struct timer_list *t)
 {
-       struct AdapterControlBlock *acb = from_timer(acb, t, eternal_timer);
+       struct AdapterControlBlock *acb = timer_container_of(acb, t,
+                                                            eternal_timer);
        if (acb->acb_flags & (ACB_F_MSG_GET_CONFIG | ACB_F_BUS_RESET | ACB_F_ABORT)) {
                mod_timer(&acb->eternal_timer, jiffies + msecs_to_jiffies(6 * HZ));
        } else {
 
  */
 static void fas216_eh_timer(struct timer_list *t)
 {
-       FAS216_Info *info = from_timer(info, t, eh_timer);
+       FAS216_Info *info = timer_container_of(info, t, eh_timer);
 
        fas216_log(info, LOG_ERROR, "error handling timed out\n");
 
 
 
 static void beiscsi_hw_tpe_check(struct timer_list *t)
 {
-       struct beiscsi_hba *phba = from_timer(phba, t, hw_check);
+       struct beiscsi_hba *phba = timer_container_of(phba, t, hw_check);
        u32 wait;
 
        /* if not TPE, do nothing */
 
 static void beiscsi_hw_health_check(struct timer_list *t)
 {
-       struct beiscsi_hba *phba = from_timer(phba, t, hw_check);
+       struct beiscsi_hba *phba = timer_container_of(phba, t, hw_check);
 
        beiscsi_detect_ue(phba);
        if (beiscsi_detect_ue(phba)) {
 
 void
 bfad_bfa_tmo(struct timer_list *t)
 {
-       struct bfad_s         *bfad = from_timer(bfad, t, hal_tmo);
+       struct bfad_s         *bfad = timer_container_of(bfad, t,
+                                                             hal_tmo);
        unsigned long   flags;
        struct list_head               doneq;
 
 
 
 static void bnx2fc_destroy_timer(struct timer_list *t)
 {
-       struct bnx2fc_hba *hba = from_timer(hba, t, destroy_timer);
+       struct bnx2fc_hba *hba = timer_container_of(hba, t, destroy_timer);
 
        printk(KERN_ERR PFX "ERROR:bnx2fc_destroy_timer - "
               "Destroy compl not received!!\n");
 
 static void bnx2fc_upld_timer(struct timer_list *t)
 {
 
-       struct bnx2fc_rport *tgt = from_timer(tgt, t, upld_timer);
+       struct bnx2fc_rport *tgt = timer_container_of(tgt, t, upld_timer);
 
        BNX2FC_TGT_DBG(tgt, "upld_timer - Upload compl not received!!\n");
        /* fake upload completion */
 static void bnx2fc_ofld_timer(struct timer_list *t)
 {
 
-       struct bnx2fc_rport *tgt = from_timer(tgt, t, ofld_timer);
+       struct bnx2fc_rport *tgt = timer_container_of(tgt, t, ofld_timer);
 
        BNX2FC_TGT_DBG(tgt, "entered bnx2fc_ofld_timer\n");
        /* NOTE: This function should never be called, as
 
  */
 void bnx2i_ep_ofld_timer(struct timer_list *t)
 {
-       struct bnx2i_endpoint *ep = from_timer(ep, t, ofld_timer);
+       struct bnx2i_endpoint *ep = timer_container_of(ep, t, ofld_timer);
 
        if (ep->state == EP_STATE_OFLD_START) {
                printk(KERN_ALERT "ofld_timer: CONN_OFLD timeout\n");
 
 static void
 csio_hw_mb_timer(struct timer_list *t)
 {
-       struct csio_mbm *mbm = from_timer(mbm, t, timer);
+       struct csio_mbm *mbm = timer_container_of(mbm, t, timer);
        struct csio_hw *hw = mbm->hw;
        struct csio_mb *mbp = NULL;
 
 static void
 csio_mgmt_tmo_handler(struct timer_list *t)
 {
-       struct csio_mgmtm *mgmtm = from_timer(mgmtm, t, mgmt_timer);
+       struct csio_mgmtm *mgmtm = timer_container_of(mgmtm, t, mgmt_timer);
        struct list_head *tmp;
        struct csio_ioreq *io_req;
 
 
 
 static void act_open_retry_timer(struct timer_list *t)
 {
-       struct cxgbi_sock *csk = from_timer(csk, t, retry_timer);
+       struct cxgbi_sock *csk = timer_container_of(csk, t, retry_timer);
        struct sk_buff *skb;
 
        log_debug(1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK,
 
 static void csk_act_open_retry_timer(struct timer_list *t)
 {
        struct sk_buff *skb = NULL;
-       struct cxgbi_sock *csk = from_timer(csk, t, retry_timer);
+       struct cxgbi_sock *csk = timer_container_of(csk, t, retry_timer);
        struct cxgb4_lld_info *lldi = cxgbi_cdev_priv(csk->cdev);
        void (*send_act_open_func)(struct cxgbi_sock *, struct sk_buff *,
                                   struct l2t_entry *);
 
 static void waiting_timeout(struct timer_list *t)
 {
        unsigned long flags;
-       struct AdapterCtlBlk *acb = from_timer(acb, t, waiting_timer);
+       struct AdapterCtlBlk *acb = timer_container_of(acb, t, waiting_timer);
        DC395x_LOCK_IO(acb->scsi_host, flags);
        waiting_process_next(acb);
        DC395x_UNLOCK_IO(acb->scsi_host, flags);
 
 static void
 efct_xport_stats_timer_cb(struct timer_list *t)
 {
-       struct efct_xport *xport = from_timer(xport, t, stats_timer);
+       struct efct_xport *xport = timer_container_of(xport, t, stats_timer);
        struct efct *efct = xport->efct;
 
        efct_xport_config_stats_timer(efct);
 
 static void
 efc_els_delay_timer_cb(struct timer_list *t)
 {
-       struct efc_els_io_req *els = from_timer(els, t, delay_timer);
+       struct efc_els_io_req *els = timer_container_of(els, t, delay_timer);
 
        /* Retry delay timer expired, retry the ELS request */
        efc_els_retry(els);
 
 static void
 gidpt_delay_timer_cb(struct timer_list *t)
 {
-       struct efc_node *node = from_timer(node, t, gidpt_delay_timer);
+       struct efc_node *node = timer_container_of(node, t, gidpt_delay_timer);
 
        timer_delete(&node->gidpt_delay_timer);
 
 
 
 static void esas2r_timer_callback(struct timer_list *t)
 {
-       struct esas2r_adapter *a = from_timer(a, t, timer);
+       struct esas2r_adapter *a = timer_container_of(a, t, timer);
 
        set_bit(AF2_TIMER_TICK, &a->flags2);
 
 
  */
 static void fcoe_ctlr_timeout(struct timer_list *t)
 {
-       struct fcoe_ctlr *fip = from_timer(fip, t, timer);
+       struct fcoe_ctlr *fip = timer_container_of(fip, t, timer);
 
        schedule_work(&fip->timer_work);
 }
 
  */
 void fcoe_queue_timer(struct timer_list *t)
 {
-       struct fcoe_port *port = from_timer(port, t, timer);
+       struct fcoe_port *port = timer_container_of(port, t, timer);
 
        fcoe_check_wait_queue(port->lport, NULL);
 }
 
 
 void fdls_fabric_timer_callback(struct timer_list *t)
 {
-       struct fnic_fdls_fabric_s *fabric = from_timer(fabric, t, retry_timer);
+       struct fnic_fdls_fabric_s *fabric = timer_container_of(fabric, t,
+                                                              retry_timer);
        struct fnic_iport_s *iport =
                container_of(fabric, struct fnic_iport_s, fabric);
        struct fnic *fnic = iport->fnic;
 
 void fdls_fdmi_timer_callback(struct timer_list *t)
 {
-       struct fnic_fdls_fabric_s *fabric = from_timer(fabric, t, fdmi_timer);
+       struct fnic_fdls_fabric_s *fabric = timer_container_of(fabric, t,
+                                                              fdmi_timer);
        struct fnic_iport_s *iport =
                container_of(fabric, struct fnic_iport_s, fabric);
        struct fnic *fnic = iport->fnic;
 
 static void fdls_tport_timer_callback(struct timer_list *t)
 {
-       struct fnic_tport_s *tport = from_timer(tport, t, retry_timer);
+       struct fnic_tport_s *tport = timer_container_of(tport, t, retry_timer);
        struct fnic_iport_s *iport = (struct fnic_iport_s *) tport->iport;
        struct fnic *fnic = iport->fnic;
        uint16_t oxid;
 
  */
 void fnic_handle_fip_timer(struct timer_list *t)
 {
-       struct fnic *fnic = from_timer(fnic, t, retry_fip_timer);
+       struct fnic *fnic = timer_container_of(fnic, t, retry_fip_timer);
 
        INIT_WORK(&fnic->fip_timer_work, fnic_work_on_fip_timer);
        queue_work(fnic_fip_queue, &fnic->fip_timer_work);
 void fnic_handle_enode_ka_timer(struct timer_list *t)
 {
        uint8_t *frame;
-       struct fnic *fnic = from_timer(fnic, t, enode_ka_timer);
+       struct fnic *fnic = timer_container_of(fnic, t, enode_ka_timer);
 
        struct fnic_iport_s *iport = &fnic->iport;
        struct fip_enode_ka *penode_ka;
 void fnic_handle_vn_ka_timer(struct timer_list *t)
 {
        uint8_t *frame;
-       struct fnic *fnic = from_timer(fnic, t, vn_ka_timer);
+       struct fnic *fnic = timer_container_of(fnic, t, vn_ka_timer);
 
        struct fnic_iport_s *iport = &fnic->iport;
        struct fip_vn_port_ka *pvn_port_ka;
  */
 void fnic_handle_fcs_ka_timer(struct timer_list *t)
 {
-       struct fnic *fnic = from_timer(fnic, t, fcs_ka_timer);
+       struct fnic *fnic = timer_container_of(fnic, t, fcs_ka_timer);
 
        INIT_WORK(&fnic->fip_timer_work, fnic_work_on_fcs_ka_timer);
        queue_work(fnic_fip_queue, &fnic->fip_timer_work);
 
 
 static void fnic_notify_timer(struct timer_list *t)
 {
-       struct fnic *fnic = from_timer(fnic, t, notify_timer);
+       struct fnic *fnic = timer_container_of(fnic, t, notify_timer);
 
        fnic_handle_link_event(fnic);
        mod_timer(&fnic->notify_timer,
 
 
 static void hisi_sas_wait_phyup_timedout(struct timer_list *t)
 {
-       struct hisi_sas_phy *phy = from_timer(phy, t, timer);
+       struct hisi_sas_phy *phy = timer_container_of(phy, t, timer);
        struct hisi_hba *hisi_hba = phy->hisi_hba;
        struct device *dev = hisi_hba->dev;
        int phy_no = phy->sas_phy.id;
 
 
 static void start_phys_v1_hw(struct timer_list *t)
 {
-       struct hisi_hba *hisi_hba = from_timer(hisi_hba, t, timer);
+       struct hisi_hba *hisi_hba = timer_container_of(hisi_hba, t, timer);
        int i;
 
        for (i = 0; i < hisi_hba->n_phy; i++) {
 
 
 static void link_timeout_enable_link(struct timer_list *t)
 {
-       struct hisi_hba *hisi_hba = from_timer(hisi_hba, t, timer);
+       struct hisi_hba *hisi_hba = timer_container_of(hisi_hba, t, timer);
        int i, reg_val;
 
        for (i = 0; i < hisi_hba->n_phy; i++) {
 
 static void link_timeout_disable_link(struct timer_list *t)
 {
-       struct hisi_hba *hisi_hba = from_timer(hisi_hba, t, timer);
+       struct hisi_hba *hisi_hba = timer_container_of(hisi_hba, t, timer);
        int i, reg_val;
 
        reg_val = hisi_sas_read32(hisi_hba, PHY_STATE);
 
 static void hisi_sas_internal_abort_quirk_timeout(struct timer_list *t)
 {
-       struct hisi_sas_slot *slot = from_timer(slot, t, internal_abort_timer);
+       struct hisi_sas_slot *slot = timer_container_of(slot, t,
+                                                       internal_abort_timer);
        struct hisi_sas_port *port = slot->port;
        struct asd_sas_port *asd_sas_port;
        struct asd_sas_phy *sas_phy;
 
  **/
 static void ibmvfc_timeout(struct timer_list *t)
 {
-       struct ibmvfc_event *evt = from_timer(evt, t, timer);
+       struct ibmvfc_event *evt = timer_container_of(evt, t, timer);
        struct ibmvfc_host *vhost = evt->vhost;
        dev_err(vhost->dev, "Command timed out (%p). Resetting connection\n", evt);
        ibmvfc_reset_host(vhost);
  **/
 static void ibmvfc_adisc_timeout(struct timer_list *t)
 {
-       struct ibmvfc_target *tgt = from_timer(tgt, t, timer);
+       struct ibmvfc_target *tgt = timer_container_of(tgt, t, timer);
        struct ibmvfc_host *vhost = tgt->vhost;
        struct ibmvfc_event *evt;
        struct ibmvfc_tmf *tmf;
 
 */
 static void ibmvscsi_timeout(struct timer_list *t)
 {
-       struct srp_event_struct *evt_struct = from_timer(evt_struct, t, timer);
+       struct srp_event_struct *evt_struct = timer_container_of(evt_struct,
+                                                                t, timer);
        struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
 
        dev_err(hostdata->dev, "Command timed out (%x). Resetting connection\n",
 
  **/
 static void ipr_timeout(struct timer_list *t)
 {
-       struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
+       struct ipr_cmnd *ipr_cmd = timer_container_of(ipr_cmd, t, timer);
        unsigned long lock_flags = 0;
        struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
 
  **/
 static void ipr_oper_timeout(struct timer_list *t)
 {
-       struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
+       struct ipr_cmnd *ipr_cmd = timer_container_of(ipr_cmd, t, timer);
        unsigned long lock_flags = 0;
        struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
 
  **/
 static void ipr_abort_timeout(struct timer_list *t)
 {
-       struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
+       struct ipr_cmnd *ipr_cmd = timer_container_of(ipr_cmd, t, timer);
        struct ipr_cmnd *reset_cmd;
        struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
        struct ipr_cmd_pkt *cmd_pkt;
  **/
 static void ipr_reset_timer_done(struct timer_list *t)
 {
-       struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
+       struct ipr_cmnd *ipr_cmd = timer_container_of(ipr_cmd, t, timer);
        struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
        unsigned long lock_flags = 0;
 
 
 
 static void phy_startup_timeout(struct timer_list *t)
 {
-       struct sci_timer *tmr = from_timer(tmr, t, timer);
+       struct sci_timer *tmr = timer_container_of(tmr, t, timer);
        struct isci_host *ihost = container_of(tmr, typeof(*ihost), phy_timer);
        unsigned long flags;
        enum sci_status status;
 
 static void controller_timeout(struct timer_list *t)
 {
-       struct sci_timer *tmr = from_timer(tmr, t, timer);
+       struct sci_timer *tmr = timer_container_of(tmr, t, timer);
        struct isci_host *ihost = container_of(tmr, typeof(*ihost), timer);
        struct sci_base_state_machine *sm = &ihost->sm;
        unsigned long flags;
 
 static void power_control_timeout(struct timer_list *t)
 {
-       struct sci_timer *tmr = from_timer(tmr, t, timer);
+       struct sci_timer *tmr = timer_container_of(tmr, t, timer);
        struct isci_host *ihost = container_of(tmr, typeof(*ihost), power_control.timer);
        struct isci_phy *iphy;
        unsigned long flags;
 
 
 static void phy_sata_timeout(struct timer_list *t)
 {
-       struct sci_timer *tmr = from_timer(tmr, t, timer);
+       struct sci_timer *tmr = timer_container_of(tmr, t, timer);
        struct isci_phy *iphy = container_of(tmr, typeof(*iphy), sata_timer);
        struct isci_host *ihost = iphy->owning_port->owning_controller;
        unsigned long flags;
 
 
 static void port_timeout(struct timer_list *t)
 {
-       struct sci_timer *tmr = from_timer(tmr, t, timer);
+       struct sci_timer *tmr = timer_container_of(tmr, t, timer);
        struct isci_port *iport = container_of(tmr, typeof(*iport), timer);
        struct isci_host *ihost = iport->owning_controller;
        unsigned long flags;
 
 static void mpc_agent_timeout(struct timer_list *t)
 {
        u8 index;
-       struct sci_timer *tmr = from_timer(tmr, t, timer);
+       struct sci_timer *tmr = timer_container_of(tmr, t, timer);
        struct sci_port_configuration_agent *port_agent;
        struct isci_host *ihost;
        unsigned long flags;
 static void apc_agent_timeout(struct timer_list *t)
 {
        u32 index;
-       struct sci_timer *tmr = from_timer(tmr, t, timer);
+       struct sci_timer *tmr = timer_container_of(tmr, t, timer);
        struct sci_port_configuration_agent *port_agent;
        struct isci_host *ihost;
        unsigned long flags;
 
  */
 static void fc_lun_reset_send(struct timer_list *t)
 {
-       struct fc_fcp_pkt *fsp = from_timer(fsp, t, timer);
+       struct fc_fcp_pkt *fsp = timer_container_of(fsp, t, timer);
        struct fc_lport *lport = fsp->lp;
 
        if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) {
  */
 static void fc_fcp_timeout(struct timer_list *t)
 {
-       struct fc_fcp_pkt *fsp = from_timer(fsp, t, timer);
+       struct fc_fcp_pkt *fsp = timer_container_of(fsp, t, timer);
        struct fc_rport *rport = fsp->rport;
        struct fc_rport_libfc_priv *rpriv = rport->dd_data;
 
 
 
 static void iscsi_tmf_timedout(struct timer_list *t)
 {
-       struct iscsi_session *session = from_timer(session, t, tmf_timer);
+       struct iscsi_session *session = timer_container_of(session, t,
+                                                          tmf_timer);
 
        spin_lock(&session->frwd_lock);
        if (session->tmf_state == TMF_QUEUED) {
 
 static void iscsi_check_transport_timeouts(struct timer_list *t)
 {
-       struct iscsi_conn *conn = from_timer(conn, t, transport_timer);
+       struct iscsi_conn *conn = timer_container_of(conn, t, transport_timer);
        struct iscsi_session *session = conn->session;
        unsigned long recv_timeout, next_timeout = 0, last_recv;
 
 
 
 void sas_task_internal_timedout(struct timer_list *t)
 {
-       struct sas_task_slow *slow = from_timer(slow, t, timer);
+       struct sas_task_slow *slow = timer_container_of(slow, t, timer);
        struct sas_task *task = slow->task;
        bool is_completed = true;
        unsigned long flags;
 
 void
 lpfc_delayed_disc_tmo(struct timer_list *t)
 {
-       struct lpfc_vport *vport = from_timer(vport, t, delayed_disc_tmo);
+       struct lpfc_vport *vport = timer_container_of(vport, t,
+                                                     delayed_disc_tmo);
        struct lpfc_hba   *phba = vport->phba;
        uint32_t tmo_posted;
        unsigned long iflag;
 
 void
 lpfc_els_retry_delay(struct timer_list *t)
 {
-       struct lpfc_nodelist *ndlp = from_timer(ndlp, t, nlp_delayfunc);
+       struct lpfc_nodelist *ndlp = timer_container_of(ndlp, t,
+                                                       nlp_delayfunc);
        struct lpfc_vport *vport = ndlp->vport;
        struct lpfc_hba   *phba = vport->phba;
        unsigned long flags;
 void
 lpfc_els_timeout(struct timer_list *t)
 {
-       struct lpfc_vport *vport = from_timer(vport, t, els_tmofunc);
+       struct lpfc_vport *vport = timer_container_of(vport, t, els_tmofunc);
        struct lpfc_hba   *phba = vport->phba;
        uint32_t tmo_posted;
        unsigned long iflag;
 void
 lpfc_fabric_block_timeout(struct timer_list *t)
 {
-       struct lpfc_hba  *phba = from_timer(phba, t, fabric_block_timer);
+       struct lpfc_hba  *phba = timer_container_of(phba, t,
+                                                   fabric_block_timer);
        unsigned long iflags;
        uint32_t tmo_posted;
 
 
 void
 lpfc_disc_timeout(struct timer_list *t)
 {
-       struct lpfc_vport *vport = from_timer(vport, t, fc_disctmo);
+       struct lpfc_vport *vport = timer_container_of(vport, t, fc_disctmo);
        struct lpfc_hba   *phba = vport->phba;
        uint32_t tmo_posted;
        unsigned long flags = 0;
 
        uint32_t tmo_posted;
        unsigned long iflag;
 
-       phba = from_timer(phba, t, hb_tmofunc);
+       phba = timer_container_of(phba, t, hb_tmofunc);
 
        /* Check for heart beat timeout conditions */
        spin_lock_irqsave(&phba->pport->work_port_lock, iflag);
 {
        struct lpfc_hba *phba;
 
-       phba = from_timer(phba, t, rrq_tmr);
+       phba = timer_container_of(phba, t, rrq_tmr);
        if (test_bit(FC_UNLOADING, &phba->pport->load_flag)) {
                clear_bit(HBA_RRQ_ACTIVE, &phba->hba_flag);
                return;
 static void
 lpfc_sli4_fcf_redisc_wait_tmo(struct timer_list *t)
 {
-       struct lpfc_hba *phba = from_timer(phba, t, fcf.redisc_wait);
+       struct lpfc_hba *phba = timer_container_of(phba, t, fcf.redisc_wait);
 
        /* Don't send FCF rediscovery event if timer cancelled */
        spin_lock_irq(&phba->hbalock);
 static void
 lpfc_vmid_poll(struct timer_list *t)
 {
-       struct lpfc_hba *phba = from_timer(phba, t, inactive_vmid_poll);
+       struct lpfc_hba *phba = timer_container_of(phba, t,
+                                                  inactive_vmid_poll);
        u32 wake_up = 0;
 
        /* check if there is a need to issue QFPA */
 
  **/
 void lpfc_poll_timeout(struct timer_list *t)
 {
-       struct lpfc_hba *phba = from_timer(phba, t, fcp_poll_timer);
+       struct lpfc_hba *phba = timer_container_of(phba, t, fcp_poll_timer);
 
        if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
                lpfc_sli_handle_fast_ring_event(phba,
 
        uint32_t eratt = 0;
        uint64_t sli_intr, cnt;
 
-       phba = from_timer(phba, t, eratt_poll);
+       phba = timer_container_of(phba, t, eratt_poll);
 
        if (test_bit(FC_UNLOADING, &phba->pport->load_flag))
                return;
 void
 lpfc_mbox_timeout(struct timer_list *t)
 {
-       struct lpfc_hba  *phba = from_timer(phba, t, sli.mbox_tmo);
+       struct lpfc_hba  *phba = timer_container_of(phba, t, sli.mbox_tmo);
        unsigned long iflag;
        uint32_t tmo_posted;
 
 
 void lpfc_sli4_poll_hbtimer(struct timer_list *t)
 {
-       struct lpfc_hba *phba = from_timer(phba, t, cpuhp_poll_timer);
+       struct lpfc_hba *phba = timer_container_of(phba, t, cpuhp_poll_timer);
        struct lpfc_queue *eq;
 
        rcu_read_lock();
 
 static void
 megaraid_sysfs_get_ldmap_timeout(struct timer_list *t)
 {
-       struct uioc_timeout *timeout = from_timer(timeout, t, timer);
+       struct uioc_timeout *timeout = timer_container_of(timeout, t, timer);
        uioc_t          *uioc = timeout->uioc;
        adapter_t       *adapter = (adapter_t *)uioc->buf_vaddr;
        mraid_device_t  *raid_dev = ADAP2RAIDDEV(adapter);
 
 static void
 lld_timedout(struct timer_list *t)
 {
-       struct uioc_timeout *timeout = from_timer(timeout, t, timer);
+       struct uioc_timeout *timeout = timer_container_of(timeout, t, timer);
        uioc_t *kioc    = timeout->uioc;
 
        kioc->status    = -ETIME;
 
 static void megasas_sriov_heartbeat_handler(struct timer_list *t)
 {
        struct megasas_instance *instance =
-               from_timer(instance, t, sriov_heartbeat_timer);
+               timer_container_of(instance, t, sriov_heartbeat_timer);
 
        if (instance->hb_host_mem->HB.fwCounter !=
            instance->hb_host_mem->HB.driverCounter) {
 
 
 static void mvs_sig_time_out(struct timer_list *t)
 {
-       struct mvs_phy *phy = from_timer(phy, t, timer);
+       struct mvs_phy *phy = timer_container_of(phy, t, timer);
        struct mvs_info *mvi = phy->mvi;
        u8 phy_no;
 
 
 
 static void ncr53c8xx_timeout(struct timer_list *t)
 {
-       struct ncb *np = from_timer(np, t, timer);
+       struct ncb *np = timer_container_of(np, t, timer);
        unsigned long flags;
        struct scsi_cmnd *done_list;
 
 
  */
 static void pmcraid_bist_done(struct timer_list *t)
 {
-       struct pmcraid_cmd *cmd = from_timer(cmd, t, timer);
+       struct pmcraid_cmd *cmd = timer_container_of(cmd, t, timer);
        struct pmcraid_instance *pinstance = cmd->drv_inst;
        unsigned long lock_flags;
        int rc;
  */
 static void pmcraid_reset_alert_done(struct timer_list *t)
 {
-       struct pmcraid_cmd *cmd = from_timer(cmd, t, timer);
+       struct pmcraid_cmd *cmd = timer_container_of(cmd, t, timer);
        struct pmcraid_instance *pinstance = cmd->drv_inst;
        u32 status = ioread32(pinstance->ioa_status);
        unsigned long lock_flags;
  */
 static void pmcraid_timeout_handler(struct timer_list *t)
 {
-       struct pmcraid_cmd *cmd = from_timer(cmd, t, timer);
+       struct pmcraid_cmd *cmd = timer_container_of(cmd, t, timer);
        struct pmcraid_instance *pinstance = cmd->drv_inst;
        unsigned long lock_flags;
 
 
 
 static void qla1280_mailbox_timeout(struct timer_list *t)
 {
-       struct scsi_qla_host *ha = from_timer(ha, t, mailbox_timer);
+       struct scsi_qla_host *ha = timer_container_of(ha, t, mailbox_timer);
        struct device_reg __iomem *reg;
        reg = ha->iobase;
 
 
 /* timeout called when no traffic and delayed rx sa_index delete */
 static void qla2x00_sa_replace_iocb_timeout(struct timer_list *t)
 {
-       struct edif_list_entry *edif_entry = from_timer(edif_entry, t, timer);
+       struct edif_list_entry *edif_entry = timer_container_of(edif_entry, t,
+                                                               timer);
        fc_port_t *fcport = edif_entry->fcport;
        struct scsi_qla_host *vha = fcport->vha;
        struct  edif_sa_ctl *sa_ctl;
 
 void
 qla2x00_sp_timeout(struct timer_list *t)
 {
-       srb_t *sp = from_timer(sp, t, u.iocb_cmd.timer);
+       srb_t *sp = timer_container_of(sp, t, u.iocb_cmd.timer);
        struct srb_iocb *iocb;
        scsi_qla_host_t *vha = sp->vha;
 
 
 void
 qla2x00_timer(struct timer_list *t)
 {
-       scsi_qla_host_t *vha = from_timer(vha, t, timer);
+       scsi_qla_host_t *vha = timer_container_of(vha, t, timer);
        unsigned long   cpu_flags = 0;
        int             start_dpc = 0;
        int             index;
 
  **/
 static void qla4xxx_timer(struct timer_list *t)
 {
-       struct scsi_qla_host *ha = from_timer(ha, t, timer);
+       struct scsi_qla_host *ha = timer_container_of(ha, t, timer);
        int start_dpc = 0;
        uint16_t w;
 
 
 {
        int num_interrupts;
        u32 heartbeat_count;
-       struct pqi_ctrl_info *ctrl_info = from_timer(ctrl_info, t, heartbeat_timer);
+       struct pqi_ctrl_info *ctrl_info = timer_container_of(ctrl_info, t,
+                                                            heartbeat_timer);
 
        pqi_check_ctrl_health(ctrl_info);
        if (pqi_ctrl_offline(ctrl_info))
 
  */
 static void sym53c8xx_timer(struct timer_list *t)
 {
-       struct sym_hcb *np = from_timer(np, t, s.timer);
+       struct sym_hcb *np = timer_container_of(np, t, s.timer);
        unsigned long flags;
 
        spin_lock_irqsave(np->s.host->host_lock, flags);
 
 
 static void agilent_82357a_timeout_handler(struct timer_list *t)
 {
-       struct agilent_82357a_priv *a_priv = from_timer(a_priv, t, bulk_timer);
+       struct agilent_82357a_priv *a_priv = timer_container_of(a_priv, t,
+                                                               bulk_timer);
        struct agilent_82357a_urb_ctx *context = &a_priv->context;
 
        context->timed_out = 1;
 
 
 static void watchdog_timeout(struct timer_list *t)
 {
-       struct gpib_board *board = from_timer(board, t, timer);
+       struct gpib_board *board = timer_container_of(board, t, timer);
 
        set_bit(TIMO_NUM, &board->status);
        wake_up_interruptible(&board->wait);
 
 static void pseudo_irq_handler(struct timer_list *t)
 {
-       struct gpib_pseudo_irq *pseudo_irq = from_timer(pseudo_irq, t, timer);
+       struct gpib_pseudo_irq *pseudo_irq = timer_container_of(pseudo_irq, t,
+                                                               timer);
 
        if (pseudo_irq->handler)
                pseudo_irq->handler(0, pseudo_irq->board);
 
 
 static void wait_timeout(struct timer_list *t)
 {
-       struct wait_info *winfo = from_timer(winfo, t, timer);
+       struct wait_info *winfo = timer_container_of(winfo, t, timer);
 
        winfo->timed_out = 1;
        wake_up_interruptible(&winfo->board->wait);
 
 
 static void ni_usb_timeout_handler(struct timer_list *t)
 {
-       struct ni_usb_priv *ni_priv = from_timer(ni_priv, t, bulk_timer);
+       struct ni_usb_priv *ni_priv = timer_container_of(ni_priv, t,
+                                                        bulk_timer);
        struct ni_usb_urb_ctx *context = &ni_priv->context;
 
        context->timed_out = 1;
 
  */
 static void prp_eof_timeout(struct timer_list *t)
 {
-       struct prp_priv *priv = from_timer(priv, t, eof_timeout_timer);
+       struct prp_priv *priv = timer_container_of(priv, t, eof_timeout_timer);
        struct imx_media_video_dev *vdev = priv->vdev;
        struct imx_ic_priv *ic_priv = priv->ic_priv;
 
 
  */
 static void csi_idmac_eof_timeout(struct timer_list *t)
 {
-       struct csi_priv *priv = from_timer(priv, t, eof_timeout_timer);
+       struct csi_priv *priv = timer_container_of(priv, t, eof_timeout_timer);
        struct imx_media_video_dev *vdev = priv->vdev;
 
        v4l2_err(&priv->sd, "EOF timeout\n");
 
 */
 void _rtw_join_timeout_handler(struct timer_list *t)
 {
-       struct adapter *adapter = from_timer(adapter, t,
-                                                 mlmepriv.assoc_timer);
+       struct adapter *adapter = timer_container_of(adapter, t,
+                                                    mlmepriv.assoc_timer);
        struct  mlme_priv *pmlmepriv = &adapter->mlmepriv;
 
        if (adapter->bDriverStopped || adapter->bSurpriseRemoved)
 */
 void rtw_scan_timeout_handler(struct timer_list *t)
 {
-       struct adapter *adapter = from_timer(adapter, t,
-                                                 mlmepriv.scan_to_timer);
+       struct adapter *adapter = timer_container_of(adapter, t,
+                                                    mlmepriv.scan_to_timer);
        struct  mlme_priv *pmlmepriv = &adapter->mlmepriv;
 
        spin_lock_bh(&pmlmepriv->lock);
 
 void survey_timer_hdl(struct timer_list *t)
 {
        struct adapter *padapter =
-               from_timer(padapter, t, mlmeextpriv.survey_timer);
+               timer_container_of(padapter, t, mlmeextpriv.survey_timer);
        struct cmd_obj  *ph2c;
        struct sitesurvey_parm  *psurveyPara;
        struct cmd_priv                                 *pcmdpriv = &padapter->cmdpriv;
 void link_timer_hdl(struct timer_list *t)
 {
        struct adapter *padapter =
-               from_timer(padapter, t, mlmeextpriv.link_timer);
+               timer_container_of(padapter, t, mlmeextpriv.link_timer);
        /* static unsigned int          rx_pkt = 0; */
        /* static u64                           tx_cnt = 0; */
        /* struct xmit_priv     *pxmitpriv = &(padapter->xmitpriv); */
 
 void addba_timer_hdl(struct timer_list *t)
 {
-       struct sta_info *psta = from_timer(psta, t, addba_retry_timer);
+       struct sta_info *psta = timer_container_of(psta, t, addba_retry_timer);
        struct ht_priv *phtpriv;
 
        if (!psta)
 void sa_query_timer_hdl(struct timer_list *t)
 {
        struct adapter *padapter =
-               from_timer(padapter, t, mlmeextpriv.sa_query_timer);
+               timer_container_of(padapter, t, mlmeextpriv.sa_query_timer);
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        /* disconnect */
        spin_lock_bh(&pmlmepriv->lock);
 
 static void pwr_state_check_handler(struct timer_list *t)
 {
        struct pwrctrl_priv *pwrctrlpriv =
-               from_timer(pwrctrlpriv, t, pwr_state_check_timer);
+               timer_container_of(pwrctrlpriv, t, pwr_state_check_timer);
        struct adapter *padapter = pwrctrlpriv->adapter;
 
        rtw_ps_cmd(padapter);
  */
 static void pwr_rpwm_timeout_handler(struct timer_list *t)
 {
-       struct pwrctrl_priv *pwrpriv = from_timer(pwrpriv, t, pwr_rpwm_timer);
+       struct pwrctrl_priv *pwrpriv = timer_container_of(pwrpriv, t,
+                                                         pwr_rpwm_timer);
 
        if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2))
                return;
 
 void rtw_reordering_ctrl_timeout_handler(struct timer_list *t)
 {
        struct recv_reorder_ctrl *preorder_ctrl =
-               from_timer(preorder_ctrl, t, reordering_ctrl_timer);
+               timer_container_of(preorder_ctrl, t, reordering_ctrl_timer);
        struct adapter *padapter = preorder_ctrl->padapter;
        struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
 
 static void rtw_signal_stat_timer_hdl(struct timer_list *t)
 {
        struct adapter *adapter =
-               from_timer(adapter, t, recvpriv.signal_stat_timer);
+               timer_container_of(adapter, t, recvpriv.signal_stat_timer);
        struct recv_priv *recvpriv = &adapter->recvpriv;
 
        u32 tmp_s, tmp_q;
 
 static void _dynamic_check_timer_handler(struct timer_list *t)
 {
        struct adapter *adapter =
-               from_timer(adapter, t, mlmepriv.dynamic_chk_timer);
+               timer_container_of(adapter, t, mlmepriv.dynamic_chk_timer);
 
        rtw_dynamic_check_timer_handler(adapter);
 
 static void _rtw_set_scan_deny_timer_hdl(struct timer_list *t)
 {
        struct adapter *adapter =
-               from_timer(adapter, t, mlmepriv.set_scan_deny_timer);
+               timer_container_of(adapter, t, mlmepriv.set_scan_deny_timer);
 
        rtw_clear_scan_deny(adapter);
 }
 
 
 void iscsit_handle_time2retain_timeout(struct timer_list *t)
 {
-       struct iscsit_session *sess = from_timer(sess, t, time2retain_timer);
+       struct iscsit_session *sess = timer_container_of(sess, t,
+                                                        time2retain_timer);
        struct iscsi_portal_group *tpg = sess->tpg;
        struct se_portal_group *se_tpg = &tpg->tpg_se_tpg;
 
 
 {
        u32 pdu_length = 0, pdu_offset = 0;
        u32 r2t_length = 0, r2t_offset = 0;
-       struct iscsit_cmd *cmd = from_timer(cmd, t, dataout_timer);
+       struct iscsit_cmd *cmd = timer_container_of(cmd, t, dataout_timer);
        struct iscsit_conn *conn = cmd->conn;
        struct iscsit_session *sess = NULL;
        struct iscsi_node_attrib *na;
 
 
 void iscsit_handle_nopin_response_timeout(struct timer_list *t)
 {
-       struct iscsit_conn *conn = from_timer(conn, t, nopin_response_timer);
+       struct iscsit_conn *conn = timer_container_of(conn, t,
+                                                     nopin_response_timer);
        struct iscsit_session *sess = conn->sess;
 
        iscsit_inc_conn_usage_count(conn);
 
 void iscsit_handle_nopin_timeout(struct timer_list *t)
 {
-       struct iscsit_conn *conn = from_timer(conn, t, nopin_timer);
+       struct iscsit_conn *conn = timer_container_of(conn, t, nopin_timer);
 
        iscsit_inc_conn_usage_count(conn);
 
 
 void iscsit_login_timeout(struct timer_list *t)
 {
-       struct iscsit_conn *conn = from_timer(conn, t, login_timer);
+       struct iscsit_conn *conn = timer_container_of(conn, t, login_timer);
        struct iscsi_login *login = conn->login;
 
        pr_debug("Entering iscsi_target_login_timeout >>>>>>>>>>>>>>>>>>>\n");
 
 
 static void tcmu_cmd_timedout(struct timer_list *t)
 {
-       struct tcmu_dev *udev = from_timer(udev, t, cmd_timer);
+       struct tcmu_dev *udev = timer_container_of(udev, t, cmd_timer);
 
        pr_debug("%s cmd timeout has expired\n", udev->name);
        tcmu_device_timedout(udev);
 
 static void tcmu_qfull_timedout(struct timer_list *t)
 {
-       struct tcmu_dev *udev = from_timer(udev, t, qfull_timer);
+       struct tcmu_dev *udev = timer_container_of(udev, t, qfull_timer);
 
        pr_debug("%s qfull timeout has expired\n", udev->name);
        tcmu_device_timedout(udev);
 
 
 static void ipwireless_setup_timer(struct timer_list *t)
 {
-       struct ipw_hardware *hw = from_timer(hw, t, setup_timer);
+       struct ipw_hardware *hw = timer_container_of(hw, t, setup_timer);
 
        hw->init_loops++;
 
 
  */
 static void mips_ejtag_fdc_tty_timer(struct timer_list *t)
 {
-       struct mips_ejtag_fdc_tty *priv = from_timer(priv, t, poll_timer);
+       struct mips_ejtag_fdc_tty *priv = timer_container_of(priv, t,
+                                                            poll_timer);
 
        mips_ejtag_fdc_handle(priv);
        if (!priv->removing)
 
 
 static void gsm_control_keep_alive(struct timer_list *t)
 {
-       struct gsm_mux *gsm = from_timer(gsm, t, ka_timer);
+       struct gsm_mux *gsm = timer_container_of(gsm, t, ka_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&gsm->control_lock, flags);
 
 static void gsm_control_retransmit(struct timer_list *t)
 {
-       struct gsm_mux *gsm = from_timer(gsm, t, t2_timer);
+       struct gsm_mux *gsm = timer_container_of(gsm, t, t2_timer);
        struct gsm_control *ctrl;
        unsigned long flags;
        spin_lock_irqsave(&gsm->control_lock, flags);
 
 static void gsm_dlci_t1(struct timer_list *t)
 {
-       struct gsm_dlci *dlci = from_timer(dlci, t, t1);
+       struct gsm_dlci *dlci = timer_container_of(dlci, t, t1);
        struct gsm_mux *gsm = dlci->gsm;
 
        switch (dlci->state) {
  */
 static void gsm_kick_timer(struct timer_list *t)
 {
-       struct gsm_mux *gsm = from_timer(gsm, t, kick_timer);
+       struct gsm_mux *gsm = timer_container_of(gsm, t, kick_timer);
        unsigned long flags;
        int sent = 0;
 
 
 
 static void aspeed_vuart_unthrottle_exp(struct timer_list *timer)
 {
-       struct aspeed_vuart *vuart = from_timer(vuart, timer, unthrottle_timer);
+       struct aspeed_vuart *vuart = timer_container_of(vuart, timer,
+                                                       unthrottle_timer);
        struct uart_8250_port *up = vuart->port;
 
        if (!tty_buffer_space_avail(&up->port.state->port)) {
 
  */
 static void serial8250_timeout(struct timer_list *t)
 {
-       struct uart_8250_port *up = from_timer(up, t, timer);
+       struct uart_8250_port *up = timer_container_of(up, t, timer);
 
        up->port.handle_irq(&up->port);
        mod_timer(&up->timer, jiffies + uart_poll_timeout(&up->port));
 
 static void serial8250_backup_timeout(struct timer_list *t)
 {
-       struct uart_8250_port *up = from_timer(up, t, timer);
+       struct uart_8250_port *up = timer_container_of(up, t, timer);
        unsigned int iir, ier = 0, lsr;
        unsigned long flags;
 
 
 
 static void altera_uart_timer(struct timer_list *t)
 {
-       struct altera_uart *pp = from_timer(pp, t, tmr);
+       struct altera_uart *pp = timer_container_of(pp, t, tmr);
        struct uart_port *port = &pp->port;
 
        altera_uart_interrupt(0, port);
 
  */
 static void pl011_dma_rx_poll(struct timer_list *t)
 {
-       struct uart_amba_port *uap = from_timer(uap, t, dmarx.timer);
+       struct uart_amba_port *uap = timer_container_of(uap, t, dmarx.timer);
        struct tty_port *port = &uap->port.state->port;
        struct pl011_dmarx_data *dmarx = &uap->dmarx;
        struct dma_chan *rxchan = uap->dmarx.chan;
 
 
 static void atmel_uart_timer_callback(struct timer_list *t)
 {
-       struct atmel_uart_port *atmel_port = from_timer(atmel_port, t,
-                                                       uart_timer);
+       struct atmel_uart_port *atmel_port = timer_container_of(atmel_port, t,
+                                                               uart_timer);
        struct uart_port *port = &atmel_port->uart;
 
        if (!atomic_read(&atmel_port->tasklet_shutdown)) {
 
  */
 static void lpuart_timer_func(struct timer_list *t)
 {
-       struct lpuart_port *sport = from_timer(sport, t, lpuart_timer);
+       struct lpuart_port *sport = timer_container_of(sport, t, lpuart_timer);
        enum dma_status dmastat;
        struct dma_chan *chan = sport->dma_rx_chan;
        struct circ_buf *ring = &sport->rx_ring;
 
  */
 static void imx_uart_timeout(struct timer_list *t)
 {
-       struct imx_port *sport = from_timer(sport, t, timer);
+       struct imx_port *sport = timer_container_of(sport, t, timer);
        unsigned long flags;
 
        if (sport->port.state) {
 
 
 static void liteuart_timer(struct timer_list *t)
 {
-       struct liteuart_port *uart = from_timer(uart, t, timer);
+       struct liteuart_port *uart = timer_container_of(uart, t, timer);
        struct uart_port *port = &uart->port;
 
        liteuart_interrupt(0, port);
 
 
 static void max3100_timeout(struct timer_list *t)
 {
-       struct max3100_port *s = from_timer(s, t, timer);
+       struct max3100_port *s = timer_container_of(s, t, timer);
 
        max3100_dowork(s);
        mod_timer(&s->timer, jiffies + uart_poll_timeout(&s->port));
 
  */
 static void sa1100_timeout(struct timer_list *t)
 {
-       struct sa1100_port *sport = from_timer(sport, t, timer);
+       struct sa1100_port *sport = timer_container_of(sport, t, timer);
        unsigned long flags;
 
        if (sport->port.state) {
 
 
 static void sccnxp_timer(struct timer_list *t)
 {
-       struct sccnxp_port *s = from_timer(s, t, timer);
+       struct sccnxp_port *s = timer_container_of(s, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&s->lock, flags);
 
 
 static void rx_fifo_timer_fn(struct timer_list *t)
 {
-       struct sci_port *s = from_timer(s, t, rx_fifo_timer);
+       struct sci_port *s = timer_container_of(s, t, rx_fifo_timer);
        struct uart_port *port = &s->port;
 
        dev_dbg(port->dev, "Rx timed out\n");
 
  */
 static void tx_timeout(struct timer_list *t)
 {
-       struct slgt_info *info = from_timer(info, t, tx_timer);
+       struct slgt_info *info = timer_container_of(info, t, tx_timer);
        unsigned long flags;
 
        DBGINFO(("%s tx_timeout\n", info->device_name));
  */
 static void rx_timeout(struct timer_list *t)
 {
-       struct slgt_info *info = from_timer(info, t, rx_timer);
+       struct slgt_info *info = timer_container_of(info, t, rx_timer);
        unsigned long flags;
 
        DBGINFO(("%s rx_timeout\n", info->device_name));
 
 
 static void sysrq_do_reset(struct timer_list *t)
 {
-       struct sysrq_state *state = from_timer(state, t, keyreset_timer);
+       struct sysrq_state *state = timer_container_of(state, t,
+                                                      keyreset_timer);
 
        state->reset_requested = true;
 
 
 
 static void vcc_rx_timer(struct timer_list *t)
 {
-       struct vcc_port *port = from_timer(port, t, rx_timer);
+       struct vcc_port *port = timer_container_of(port, t, rx_timer);
        struct vio_driver_state *vio;
        unsigned long flags;
        int rv;
 
 static void vcc_tx_timer(struct timer_list *t)
 {
-       struct vcc_port *port = from_timer(port, t, tx_timer);
+       struct vcc_port *port = timer_container_of(port, t, tx_timer);
        struct vio_vcc *pkt;
        unsigned long flags;
        size_t tosend = 0;
 
 
 static void cxacru_timeout_kill(struct timer_list *t)
 {
-       struct cxacru_timer *timer = from_timer(timer, t, timer);
+       struct cxacru_timer *timer = timer_container_of(timer, t, timer);
 
        usb_unlink_urb(timer->urb);
 }
 
 
 static void speedtch_status_poll(struct timer_list *t)
 {
-       struct speedtch_instance_data *instance = from_timer(instance, t,
-                                                            status_check_timer);
+       struct speedtch_instance_data *instance = timer_container_of(instance,
+                                                                    t,
+                                                                    status_check_timer);
 
        schedule_work(&instance->status_check_work);
 
 
 static void speedtch_resubmit_int(struct timer_list *t)
 {
-       struct speedtch_instance_data *instance = from_timer(instance, t,
-                                                            resubmit_timer);
+       struct speedtch_instance_data *instance = timer_container_of(instance,
+                                                                    t,
+                                                                    resubmit_timer);
        struct urb *int_urb = instance->int_urb;
        int ret;
 
 
 
 static void usbatm_tasklet_schedule(struct timer_list *t)
 {
-       struct usbatm_channel *channel = from_timer(channel, t, delay);
+       struct usbatm_channel *channel = timer_container_of(channel, t, delay);
 
        tasklet_schedule(&channel->tasklet);
 }
 
 /* timer callback */
 static void rh_timer_func (struct timer_list *t)
 {
-       struct usb_hcd *_hcd = from_timer(_hcd, t, rh_timer);
+       struct usb_hcd *_hcd = timer_container_of(_hcd, t, rh_timer);
 
        usb_hcd_poll_rh_status(_hcd);
 }
 
 
 static void hub_retry_irq_urb(struct timer_list *t)
 {
-       struct usb_hub *hub = from_timer(hub, t, irq_urb_retry);
+       struct usb_hub *hub = timer_container_of(hub, t, irq_urb_retry);
 
        hub_resubmit_irq_urb(hub);
 }
 
 
 static void dwc2_wakeup_detected(struct timer_list *t)
 {
-       struct dwc2_hsotg *hsotg = from_timer(hsotg, t, wkp_timer);
+       struct dwc2_hsotg *hsotg = timer_container_of(hsotg, t, wkp_timer);
        u32 hprt0;
 
        dev_dbg(hsotg->dev, "%s()\n", __func__);
 
  */
 static void dwc2_unreserve_timer_fn(struct timer_list *t)
 {
-       struct dwc2_qh *qh = from_timer(qh, t, unreserve_timer);
+       struct dwc2_qh *qh = timer_container_of(qh, t, unreserve_timer);
        struct dwc2_hsotg *hsotg = qh->hsotg;
        unsigned long flags;
 
 
 
 static void at91_vbus_timer(struct timer_list *t)
 {
-       struct at91_udc *udc = from_timer(udc, t, vbus_timer);
+       struct at91_udc *udc = timer_container_of(udc, t, vbus_timer);
 
        /*
         * If we are polling vbus it is likely that the gpio is on an
 
  */
 static enum hrtimer_restart dummy_timer(struct hrtimer *t)
 {
-       struct dummy_hcd        *dum_hcd = from_timer(dum_hcd, t, timer);
+       struct dummy_hcd        *dum_hcd = timer_container_of(dum_hcd, t,
+                                                             timer);
        struct dummy            *dum = dum_hcd->dum;
        struct urbp             *urbp, *tmp;
        unsigned long           flags;
 
 
 static void m66592_timer(struct timer_list *t)
 {
-       struct m66592 *m66592 = from_timer(m66592, t, timer);
+       struct m66592 *m66592 = timer_container_of(m66592, t, timer);
        unsigned long flags;
        u16 tmp;
 
 
 
 static void pio_out_timer(struct timer_list *t)
 {
-       struct omap_ep  *ep = from_timer(ep, t, timer);
+       struct omap_ep  *ep = timer_container_of(ep, t, timer);
        unsigned long   flags;
        u16             stat_flg;
 
 
 
 static void udc_watchdog(struct timer_list *t)
 {
-       struct pxa25x_udc       *dev = from_timer(dev, t, timer);
+       struct pxa25x_udc       *dev = timer_container_of(dev, t, timer);
 
        local_irq_disable();
        if (dev->ep0state == EP0_STALL
 
 
 static void r8a66597_timer(struct timer_list *t)
 {
-       struct r8a66597 *r8a66597 = from_timer(r8a66597, t, timer);
+       struct r8a66597 *r8a66597 = timer_container_of(r8a66597, t, timer);
        unsigned long flags;
        u16 tmp;
 
 
 
 static void quirk_poll_timer(struct timer_list *t)
 {
-       struct ehci_platform_priv *priv = from_timer(priv, t, poll_timer);
+       struct ehci_platform_priv *priv = timer_container_of(priv, t,
+                                                            poll_timer);
        struct ehci_hcd *ehci = container_of((void *)priv, struct ehci_hcd,
                                             priv);
 
 
  */
 static void io_watchdog_func(struct timer_list *t)
 {
-       struct ohci_hcd *ohci = from_timer(ohci, t, io_watchdog);
+       struct ohci_hcd *ohci = timer_container_of(ohci, t,
+                                                         io_watchdog);
        bool            takeback_all_pending = false;
        u32             status;
        u32             head;
 
 
 static void oxu_watchdog(struct timer_list *t)
 {
-       struct oxu_hcd  *oxu = from_timer(oxu, t, watchdog);
+       struct oxu_hcd  *oxu = timer_container_of(oxu, t, watchdog);
        unsigned long flags;
 
        spin_lock_irqsave(&oxu->lock, flags);
 
 
 static void r8a66597_interval_timer(struct timer_list *t)
 {
-       struct r8a66597_timers *timers = from_timer(timers, t, interval);
+       struct r8a66597_timers *timers = timer_container_of(timers, t,
+                                                           interval);
        struct r8a66597 *r8a66597 = timers->r8a66597;
        unsigned long flags;
        u16 pipenum;
 
 static void r8a66597_td_timer(struct timer_list *t)
 {
-       struct r8a66597_timers *timers = from_timer(timers, t, td);
+       struct r8a66597_timers *timers = timer_container_of(timers, t, td);
        struct r8a66597 *r8a66597 = timers->r8a66597;
        unsigned long flags;
        u16 pipenum;
 
 static void r8a66597_timer(struct timer_list *t)
 {
-       struct r8a66597 *r8a66597 = from_timer(r8a66597, t, rh_timer);
+       struct r8a66597 *r8a66597 = timer_container_of(r8a66597, t, rh_timer);
        unsigned long flags;
        int port;
 
 
 static void
 sl811h_timer(struct timer_list *t)
 {
-       struct sl811    *sl811 = from_timer(sl811, t, timer);
+       struct sl811    *sl811 = timer_container_of(sl811, t, timer);
        unsigned long   flags;
        u8              irqstat;
        u8              signaling = sl811->ctrl1 & SL11H_CTL1MASK_FORCE;
 
 
 static void uhci_fsbr_timeout(struct timer_list *t)
 {
-       struct uhci_hcd *uhci = from_timer(uhci, t, fsbr_timer);
+       struct uhci_hcd *uhci = timer_container_of(uhci, t, fsbr_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&uhci->lock, flags);
 
 
 static void xenhcd_watchdog(struct timer_list *timer)
 {
-       struct xenhcd_info *info = from_timer(info, timer, watchdog);
+       struct xenhcd_info *info = timer_container_of(info, timer, watchdog);
        unsigned long flags;
 
        spin_lock_irqsave(&info->lock, flags);
 
        u32 temp;
        int i;
 
-       xhci = from_timer(xhci, t, comp_mode_recovery_timer);
+       xhci = timer_container_of(xhci, t, comp_mode_recovery_timer);
        rhub = &xhci->usb3_rhub;
        hcd = rhub->hcd;
 
 
 
 static void isp1760_udc_vbus_poll(struct timer_list *t)
 {
-       struct isp1760_udc *udc = from_timer(udc, t, vbus_timer);
+       struct isp1760_udc *udc = timer_container_of(udc, t, vbus_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&udc->lock, flags);
 
 
 static void sg_timeout(struct timer_list *t)
 {
-       struct sg_timeout *timeout = from_timer(timeout, t, timer);
+       struct sg_timeout *timeout = timer_container_of(timeout, t, timer);
 
        usb_sg_cancel(timeout->req);
 }
 
 
 static void otg_timer(struct timer_list *t)
 {
-       struct musb             *musb = from_timer(musb, t, dev_timer);
+       struct musb             *musb = timer_container_of(musb, t,
+                                                             dev_timer);
        void __iomem            *mregs = musb->mregs;
        u8                      devctl;
        unsigned long           flags;
 
 
 static void otg_timer(struct timer_list *t)
 {
-       struct musb             *musb = from_timer(musb, t, dev_timer);
+       struct musb             *musb = timer_container_of(musb, t,
+                                                             dev_timer);
        void __iomem            *mregs = musb->mregs;
        u8                      devctl;
        unsigned long           flags;
 
  */
 static void musb_otg_timer_func(struct timer_list *t)
 {
-       struct musb     *musb = from_timer(musb, t, otg_timer);
+       struct musb     *musb = timer_container_of(musb, t, otg_timer);
        unsigned long   flags;
 
        spin_lock_irqsave(&musb->lock, flags);
 
 
 static void otg_timer(struct timer_list *t)
 {
-       struct musb *musb = from_timer(musb, t, dev_timer);
+       struct musb *musb = timer_container_of(musb, t, dev_timer);
        struct device *dev = musb->controller;
        unsigned long flags;
        int err;
 
 
 static void musb_do_idle(struct timer_list *t)
 {
-       struct musb     *musb = from_timer(musb, t, dev_timer);
+       struct musb     *musb = timer_container_of(musb, t, dev_timer);
        unsigned long   flags;
 
        spin_lock_irqsave(&musb->lock, flags);
 
  */
 static void timeout_handler(struct timer_list *t)
 {
-       struct garmin_data *garmin_data_p = from_timer(garmin_data_p, t, timer);
+       struct garmin_data *garmin_data_p = timer_container_of(garmin_data_p,
+                                                              t, timer);
 
        /* send the next queued packet to the tty port */
        if (garmin_data_p->mode == MODE_NATIVE)
 
 
 static void mos7840_led_off(struct timer_list *t)
 {
-       struct moschip_port *mcs = from_timer(mcs, t, led_timer1);
+       struct moschip_port *mcs = timer_container_of(mcs, t, led_timer1);
 
        /* Turn off LED */
        mos7840_set_led_async(mcs, 0x0300, MODEM_CONTROL_REGISTER);
 
 static void mos7840_led_flag_off(struct timer_list *t)
 {
-       struct moschip_port *mcs = from_timer(mcs, t, led_timer2);
+       struct moschip_port *mcs = timer_container_of(mcs, t, led_timer2);
 
        clear_bit_unlock(MOS7840_FLAG_LED_BUSY, &mcs->flags);
 }
 
 
 static void rts51x_suspend_timer_fn(struct timer_list *t)
 {
-       struct rts51x_chip *chip = from_timer(chip, t, rts51x_suspend_timer);
+       struct rts51x_chip *chip = timer_container_of(chip, t,
+                                                     rts51x_suspend_timer);
        struct us_data *us = chip->us;
 
        switch (rts51x_get_stat(chip)) {
 
 
 static void v_timer(struct timer_list *t)
 {
-       struct vudc *udc = from_timer(udc, t, tr_timer.timer);
+       struct vudc *udc = timer_container_of(udc, t, tr_timer.timer);
        struct transfer_timer *timer = &udc->tr_timer;
        struct urbp *urb_p, *tmp;
        unsigned long flags;
 
  */
 static void radeon_lvds_timer_func(struct timer_list *t)
 {
-       struct radeonfb_info *rinfo = from_timer(rinfo, t, lvds_timer);
+       struct radeonfb_info *rinfo = timer_container_of(rinfo, t, lvds_timer);
 
        radeon_engine_idle();
 
 
  */
 static void vbg_heartbeat_timer(struct timer_list *t)
 {
-       struct vbg_dev *gdev = from_timer(gdev, t, heartbeat_timer);
+       struct vbg_dev *gdev = timer_container_of(gdev, t, heartbeat_timer);
 
        vbg_req_perform(gdev, gdev->guest_heartbeat_req);
        mod_timer(&gdev->heartbeat_timer,
 
  */
 static void at91_ping(struct timer_list *t)
 {
-       struct at91wdt *wdt = from_timer(wdt, t, timer);
+       struct at91wdt *wdt = timer_container_of(wdt, t, timer);
        if (time_before(jiffies, wdt->next_heartbeat) ||
            !watchdog_active(&wdt->wdd)) {
                at91_wdt_reset(wdt);
 
 
 static void bcm47xx_wdt_soft_timer_tick(struct timer_list *t)
 {
-       struct bcm47xx_wdt *wdt = from_timer(wdt, t, soft_timer);
+       struct bcm47xx_wdt *wdt = timer_container_of(wdt, t, soft_timer);
        u32 next_tick = min(wdt->wdd.timeout * 1000, wdt->max_timer_ms);
 
        if (!atomic_dec_and_test(&wdt->soft_ticks)) {
 
 
 static void lpc18xx_wdt_timer_feed(struct timer_list *t)
 {
-       struct lpc18xx_wdt_dev *lpc18xx_wdt = from_timer(lpc18xx_wdt, t, timer);
+       struct lpc18xx_wdt_dev *lpc18xx_wdt = timer_container_of(lpc18xx_wdt,
+                                                                t, timer);
        struct watchdog_device *wdt_dev = &lpc18xx_wdt->wdt_dev;
 
        lpc18xx_wdt_feed(wdt_dev);
 
 
 static void sh_wdt_ping(struct timer_list *t)
 {
-       struct sh_wdt *wdt = from_timer(wdt, t, timer);
+       struct sh_wdt *wdt = timer_container_of(wdt, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&wdt->lock, flags);
 
 
 void dlm_rsb_scan(struct timer_list *timer)
 {
-       struct dlm_ls *ls = from_timer(ls, timer, ls_scan_timer);
+       struct dlm_ls *ls = timer_container_of(ls, timer, ls_scan_timer);
        int our_nodeid = dlm_our_nodeid();
        struct dlm_rsb *r;
        int rv;
 
  */
 static void print_daily_error_info(struct timer_list *t)
 {
-       struct ext4_sb_info *sbi = from_timer(sbi, t, s_err_report);
+       struct ext4_sb_info *sbi = timer_container_of(sbi, t, s_err_report);
        struct super_block *sb = sbi->s_sb;
        struct ext4_super_block *es = sbi->s_es;
 
 
 
 static void commit_timeout(struct timer_list *t)
 {
-       journal_t *journal = from_timer(journal, t, j_commit_timer);
+       journal_t *journal = timer_container_of(journal, t, j_commit_timer);
 
        wake_up_process(journal->j_task);
 }
 
 
 static void nilfs_construction_timeout(struct timer_list *t)
 {
-       struct nilfs_sc_info *sci = from_timer(sci, t, sc_timer);
+       struct nilfs_sc_info *sci = timer_container_of(sci, t, sc_timer);
 
        wake_up_process(sci->sc_task);
 }
 
  * where shutdown is going to be involved */
 static void o2net_idle_timer(struct timer_list *t)
 {
-       struct o2net_sock_container *sc = from_timer(sc, t, sc_idle_timeout);
+       struct o2net_sock_container *sc = timer_container_of(sc, t,
+                                                            sc_idle_timeout);
        struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num);
 #ifdef CONFIG_DEBUG_FS
        unsigned long msecs = ktime_to_ms(ktime_get()) -
 
 static inline void timer_destroy_on_stack(struct timer_list *timer) { }
 #endif
 
-#define from_timer(var, callback_timer, timer_fieldname) \
+#define timer_container_of(var, callback_timer, timer_fieldname)       \
        container_of(callback_timer, typeof(*var), timer_fieldname)
 
 /**
 
  */
 void kthread_delayed_work_timer_fn(struct timer_list *t)
 {
-       struct kthread_delayed_work *dwork = from_timer(dwork, t, timer);
+       struct kthread_delayed_work *dwork = timer_container_of(dwork, t,
+                                                               timer);
        struct kthread_work *work = &dwork->work;
        struct kthread_worker *worker = work->worker;
        unsigned long flags;
 
        unsigned long flags;
        bool needwake = false;
        struct rcu_tasks *rtp;
-       struct rcu_tasks_percpu *rtpcp = from_timer(rtpcp, tlp, lazy_timer);
+       struct rcu_tasks_percpu *rtpcp = timer_container_of(rtpcp, tlp,
+                                                           lazy_timer);
 
        rtp = rtpcp->rtpp;
        raw_spin_lock_irqsave_rcu_node(rtpcp, flags);
 
 static void do_nocb_deferred_wakeup_timer(struct timer_list *t)
 {
        unsigned long flags;
-       struct rcu_data *rdp = from_timer(rdp, t, nocb_timer);
+       struct rcu_data *rdp = timer_container_of(rdp, t, nocb_timer);
 
        WARN_ON_ONCE(rdp->nocb_gp_rdp != rdp);
        trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("Timer"));
 
 
 static void poll_timer_fn(struct timer_list *t)
 {
-       struct psi_group *group = from_timer(group, t, rtpoll_timer);
+       struct psi_group *group = timer_container_of(group, t, rtpoll_timer);
 
        atomic_set(&group->rtpoll_wakeup, 1);
        wake_up_interruptible(&group->rtpoll_wait);
 
 
 static void process_timeout(struct timer_list *t)
 {
-       struct process_timer *timeout = from_timer(timeout, t, timer);
+       struct process_timer *timeout = timer_container_of(timeout, t, timer);
 
        wake_up_process(timeout->task);
 }
 
 
 void delayed_work_timer_fn(struct timer_list *t)
 {
-       struct delayed_work *dwork = from_timer(dwork, t, timer);
+       struct delayed_work *dwork = timer_container_of(dwork, t, timer);
 
        /* should have been called from irqsafe timer with irq already off */
        __queue_work(dwork->cpu, dwork->wq, &dwork->work);
  */
 static void idle_worker_timeout(struct timer_list *t)
 {
-       struct worker_pool *pool = from_timer(pool, t, idle_timer);
+       struct worker_pool *pool = timer_container_of(pool, t, idle_timer);
        bool do_cull = false;
 
        if (work_pending(&pool->idle_cull_work))
 
 static void pool_mayday_timeout(struct timer_list *t)
 {
-       struct worker_pool *pool = from_timer(pool, t, mayday_timer);
+       struct worker_pool *pool = timer_container_of(pool, t, mayday_timer);
        struct work_struct *work;
 
        raw_spin_lock_irq(&pool->lock);
 
  */
 static void writeout_period(struct timer_list *t)
 {
-       struct wb_domain *dom = from_timer(dom, t, period_timer);
+       struct wb_domain *dom = timer_container_of(dom, t, period_timer);
        int miss_periods = (jiffies - dom->period_time) /
                                                 VM_COMPLETIONS_PERIOD_LEN;
 
 void laptop_mode_timer_fn(struct timer_list *t)
 {
        struct backing_dev_info *backing_dev_info =
-               from_timer(backing_dev_info, t, laptop_mode_wb_timer);
+               timer_container_of(backing_dev_info, t, laptop_mode_wb_timer);
 
        wakeup_flusher_threads_bdi(backing_dev_info, WB_REASON_LAPTOP_TIMER);
 }
 
 
 static void garp_join_timer(struct timer_list *t)
 {
-       struct garp_applicant *app = from_timer(app, t, join_timer);
+       struct garp_applicant *app = timer_container_of(app, t, join_timer);
 
        spin_lock(&app->lock);
        garp_gid_event(app, GARP_EVENT_TRANSMIT_PDU);
 
 
 static void mrp_join_timer(struct timer_list *t)
 {
-       struct mrp_applicant *app = from_timer(app, t, join_timer);
+       struct mrp_applicant *app = timer_container_of(app, t, join_timer);
 
        spin_lock(&app->lock);
        mrp_mad_event(app, MRP_EVENT_TX);
 
 static void mrp_periodic_timer(struct timer_list *t)
 {
-       struct mrp_applicant *app = from_timer(app, t, periodic_timer);
+       struct mrp_applicant *app = timer_container_of(app, t, periodic_timer);
 
        spin_lock(&app->lock);
        if (likely(app->active)) {
 
 
 static void atalk_destroy_timer(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
 
        if (sk_has_allocations(sk)) {
                sk->sk_timer.expires = jiffies + SOCK_DESTROY_TIME;
 
 {
        struct lec_arp_table *entry;
 
-       entry = from_timer(entry, t, timer);
+       entry = timer_container_of(entry, t, timer);
 
        pr_debug("\n");
        if (entry->status == ESI_ARP_PENDING) {
 static void lec_arp_expire_vcc(struct timer_list *t)
 {
        unsigned long flags;
-       struct lec_arp_table *to_remove = from_timer(to_remove, t, timer);
+       struct lec_arp_table *to_remove = timer_container_of(to_remove, t,
+                                                            timer);
        struct lec_priv *priv = to_remove->priv;
 
        timer_delete(&to_remove->timer);
 
  */
 static void ax25_destroy_timer(struct timer_list *t)
 {
-       ax25_cb *ax25 = from_timer(ax25, t, dtimer);
+       ax25_cb *ax25 = timer_container_of(ax25, t, dtimer);
        struct sock *sk;
 
        sk=ax25->sk;
 
 
 static void ax25_ds_timeout(struct timer_list *t)
 {
-       ax25_dev *ax25_dev = from_timer(ax25_dev, t, dama.slave_timer);
+       ax25_dev *ax25_dev = timer_container_of(ax25_dev, t, dama.slave_timer);
        ax25_cb *ax25;
 
        if (ax25_dev == NULL || !ax25_dev->dama.slave)
 
 static void ax25_heartbeat_expiry(struct timer_list *t)
 {
        int proto = AX25_PROTO_STD_SIMPLEX;
-       ax25_cb *ax25 = from_timer(ax25, t, timer);
+       ax25_cb *ax25 = timer_container_of(ax25, t, timer);
 
        if (ax25->ax25_dev)
                proto = ax25->ax25_dev->values[AX25_VALUES_PROTOCOL];
 
 static void ax25_t1timer_expiry(struct timer_list *t)
 {
-       ax25_cb *ax25 = from_timer(ax25, t, t1timer);
+       ax25_cb *ax25 = timer_container_of(ax25, t, t1timer);
 
        switch (ax25->ax25_dev->values[AX25_VALUES_PROTOCOL]) {
        case AX25_PROTO_STD_SIMPLEX:
 
 static void ax25_t2timer_expiry(struct timer_list *t)
 {
-       ax25_cb *ax25 = from_timer(ax25, t, t2timer);
+       ax25_cb *ax25 = timer_container_of(ax25, t, t2timer);
 
        switch (ax25->ax25_dev->values[AX25_VALUES_PROTOCOL]) {
        case AX25_PROTO_STD_SIMPLEX:
 
 static void ax25_t3timer_expiry(struct timer_list *t)
 {
-       ax25_cb *ax25 = from_timer(ax25, t, t3timer);
+       ax25_cb *ax25 = timer_container_of(ax25, t, t3timer);
 
        switch (ax25->ax25_dev->values[AX25_VALUES_PROTOCOL]) {
        case AX25_PROTO_STD_SIMPLEX:
 
 static void ax25_idletimer_expiry(struct timer_list *t)
 {
-       ax25_cb *ax25 = from_timer(ax25, t, idletimer);
+       ax25_cb *ax25 = timer_container_of(ax25, t, idletimer);
 
        switch (ax25->ax25_dev->values[AX25_VALUES_PROTOCOL]) {
        case AX25_PROTO_STD_SIMPLEX:
 
  */
 static void batadv_tp_sender_timeout(struct timer_list *t)
 {
-       struct batadv_tp_vars *tp_vars = from_timer(tp_vars, t, timer);
+       struct batadv_tp_vars *tp_vars = timer_container_of(tp_vars, t, timer);
        struct batadv_priv *bat_priv = tp_vars->bat_priv;
 
        if (atomic_read(&tp_vars->sending) == 0)
  */
 static void batadv_tp_receiver_shutdown(struct timer_list *t)
 {
-       struct batadv_tp_vars *tp_vars = from_timer(tp_vars, t, timer);
+       struct batadv_tp_vars *tp_vars = timer_container_of(tp_vars, t, timer);
        struct batadv_tp_unacked *un, *safe;
        struct batadv_priv *bat_priv;
 
 
 
 static void hidp_idle_timeout(struct timer_list *t)
 {
-       struct hidp_session *session = from_timer(session, t, timer);
+       struct hidp_session *session = timer_container_of(session, t, timer);
 
        /* The HIDP user-space API only contains calls to add and remove
         * devices. There is no way to forward events of any kind. Therefore,
 
 
 static void rfcomm_session_timeout(struct timer_list *t)
 {
-       struct rfcomm_session *s = from_timer(s, t, timer);
+       struct rfcomm_session *s = timer_container_of(s, t, timer);
 
        BT_DBG("session %p state %ld", s, s->state);
 
 /* ---- RFCOMM DLCs ---- */
 static void rfcomm_dlc_timeout(struct timer_list *t)
 {
-       struct rfcomm_dlc *d = from_timer(d, t, timer);
+       struct rfcomm_dlc *d = timer_container_of(d, t, timer);
 
        BT_DBG("dlc %p state %ld", d, d->state);
 
 
 
 static void br_multicast_group_expired(struct timer_list *t)
 {
-       struct net_bridge_mdb_entry *mp = from_timer(mp, t, timer);
+       struct net_bridge_mdb_entry *mp = timer_container_of(mp, t, timer);
        struct net_bridge *br = mp->br;
 
        spin_lock(&br->multicast_lock);
 
 static void br_multicast_port_group_expired(struct timer_list *t)
 {
-       struct net_bridge_port_group *pg = from_timer(pg, t, timer);
+       struct net_bridge_port_group *pg = timer_container_of(pg, t, timer);
        struct net_bridge_group_src *src_ent;
        struct net_bridge *br = pg->key.port->br;
        struct hlist_node *tmp;
 
 static void br_multicast_group_src_expired(struct timer_list *t)
 {
-       struct net_bridge_group_src *src = from_timer(src, t, timer);
+       struct net_bridge_group_src *src = timer_container_of(src, t, timer);
        struct net_bridge_port_group *pg;
        struct net_bridge *br = src->br;
 
 
 static void br_ip4_multicast_router_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t,
-                                                        ip4_mc_router_timer);
+       struct net_bridge_mcast_port *pmctx = timer_container_of(pmctx, t,
+                                                                ip4_mc_router_timer);
 
        br_multicast_router_expired(pmctx, t, &pmctx->ip4_rlist);
 }
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_router_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t,
-                                                        ip6_mc_router_timer);
+       struct net_bridge_mcast_port *pmctx = timer_container_of(pmctx, t,
+                                                                ip6_mc_router_timer);
 
        br_multicast_router_expired(pmctx, t, &pmctx->ip6_rlist);
 }
 
 static void br_ip4_multicast_local_router_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast *brmctx = from_timer(brmctx, t,
-                                                    ip4_mc_router_timer);
+       struct net_bridge_mcast *brmctx = timer_container_of(brmctx, t,
+                                                            ip4_mc_router_timer);
 
        br_multicast_local_router_expired(brmctx, t);
 }
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_local_router_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast *brmctx = from_timer(brmctx, t,
-                                                    ip6_mc_router_timer);
+       struct net_bridge_mcast *brmctx = timer_container_of(brmctx, t,
+                                                            ip6_mc_router_timer);
 
        br_multicast_local_router_expired(brmctx, t);
 }
 
 static void br_ip4_multicast_querier_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast *brmctx = from_timer(brmctx, t,
-                                                    ip4_other_query.timer);
+       struct net_bridge_mcast *brmctx = timer_container_of(brmctx, t,
+                                                            ip4_other_query.timer);
 
        br_multicast_querier_expired(brmctx, &brmctx->ip4_own_query);
 }
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_querier_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast *brmctx = from_timer(brmctx, t,
-                                                    ip6_other_query.timer);
+       struct net_bridge_mcast *brmctx = timer_container_of(brmctx, t,
+                                                            ip6_other_query.timer);
 
        br_multicast_querier_expired(brmctx, &brmctx->ip6_own_query);
 }
 
 static void br_ip4_multicast_port_query_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t,
-                                                        ip4_own_query.timer);
+       struct net_bridge_mcast_port *pmctx = timer_container_of(pmctx, t,
+                                                                ip4_own_query.timer);
 
        br_multicast_port_query_expired(pmctx, &pmctx->ip4_own_query);
 }
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_port_query_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t,
-                                                        ip6_own_query.timer);
+       struct net_bridge_mcast_port *pmctx = timer_container_of(pmctx, t,
+                                                                ip6_own_query.timer);
 
        br_multicast_port_query_expired(pmctx, &pmctx->ip6_own_query);
 }
 
 static void br_multicast_port_group_rexmit(struct timer_list *t)
 {
-       struct net_bridge_port_group *pg = from_timer(pg, t, rexmit_timer);
+       struct net_bridge_port_group *pg = timer_container_of(pg, t,
+                                                             rexmit_timer);
        struct bridge_mcast_other_query *other_query = NULL;
        struct net_bridge *br = pg->key.port->br;
        struct net_bridge_mcast_port *pmctx;
 
 static void br_ip4_multicast_query_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast *brmctx = from_timer(brmctx, t,
-                                                    ip4_own_query.timer);
+       struct net_bridge_mcast *brmctx = timer_container_of(brmctx, t,
+                                                            ip4_own_query.timer);
 
        br_multicast_query_expired(brmctx, &brmctx->ip4_own_query,
                                   &brmctx->ip4_querier);
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_query_expired(struct timer_list *t)
 {
-       struct net_bridge_mcast *brmctx = from_timer(brmctx, t,
-                                                    ip6_own_query.timer);
+       struct net_bridge_mcast *brmctx = timer_container_of(brmctx, t,
+                                                            ip6_own_query.timer);
 
        br_multicast_query_expired(brmctx, &brmctx->ip6_own_query,
                                   &brmctx->ip6_querier);
 
 
 static void br_multicast_eht_set_entry_expired(struct timer_list *t)
 {
-       struct net_bridge_group_eht_set_entry *set_h = from_timer(set_h, t, timer);
+       struct net_bridge_group_eht_set_entry *set_h = timer_container_of(set_h,
+                                                                         t,
+                                                                         timer);
        struct net_bridge *br = set_h->br;
 
        spin_lock(&br->multicast_lock);
 
 static void br_multicast_eht_set_expired(struct timer_list *t)
 {
-       struct net_bridge_group_eht_set *eht_set = from_timer(eht_set, t,
-                                                             timer);
+       struct net_bridge_group_eht_set *eht_set = timer_container_of(eht_set,
+                                                                     t,
+                                                                     timer);
        struct net_bridge *br = eht_set->br;
 
        spin_lock(&br->multicast_lock);
 
 
 static void br_hello_timer_expired(struct timer_list *t)
 {
-       struct net_bridge *br = from_timer(br, t, hello_timer);
+       struct net_bridge *br = timer_container_of(br, t, hello_timer);
 
        br_debug(br, "hello timer expired\n");
        spin_lock(&br->lock);
 
 static void br_message_age_timer_expired(struct timer_list *t)
 {
-       struct net_bridge_port *p = from_timer(p, t, message_age_timer);
+       struct net_bridge_port *p = timer_container_of(p, t,
+                                                      message_age_timer);
        struct net_bridge *br = p->br;
        const bridge_id *id = &p->designated_bridge;
        int was_root;
 
 static void br_forward_delay_timer_expired(struct timer_list *t)
 {
-       struct net_bridge_port *p = from_timer(p, t, forward_delay_timer);
+       struct net_bridge_port *p = timer_container_of(p, t,
+                                                      forward_delay_timer);
        struct net_bridge *br = p->br;
 
        br_debug(br, "port %u(%s) forward delay timer\n",
 
 static void br_tcn_timer_expired(struct timer_list *t)
 {
-       struct net_bridge *br = from_timer(br, t, tcn_timer);
+       struct net_bridge *br = timer_container_of(br, t, tcn_timer);
 
        br_debug(br, "tcn timer expired\n");
        spin_lock(&br->lock);
 
 static void br_topology_change_timer_expired(struct timer_list *t)
 {
-       struct net_bridge *br = from_timer(br, t, topology_change_timer);
+       struct net_bridge *br = timer_container_of(br, t,
+                                                  topology_change_timer);
 
        br_debug(br, "topo change timer expired\n");
        spin_lock(&br->lock);
 
 static void br_hold_timer_expired(struct timer_list *t)
 {
-       struct net_bridge_port *p = from_timer(p, t, hold_timer);
+       struct net_bridge_port *p = timer_container_of(p, t, hold_timer);
 
        br_debug(p->br, "port %u(%s) hold timer expired\n",
                 (unsigned int) p->port_no, p->dev->name);
 
 
 void can_stat_update(struct timer_list *t)
 {
-       struct net *net = from_timer(net, t, can.stattimer);
+       struct net *net = timer_container_of(net, t, can.stattimer);
        struct can_pkg_stats *pkg_stats = net->can.pkg_stats;
        unsigned long j = jiffies; /* snapshot */
 
 
  */
 static void sched_send_work(struct timer_list *t)
 {
-       struct per_cpu_dm_data *data = from_timer(data, t, send_timer);
+       struct per_cpu_dm_data *data = timer_container_of(data, t, send_timer);
 
        schedule_work(&data->dm_alert_work);
 }
 
 
 static void est_timer(struct timer_list *t)
 {
-       struct net_rate_estimator *est = from_timer(est, t, timer);
+       struct net_rate_estimator *est = timer_container_of(est, t, timer);
        struct gnet_stats_basic_sync b;
        u64 b_bytes, b_packets;
        u64 rate, brate;
 
 static void neigh_timer_handler(struct timer_list *t)
 {
        unsigned long now, next;
-       struct neighbour *neigh = from_timer(neigh, t, timer);
+       struct neighbour *neigh = timer_container_of(neigh, t, timer);
        unsigned int state;
        int notify = 0;
 
 
 static void neigh_proxy_process(struct timer_list *t)
 {
-       struct neigh_table *tbl = from_timer(tbl, t, proxy_timer);
+       struct neigh_table *tbl = timer_container_of(tbl, t, proxy_timer);
        long sched_next = 0;
        unsigned long now = jiffies;
        struct sk_buff *skb, *n;
 
  */
 static void ethtool_mmsv_verify_timer(struct timer_list *t)
 {
-       struct ethtool_mmsv *mmsv = from_timer(mmsv, t, verify_timer);
+       struct ethtool_mmsv *mmsv = timer_container_of(mmsv, t, verify_timer);
        unsigned long flags;
        bool rearm = false;
 
 
        struct hsr_port *master;
        unsigned long interval;
 
-       hsr = from_timer(hsr, t, announce_timer);
+       hsr = timer_container_of(hsr, t, announce_timer);
 
        rcu_read_lock();
        master = hsr_port_get_hsr(hsr, HSR_PT_MASTER);
  */
 static void hsr_proxy_announce(struct timer_list *t)
 {
-       struct hsr_priv *hsr = from_timer(hsr, t, announce_proxy_timer);
+       struct hsr_priv *hsr = timer_container_of(hsr, t,
+                                                 announce_proxy_timer);
        struct hsr_port *interlink;
        unsigned long interval = 0;
        struct hsr_node *node;
 
  */
 void hsr_prune_nodes(struct timer_list *t)
 {
-       struct hsr_priv *hsr = from_timer(hsr, t, prune_timer);
+       struct hsr_priv *hsr = timer_container_of(hsr, t, prune_timer);
        struct hsr_node *node;
        struct hsr_node *tmp;
        struct hsr_port *port;
 
 void hsr_prune_proxy_nodes(struct timer_list *t)
 {
-       struct hsr_priv *hsr = from_timer(hsr, t, prune_proxy_timer);
+       struct hsr_priv *hsr = timer_container_of(hsr, t, prune_proxy_timer);
        unsigned long timestamp;
        struct hsr_node *node;
        struct hsr_node *tmp;
 
 
 static void lowpan_frag_expire(struct timer_list *t)
 {
-       struct inet_frag_queue *frag = from_timer(frag, t, timer);
+       struct inet_frag_queue *frag = timer_container_of(frag, t, timer);
        struct frag_queue *fq;
        int refs = 1;
 
 
 
 static void igmp_gq_timer_expire(struct timer_list *t)
 {
-       struct in_device *in_dev = from_timer(in_dev, t, mr_gq_timer);
+       struct in_device *in_dev = timer_container_of(in_dev, t, mr_gq_timer);
 
        in_dev->mr_gq_running = 0;
        igmpv3_send_report(in_dev, NULL);
 
 static void igmp_ifc_timer_expire(struct timer_list *t)
 {
-       struct in_device *in_dev = from_timer(in_dev, t, mr_ifc_timer);
+       struct in_device *in_dev = timer_container_of(in_dev, t, mr_ifc_timer);
        u32 mr_ifc_count;
 
        igmpv3_send_cr(in_dev);
 
 static void igmp_timer_expire(struct timer_list *t)
 {
-       struct ip_mc_list *im = from_timer(im, t, timer);
+       struct ip_mc_list *im = timer_container_of(im, t, timer);
        struct in_device *in_dev = im->interface;
 
        spin_lock(&im->lock);
 
 
 static void reqsk_timer_handler(struct timer_list *t)
 {
-       struct request_sock *req = from_timer(req, t, rsk_timer);
+       struct request_sock *req = timer_container_of(req, t, rsk_timer);
        struct request_sock *nreq = NULL, *oreq = req;
        struct sock *sk_listener = req->rsk_listener;
        struct inet_connection_sock *icsk;
 
 
 static void tw_timer_handler(struct timer_list *t)
 {
-       struct inet_timewait_sock *tw = from_timer(tw, t, tw_timer);
+       struct inet_timewait_sock *tw = timer_container_of(tw, t, tw_timer);
 
        inet_twsk_kill(tw);
 }
 
 static void ip_expire(struct timer_list *t)
 {
        enum skb_drop_reason reason = SKB_DROP_REASON_FRAG_REASM_TIMEOUT;
-       struct inet_frag_queue *frag = from_timer(frag, t, timer);
+       struct inet_frag_queue *frag = timer_container_of(frag, t, timer);
        const struct iphdr *iph;
        struct sk_buff *head = NULL;
        struct net *net;
 
 /* Timer process for the unresolved queue. */
 static void ipmr_expire_process(struct timer_list *t)
 {
-       struct mr_table *mrt = from_timer(mrt, t, ipmr_expire_timer);
+       struct mr_table *mrt = timer_container_of(mrt, t, ipmr_expire_timer);
        struct mr_mfc *c, *next;
        unsigned long expires;
        unsigned long now;
 
 static void tcp_delack_timer(struct timer_list *t)
 {
        struct inet_connection_sock *icsk =
-                       from_timer(icsk, t, icsk_delack_timer);
+                       timer_container_of(icsk, t, icsk_delack_timer);
        struct sock *sk = &icsk->icsk_inet.sk;
 
        /* Avoid taking socket spinlock if there is no ACK to send.
 static void tcp_write_timer(struct timer_list *t)
 {
        struct inet_connection_sock *icsk =
-                       from_timer(icsk, t, icsk_retransmit_timer);
+                       timer_container_of(icsk, t, icsk_retransmit_timer);
        struct sock *sk = &icsk->icsk_inet.sk;
 
        /* Avoid locking the socket when there is no pending event. */
 
 static void tcp_keepalive_timer(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
        struct inet_connection_sock *icsk = inet_csk(sk);
        struct tcp_sock *tp = tcp_sk(sk);
        u32 elapsed;
 
 
 static void addrconf_rs_timer(struct timer_list *t)
 {
-       struct inet6_dev *idev = from_timer(idev, t, rs_timer);
+       struct inet6_dev *idev = timer_container_of(idev, t, rs_timer);
        struct net_device *dev = idev->dev;
        struct in6_addr lladdr;
        int rtr_solicits;
 
 
 static void fib6_gc_timer_cb(struct timer_list *t)
 {
-       struct net *arg = from_timer(arg, t, ipv6.ip6_fib_timer);
+       struct net *arg = timer_container_of(arg, t, ipv6.ip6_fib_timer);
 
        fib6_run_gc(0, arg, true);
 }
 
 
 static void ipmr_expire_process(struct timer_list *t)
 {
-       struct mr_table *mrt = from_timer(mrt, t, ipmr_expire_timer);
+       struct mr_table *mrt = timer_container_of(mrt, t, ipmr_expire_timer);
 
        if (!spin_trylock(&mfc_unres_lock)) {
                mod_timer(&mrt->ipmr_expire_timer, jiffies + 1);
 
 
 static void nf_ct_frag6_expire(struct timer_list *t)
 {
-       struct inet_frag_queue *frag = from_timer(frag, t, timer);
+       struct inet_frag_queue *frag = timer_container_of(frag, t, timer);
        struct frag_queue *fq;
 
        fq = container_of(frag, struct frag_queue, q);
 
 
 static void ip6_frag_expire(struct timer_list *t)
 {
-       struct inet_frag_queue *frag = from_timer(frag, t, timer);
+       struct inet_frag_queue *frag = timer_container_of(frag, t, timer);
        struct frag_queue *fq;
 
        fq = container_of(frag, struct frag_queue, q);
 
 
 static void lapb_t2timer_expiry(struct timer_list *t)
 {
-       struct lapb_cb *lapb = from_timer(lapb, t, t2timer);
+       struct lapb_cb *lapb = timer_container_of(lapb, t, t2timer);
 
        spin_lock_bh(&lapb->lock);
        if (timer_pending(&lapb->t2timer)) /* A new timer has been set up */
 
 static void lapb_t1timer_expiry(struct timer_list *t)
 {
-       struct lapb_cb *lapb = from_timer(lapb, t, t1timer);
+       struct lapb_cb *lapb = timer_container_of(lapb, t, t1timer);
 
        spin_lock_bh(&lapb->lock);
        if (timer_pending(&lapb->t1timer)) /* A new timer has been set up */
 
 
 void llc_conn_pf_cycle_tmr_cb(struct timer_list *t)
 {
-       struct llc_sock *llc = from_timer(llc, t, pf_cycle_timer.timer);
+       struct llc_sock *llc = timer_container_of(llc, t,
+                                                 pf_cycle_timer.timer);
 
        llc_conn_tmr_common_cb(&llc->sk, LLC_CONN_EV_TYPE_P_TMR);
 }
 
 void llc_conn_busy_tmr_cb(struct timer_list *t)
 {
-       struct llc_sock *llc = from_timer(llc, t, busy_state_timer.timer);
+       struct llc_sock *llc = timer_container_of(llc, t,
+                                                 busy_state_timer.timer);
 
        llc_conn_tmr_common_cb(&llc->sk, LLC_CONN_EV_TYPE_BUSY_TMR);
 }
 
 void llc_conn_ack_tmr_cb(struct timer_list *t)
 {
-       struct llc_sock *llc = from_timer(llc, t, ack_timer.timer);
+       struct llc_sock *llc = timer_container_of(llc, t, ack_timer.timer);
 
        llc_conn_tmr_common_cb(&llc->sk, LLC_CONN_EV_TYPE_ACK_TMR);
 }
 
 void llc_conn_rej_tmr_cb(struct timer_list *t)
 {
-       struct llc_sock *llc = from_timer(llc, t, rej_sent_timer.timer);
+       struct llc_sock *llc = timer_container_of(llc, t,
+                                                 rej_sent_timer.timer);
 
        llc_conn_tmr_common_cb(&llc->sk, LLC_CONN_EV_TYPE_REJ_TMR);
 }
 
  */
 static void sta_rx_agg_session_timer_expired(struct timer_list *t)
 {
-       struct tid_ampdu_rx *tid_rx = from_timer(tid_rx, t, session_timer);
+       struct tid_ampdu_rx *tid_rx = timer_container_of(tid_rx, t,
+                                                        session_timer);
        struct sta_info *sta = tid_rx->sta;
        u8 tid = tid_rx->tid;
        unsigned long timeout;
 
 static void sta_rx_agg_reorder_timer_expired(struct timer_list *t)
 {
-       struct tid_ampdu_rx *tid_rx = from_timer(tid_rx, t, reorder_timer);
+       struct tid_ampdu_rx *tid_rx = timer_container_of(tid_rx, t,
+                                                        reorder_timer);
 
        rcu_read_lock();
        ieee80211_release_reorder_timeout(tid_rx->sta, tid_rx->tid);
 
  */
 static void sta_addba_resp_timer_expired(struct timer_list *t)
 {
-       struct tid_ampdu_tx *tid_tx = from_timer(tid_tx, t, addba_resp_timer);
+       struct tid_ampdu_tx *tid_tx = timer_container_of(tid_tx, t,
+                                                        addba_resp_timer);
        struct sta_info *sta = tid_tx->sta;
        u8 tid = tid_tx->tid;
 
  */
 static void sta_tx_agg_session_timer_expired(struct timer_list *t)
 {
-       struct tid_ampdu_tx *tid_tx = from_timer(tid_tx, t, session_timer);
+       struct tid_ampdu_tx *tid_tx = timer_container_of(tid_tx, t,
+                                                        session_timer);
        struct sta_info *sta = tid_tx->sta;
        u8 tid = tid_tx->tid;
        unsigned long timeout;
 
 static void ieee80211_ibss_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.ibss.timer);
+               timer_container_of(sdata, t, u.ibss.timer);
 
        wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
 }
 
 
 static void tpt_trig_timer(struct timer_list *t)
 {
-       struct tpt_led_trigger *tpt_trig = from_timer(tpt_trig, t, timer);
+       struct tpt_led_trigger *tpt_trig = timer_container_of(tpt_trig, t,
+                                                             timer);
        struct ieee80211_local *local = tpt_trig->local;
        unsigned long on, off, tpt;
        int i;
 
 static void ieee80211_mesh_housekeeping_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.mesh.housekeeping_timer);
+               timer_container_of(sdata, t, u.mesh.housekeeping_timer);
        struct ieee80211_local *local = sdata->local;
        struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
 
 static void ieee80211_mesh_path_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.mesh.mesh_path_timer);
+               timer_container_of(sdata, t, u.mesh.mesh_path_timer);
 
        wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
 }
 static void ieee80211_mesh_path_root_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.mesh.mesh_path_root_timer);
+               timer_container_of(sdata, t, u.mesh.mesh_path_root_timer);
        struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
 
        set_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags);
 
 
 void mesh_path_timer(struct timer_list *t)
 {
-       struct mesh_path *mpath = from_timer(mpath, t, timer);
+       struct mesh_path *mpath = timer_container_of(mpath, t, timer);
        struct ieee80211_sub_if_data *sdata = mpath->sdata;
        int ret;
 
 
 
 void mesh_plink_timer(struct timer_list *t)
 {
-       struct mesh_sta *mesh = from_timer(mesh, t, plink_timer);
+       struct mesh_sta *mesh = timer_container_of(mesh, t, plink_timer);
        struct sta_info *sta;
        u16 reason = 0;
        struct ieee80211_sub_if_data *sdata;
 
 
 void ieee80211_dynamic_ps_timer(struct timer_list *t)
 {
-       struct ieee80211_local *local = from_timer(local, t, dynamic_ps_timer);
+       struct ieee80211_local *local = timer_container_of(local, t,
+                                                          dynamic_ps_timer);
 
        wiphy_work_queue(local->hw.wiphy, &local->dynamic_ps_enable_work);
 }
 static void ieee80211_sta_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.mgd.timer);
+               timer_container_of(sdata, t, u.mgd.timer);
 
        wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
 }
 static void ieee80211_sta_bcn_mon_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.mgd.bcn_mon_timer);
+               timer_container_of(sdata, t, u.mgd.bcn_mon_timer);
 
        if (WARN_ON(ieee80211_vif_is_mld(&sdata->vif)))
                return;
 static void ieee80211_sta_conn_mon_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.mgd.conn_mon_timer);
+               timer_container_of(sdata, t, u.mgd.conn_mon_timer);
        struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
        struct ieee80211_local *local = sdata->local;
        struct sta_info *sta;
 
 static void ieee80211_ocb_housekeeping_timer(struct timer_list *t)
 {
        struct ieee80211_sub_if_data *sdata =
-               from_timer(sdata, t, u.ocb.housekeeping_timer);
+               timer_container_of(sdata, t, u.ocb.housekeeping_timer);
        struct ieee80211_local *local = sdata->local;
        struct ieee80211_if_ocb *ifocb = &sdata->u.ocb;
 
 
 
 static void sta_info_cleanup(struct timer_list *t)
 {
-       struct ieee80211_local *local = from_timer(local, t, sta_cleanup);
+       struct ieee80211_local *local = timer_container_of(local, t,
+                                                          sta_cleanup);
        struct sta_info *sta;
        bool timer_needed = false;
 
 
 
 static void mptcp_pm_add_timer(struct timer_list *timer)
 {
-       struct mptcp_pm_add_entry *entry = from_timer(entry, timer, add_timer);
+       struct mptcp_pm_add_entry *entry = timer_container_of(entry, timer,
+                                                             add_timer);
        struct mptcp_sock *msk = entry->sock;
        struct sock *sk = (struct sock *)msk;
 
 
 
 static void mptcp_retransmit_timer(struct timer_list *t)
 {
-       struct inet_connection_sock *icsk = from_timer(icsk, t,
-                                                      icsk_retransmit_timer);
+       struct inet_connection_sock *icsk = timer_container_of(icsk, t,
+                                                              icsk_retransmit_timer);
        struct sock *sk = &icsk->icsk_inet.sk;
        struct mptcp_sock *msk = mptcp_sk(sk);
 
 
 static void mptcp_tout_timer(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
 
        mptcp_schedule_work(sk);
        sock_put(sk);
 
 
 static void ncsi_channel_monitor(struct timer_list *t)
 {
-       struct ncsi_channel *nc = from_timer(nc, t, monitor.timer);
+       struct ncsi_channel *nc = timer_container_of(nc, t, monitor.timer);
        struct ncsi_package *np = nc->package;
        struct ncsi_dev_priv *ndp = np->ndp;
        struct ncsi_channel_mode *ncm;
 
 static void ncsi_request_timeout(struct timer_list *t)
 {
-       struct ncsi_request *nr = from_timer(nr, t, timer);
+       struct ncsi_request *nr = timer_container_of(nr, t, timer);
        struct ncsi_dev_priv *ndp = nr->ndp;
        struct ncsi_cmd_pkt *cmd;
        struct ncsi_package *np;
 
 static void
 mtype_gc(struct timer_list *t)
 {
-       struct mtype *map = from_timer(map, t, gc);
+       struct mtype *map = timer_container_of(map, t, gc);
        struct ip_set *set = map->set;
        void *x;
        u32 id;
 
 static void
 list_set_gc(struct timer_list *t)
 {
-       struct list_set *map = from_timer(map, t, gc);
+       struct list_set *map = timer_container_of(map, t, gc);
        struct ip_set *set = map->set;
 
        spin_lock_bh(&set->lock);
 
 
 static void ip_vs_conn_expire(struct timer_list *t)
 {
-       struct ip_vs_conn *cp = from_timer(cp, t, timer);
+       struct ip_vs_conn *cp = timer_container_of(cp, t, timer);
        struct netns_ipvs *ipvs = cp->ipvs;
 
        /*
 
 
 static void ip_vs_dest_trash_expire(struct timer_list *t)
 {
-       struct netns_ipvs *ipvs = from_timer(ipvs, t, dest_trash_timer);
+       struct netns_ipvs *ipvs = timer_container_of(ipvs, t,
+                                                    dest_trash_timer);
        struct ip_vs_dest *dest, *next;
        unsigned long now = jiffies;
 
 
  */
 static void ip_vs_lblc_check_expire(struct timer_list *t)
 {
-       struct ip_vs_lblc_table *tbl = from_timer(tbl, t, periodic_timer);
+       struct ip_vs_lblc_table *tbl = timer_container_of(tbl, t,
+                                                         periodic_timer);
        struct ip_vs_service *svc = tbl->svc;
        unsigned long now = jiffies;
        int goal;
 
  */
 static void ip_vs_lblcr_check_expire(struct timer_list *t)
 {
-       struct ip_vs_lblcr_table *tbl = from_timer(tbl, t, periodic_timer);
+       struct ip_vs_lblcr_table *tbl = timer_container_of(tbl, t,
+                                                          periodic_timer);
        struct ip_vs_service *svc = tbl->svc;
        unsigned long now = jiffies;
        int goal;
 
 
 static void nf_ct_expectation_timed_out(struct timer_list *t)
 {
-       struct nf_conntrack_expect *exp = from_timer(exp, t, timeout);
+       struct nf_conntrack_expect *exp = timer_container_of(exp, t, timeout);
 
        spin_lock_bh(&nf_conntrack_expect_lock);
        nf_ct_unlink_expect(exp);
 
 static void
 nfulnl_timer(struct timer_list *t)
 {
-       struct nfulnl_instance *inst = from_timer(inst, t, timer);
+       struct nfulnl_instance *inst = timer_container_of(inst, t, timer);
 
        spin_lock_bh(&inst->lock);
        if (inst->skb)
 
 
 static void idletimer_tg_expired(struct timer_list *t)
 {
-       struct idletimer_tg *timer = from_timer(timer, t, timer);
+       struct idletimer_tg *timer = timer_container_of(timer, t, timer);
 
        pr_debug("timer %s expired\n", timer->attr.attr.name);
 
 
 
 static void led_timeout_callback(struct timer_list *t)
 {
-       struct xt_led_info_internal *ledinternal = from_timer(ledinternal, t,
-                                                             timer);
+       struct xt_led_info_internal *ledinternal = timer_container_of(ledinternal,
+                                                                     t,
+                                                                     timer);
 
        led_trigger_event(&ledinternal->netfilter_led_trigger, LED_OFF);
 }
 
  */
 static void nr_destroy_timer(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
        bh_lock_sock(sk);
        sock_hold(sk);
        nr_destroy_socket(sk);
 
 
 static void nr_heartbeat_expiry(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
        struct nr_sock *nr = nr_sk(sk);
 
        bh_lock_sock(sk);
 
 static void nr_t2timer_expiry(struct timer_list *t)
 {
-       struct nr_sock *nr = from_timer(nr, t, t2timer);
+       struct nr_sock *nr = timer_container_of(nr, t, t2timer);
        struct sock *sk = &nr->sock;
 
        bh_lock_sock(sk);
 
 static void nr_t4timer_expiry(struct timer_list *t)
 {
-       struct nr_sock *nr = from_timer(nr, t, t4timer);
+       struct nr_sock *nr = timer_container_of(nr, t, t4timer);
        struct sock *sk = &nr->sock;
 
        bh_lock_sock(sk);
 
 static void nr_idletimer_expiry(struct timer_list *t)
 {
-       struct nr_sock *nr = from_timer(nr, t, idletimer);
+       struct nr_sock *nr = timer_container_of(nr, t, idletimer);
        struct sock *sk = &nr->sock;
 
        bh_lock_sock(sk);
 
 static void nr_t1timer_expiry(struct timer_list *t)
 {
-       struct nr_sock *nr = from_timer(nr, t, t1timer);
+       struct nr_sock *nr = timer_container_of(nr, t, t1timer);
        struct sock *sk = &nr->sock;
 
        bh_lock_sock(sk);
 
 
 static void nfc_check_pres_timeout(struct timer_list *t)
 {
-       struct nfc_dev *dev = from_timer(dev, t, check_pres_timer);
+       struct nfc_dev *dev = timer_container_of(dev, t, check_pres_timer);
 
        schedule_work(&dev->check_pres_work);
 }
 
 
 static void nfc_hci_cmd_timeout(struct timer_list *t)
 {
-       struct nfc_hci_dev *hdev = from_timer(hdev, t, cmd_timer);
+       struct nfc_hci_dev *hdev = timer_container_of(hdev, t, cmd_timer);
 
        schedule_work(&hdev->msg_tx_work);
 }
 
 
 static void llc_shdlc_connect_timeout(struct timer_list *t)
 {
-       struct llc_shdlc *shdlc = from_timer(shdlc, t, connect_timer);
+       struct llc_shdlc *shdlc = timer_container_of(shdlc, t, connect_timer);
 
        schedule_work(&shdlc->sm_work);
 }
 
 static void llc_shdlc_t1_timeout(struct timer_list *t)
 {
-       struct llc_shdlc *shdlc = from_timer(shdlc, t, t1_timer);
+       struct llc_shdlc *shdlc = timer_container_of(shdlc, t, t1_timer);
 
        pr_debug("SoftIRQ: need to send ack\n");
 
 
 static void llc_shdlc_t2_timeout(struct timer_list *t)
 {
-       struct llc_shdlc *shdlc = from_timer(shdlc, t, t2_timer);
+       struct llc_shdlc *shdlc = timer_container_of(shdlc, t, t2_timer);
 
        pr_debug("SoftIRQ: need to retransmit\n");
 
 
 
 static void nfc_llcp_symm_timer(struct timer_list *t)
 {
-       struct nfc_llcp_local *local = from_timer(local, t, link_timer);
+       struct nfc_llcp_local *local = timer_container_of(local, t,
+                                                         link_timer);
 
        pr_err("SYMM timeout\n");
 
 
 static void nfc_llcp_sdreq_timer(struct timer_list *t)
 {
-       struct nfc_llcp_local *local = from_timer(local, t, sdreq_timer);
+       struct nfc_llcp_local *local = timer_container_of(local, t,
+                                                         sdreq_timer);
 
        schedule_work(&local->sdreq_timeout_work);
 }
 
 /* NCI command timer function */
 static void nci_cmd_timer(struct timer_list *t)
 {
-       struct nci_dev *ndev = from_timer(ndev, t, cmd_timer);
+       struct nci_dev *ndev = timer_container_of(ndev, t, cmd_timer);
 
        atomic_set(&ndev->cmd_cnt, 1);
        queue_work(ndev->cmd_wq, &ndev->cmd_work);
 /* NCI data exchange timer function */
 static void nci_data_timer(struct timer_list *t)
 {
-       struct nci_dev *ndev = from_timer(ndev, t, data_timer);
+       struct nci_dev *ndev = timer_container_of(ndev, t, data_timer);
 
        set_bit(NCI_DATA_EXCHANGE_TO, &ndev->flags);
        queue_work(ndev->rx_wq, &ndev->rx_work);
 
 static void prb_retire_rx_blk_timer_expired(struct timer_list *t)
 {
        struct packet_sock *po =
-               from_timer(po, t, rx_ring.prb_bdqc.retire_blk_timer);
+               timer_container_of(po, t, rx_ring.prb_bdqc.retire_blk_timer);
        struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(&po->rx_ring);
        unsigned int frozen;
        struct tpacket_block_desc *pbd;
 
  */
 static void rose_destroy_timer(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
 
        rose_destroy_socket(sk);
 }
 
 
 static void rose_t0timer_expiry(struct timer_list *t)
 {
-       struct rose_neigh *neigh = from_timer(neigh, t, t0timer);
+       struct rose_neigh *neigh = timer_container_of(neigh, t, t0timer);
 
        rose_transmit_restart_request(neigh);
 
 
 
 static void rose_heartbeat_expiry(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
        struct rose_sock *rose = rose_sk(sk);
 
        bh_lock_sock(sk);
 
 static void rose_timer_expiry(struct timer_list *t)
 {
-       struct rose_sock *rose = from_timer(rose, t, timer);
+       struct rose_sock *rose = timer_container_of(rose, t, timer);
        struct sock *sk = &rose->sock;
 
        bh_lock_sock(sk);
 
 static void rose_idletimer_expiry(struct timer_list *t)
 {
-       struct rose_sock *rose = from_timer(rose, t, idletimer);
+       struct rose_sock *rose = timer_container_of(rose, t, idletimer);
        struct sock *sk = &rose->sock;
 
        bh_lock_sock(sk);
 
 
 static void rxrpc_call_timer_expired(struct timer_list *t)
 {
-       struct rxrpc_call *call = from_timer(call, t, timer);
+       struct rxrpc_call *call = timer_container_of(call, t, timer);
 
        _enter("%d", call->debug_id);
 
 
 
 static void flow_perturbation(struct timer_list *t)
 {
-       struct flow_filter *f = from_timer(f, t, perturb_timer);
+       struct flow_filter *f = timer_container_of(f, t, perturb_timer);
 
        get_random_bytes(&f->hashrnd, 4);
        if (f->perturb_period)
 
 
 static void fq_pie_timer(struct timer_list *t)
 {
-       struct fq_pie_sched_data *q = from_timer(q, t, adapt_timer);
+       struct fq_pie_sched_data *q = timer_container_of(q, t, adapt_timer);
        unsigned long next, tupdate;
        struct Qdisc *sch = q->sch;
        spinlock_t *root_lock; /* to lock qdisc for probability calculations */
 
 
 static void dev_watchdog(struct timer_list *t)
 {
-       struct net_device *dev = from_timer(dev, t, watchdog_timer);
+       struct net_device *dev = timer_container_of(dev, t, watchdog_timer);
        bool release = true;
 
        spin_lock(&dev->tx_global_lock);
 
 
 static void pie_timer(struct timer_list *t)
 {
-       struct pie_sched_data *q = from_timer(q, t, adapt_timer);
+       struct pie_sched_data *q = timer_container_of(q, t, adapt_timer);
        struct Qdisc *sch = q->sch;
        spinlock_t *root_lock;
 
 
 
 static inline void red_adaptative_timer(struct timer_list *t)
 {
-       struct red_sched_data *q = from_timer(q, t, adapt_timer);
+       struct red_sched_data *q = timer_container_of(q, t, adapt_timer);
        struct Qdisc *sch = q->sch;
        spinlock_t *root_lock;
 
 
 
 static void sfq_perturbation(struct timer_list *t)
 {
-       struct sfq_sched_data *q = from_timer(q, t, perturb_timer);
+       struct sfq_sched_data *q = timer_container_of(q, t, perturb_timer);
        struct Qdisc *sch = q->sch;
        spinlock_t *root_lock;
        siphash_key_t nkey;
 
 
 static void sctp_addr_wq_timeout_handler(struct timer_list *t)
 {
-       struct net *net = from_timer(net, t, sctp.addr_wq_timer);
+       struct net *net = timer_container_of(net, t, sctp.addr_wq_timer);
        struct sctp_sockaddr_entry *addrw, *temp;
        struct sctp_sock *sp;
 
 
 void sctp_generate_t3_rtx_event(struct timer_list *t)
 {
        struct sctp_transport *transport =
-               from_timer(transport, t, T3_rtx_timer);
+               timer_container_of(transport, t, T3_rtx_timer);
        struct sctp_association *asoc = transport->asoc;
        struct sock *sk = asoc->base.sk;
        struct net *net = sock_net(sk);
 static void sctp_generate_t1_cookie_event(struct timer_list *t)
 {
        struct sctp_association *asoc =
-               from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T1_COOKIE]);
+               timer_container_of(asoc, t,
+                                  timers[SCTP_EVENT_TIMEOUT_T1_COOKIE]);
 
        sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T1_COOKIE);
 }
 static void sctp_generate_t1_init_event(struct timer_list *t)
 {
        struct sctp_association *asoc =
-               from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T1_INIT]);
+               timer_container_of(asoc, t,
+                                  timers[SCTP_EVENT_TIMEOUT_T1_INIT]);
 
        sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T1_INIT);
 }
 static void sctp_generate_t2_shutdown_event(struct timer_list *t)
 {
        struct sctp_association *asoc =
-               from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN]);
+               timer_container_of(asoc, t,
+                                  timers[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN]);
 
        sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T2_SHUTDOWN);
 }
 static void sctp_generate_t4_rto_event(struct timer_list *t)
 {
        struct sctp_association *asoc =
-               from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T4_RTO]);
+               timer_container_of(asoc, t, timers[SCTP_EVENT_TIMEOUT_T4_RTO]);
 
        sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T4_RTO);
 }
 static void sctp_generate_t5_shutdown_guard_event(struct timer_list *t)
 {
        struct sctp_association *asoc =
-               from_timer(asoc, t,
-                          timers[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]);
+               timer_container_of(asoc, t,
+                                  timers[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]);
 
        sctp_generate_timeout_event(asoc,
                                    SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD);
 static void sctp_generate_autoclose_event(struct timer_list *t)
 {
        struct sctp_association *asoc =
-               from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_AUTOCLOSE]);
+               timer_container_of(asoc, t,
+                                  timers[SCTP_EVENT_TIMEOUT_AUTOCLOSE]);
 
        sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_AUTOCLOSE);
 }
  */
 void sctp_generate_heartbeat_event(struct timer_list *t)
 {
-       struct sctp_transport *transport = from_timer(transport, t, hb_timer);
+       struct sctp_transport *transport = timer_container_of(transport, t,
+                                                             hb_timer);
        struct sctp_association *asoc = transport->asoc;
        struct sock *sk = asoc->base.sk;
        struct net *net = sock_net(sk);
 void sctp_generate_proto_unreach_event(struct timer_list *t)
 {
        struct sctp_transport *transport =
-               from_timer(transport, t, proto_unreach_timer);
+               timer_container_of(transport, t, proto_unreach_timer);
        struct sctp_association *asoc = transport->asoc;
        struct sock *sk = asoc->base.sk;
        struct net *net = sock_net(sk);
 void sctp_generate_reconf_event(struct timer_list *t)
 {
        struct sctp_transport *transport =
-               from_timer(transport, t, reconf_timer);
+               timer_container_of(transport, t, reconf_timer);
        struct sctp_association *asoc = transport->asoc;
        struct sock *sk = asoc->base.sk;
        struct net *net = sock_net(sk);
 /* Handle the timeout of the probe timer. */
 void sctp_generate_probe_event(struct timer_list *t)
 {
-       struct sctp_transport *transport = from_timer(transport, t, probe_timer);
+       struct sctp_transport *transport = timer_container_of(transport, t,
+                                                             probe_timer);
        struct sctp_association *asoc = transport->asoc;
        struct sock *sk = asoc->base.sk;
        struct net *net = sock_net(sk);
 static void sctp_generate_sack_event(struct timer_list *t)
 {
        struct sctp_association *asoc =
-               from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_SACK]);
+               timer_container_of(asoc, t, timers[SCTP_EVENT_TIMEOUT_SACK]);
 
        sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_SACK);
 }
 
  */
 static void svc_age_temp_xprts(struct timer_list *t)
 {
-       struct svc_serv *serv = from_timer(serv, t, sv_temptimer);
+       struct svc_serv *serv = timer_container_of(serv, t, sv_temptimer);
        struct svc_xprt *xprt;
        struct list_head *le, *next;
 
 
 static void
 xprt_init_autodisconnect(struct timer_list *t)
 {
-       struct rpc_xprt *xprt = from_timer(xprt, t, timer);
+       struct rpc_xprt *xprt = timer_container_of(xprt, t, timer);
 
        if (!RB_EMPTY_ROOT(&xprt->recv_queue))
                return;
 
  */
 static void tipc_disc_timeout(struct timer_list *t)
 {
-       struct tipc_discoverer *d = from_timer(d, t, timer);
+       struct tipc_discoverer *d = timer_container_of(d, t, timer);
        struct tipc_net *tn = tipc_net(d->net);
        struct tipc_media_addr maddr;
        struct sk_buff *skb = NULL;
 
 
 static void mon_timeout(struct timer_list *t)
 {
-       struct tipc_monitor *mon = from_timer(mon, t, timer);
+       struct tipc_monitor *mon = timer_container_of(mon, t, timer);
        struct tipc_peer *self;
        int best_member_cnt = dom_size(mon->peer_cnt) - 1;
 
 
  */
 static void tipc_node_timeout(struct timer_list *t)
 {
-       struct tipc_node *n = from_timer(n, t, timer);
+       struct tipc_node *n = timer_container_of(n, t, timer);
        struct tipc_link_entry *le;
        struct sk_buff_head xmitq;
        int remains = n->link_cnt;
 
 
 static void tipc_sk_timeout(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
        struct tipc_sock *tsk = tipc_sk(sk);
        u32 pnode = tsk_peer_node(tsk);
        struct sk_buff_head list;
 
 
 static void tipc_sub_timeout(struct timer_list *t)
 {
-       struct tipc_subscription *sub = from_timer(sub, t, timer);
+       struct tipc_subscription *sub = timer_container_of(sub, t, timer);
 
        spin_lock(&sub->lock);
        tipc_sub_send_event(sub, NULL, TIPC_SUBSCR_TIMEOUT);
 
 
 void wiphy_delayed_work_timer(struct timer_list *t)
 {
-       struct wiphy_delayed_work *dwork = from_timer(dwork, t, timer);
+       struct wiphy_delayed_work *dwork = timer_container_of(dwork, t, timer);
 
        wiphy_work_queue(dwork->wiphy, &dwork->work);
 }
 
  */
 static void x25_destroy_timer(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
 
        x25_destroy_socket_from_timer(sk);
 }
 
 
 static void x25_t20timer_expiry(struct timer_list *t)
 {
-       struct x25_neigh *nb = from_timer(nb, t, t20timer);
+       struct x25_neigh *nb = timer_container_of(nb, t, t20timer);
 
        x25_transmit_restart_request(nb);
 
 
 
 static void x25_heartbeat_expiry(struct timer_list *t)
 {
-       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct sock *sk = timer_container_of(sk, t, sk_timer);
 
        bh_lock_sock(sk);
        if (sock_owned_by_user(sk)) /* can currently only occur in state 3 */
 
 static void x25_timer_expiry(struct timer_list *t)
 {
-       struct x25_sock *x25 = from_timer(x25, t, timer);
+       struct x25_sock *x25 = timer_container_of(x25, t, timer);
        struct sock *sk = &x25->sk;
 
        bh_lock_sock(sk);
 
 
 static void xfrm_policy_timer(struct timer_list *t)
 {
-       struct xfrm_policy *xp = from_timer(xp, t, timer);
+       struct xfrm_policy *xp = timer_container_of(xp, t, timer);
        time64_t now = ktime_get_real_seconds();
        time64_t next = TIME64_MAX;
        int warn = 0;
        struct sk_buff *skb;
        struct sock *sk;
        struct dst_entry *dst;
-       struct xfrm_policy *pol = from_timer(pol, t, polq.hold_timer);
+       struct xfrm_policy *pol = timer_container_of(pol, t, polq.hold_timer);
        struct net *net = xp_net(pol);
        struct xfrm_policy_queue *pq = &pol->polq;
        struct flowi fl;
 
 
 static void xfrm_replay_timer_handler(struct timer_list *t)
 {
-       struct xfrm_state *x = from_timer(x, t, rtimer);
+       struct xfrm_state *x = timer_container_of(x, t, rtimer);
 
        spin_lock(&x->lock);
 
 
 
 static void snd_timer_s_function(struct timer_list *t)
 {
-       struct snd_timer_system_private *priv = from_timer(priv, t,
-                                                               tlist);
+       struct snd_timer_system_private *priv = timer_container_of(priv, t,
+                                                                  tlist);
        struct snd_timer *timer = priv->snd_timer;
        unsigned long jiff = jiffies;
        if (time_after(jiff, priv->last_expires))
 
 
 static void loopback_jiffies_timer_function(struct timer_list *t)
 {
-       struct loopback_pcm *dpcm = from_timer(dpcm, t, timer);
+       struct loopback_pcm *dpcm = timer_container_of(dpcm, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&dpcm->cable->lock, flags);
 
 
 static void dummy_systimer_callback(struct timer_list *t)
 {
-       struct dummy_systimer_pcm *dpcm = from_timer(dpcm, t, timer);
+       struct dummy_systimer_pcm *dpcm = timer_container_of(dpcm, t, timer);
        unsigned long flags;
        int elapsed = 0;
 
 
  */
 static void snd_mpu401_uart_timer(struct timer_list *t)
 {
-       struct snd_mpu401 *mpu = from_timer(mpu, t, timer);
+       struct snd_mpu401 *mpu = timer_container_of(mpu, t, timer);
        unsigned long flags;
 
        spin_lock_irqsave(&mpu->timer_lock, flags);
 
 static void snd_mtpav_output_timer(struct timer_list *t)
 {
        unsigned long flags;
-       struct mtpav *chip = from_timer(chip, t, timer);
+       struct mtpav *chip = timer_container_of(chip, t, timer);
        int p;
 
        spin_lock_irqsave(&chip->spinlock, flags);
 
 void snd_opl3_timer_func(struct timer_list *t)
 {
 
-       struct snd_opl3 *opl3 = from_timer(opl3, t, tlist);
+       struct snd_opl3 *opl3 = timer_container_of(opl3, t, tlist);
        unsigned long flags;
        int again = 0;
        int i;
 
        struct pcmtst_buf_iter *v_iter;
        struct snd_pcm_substream *substream;
 
-       v_iter = from_timer(v_iter, data, timer_instance);
+       v_iter = timer_container_of(v_iter, data, timer_instance);
        substream = v_iter->substream;
 
        if (v_iter->suspend)
 
        unsigned long flags;
        struct snd_uart16550 *uart;
 
-       uart = from_timer(uart, t, buffer_timer);
+       uart = timer_container_of(uart, t, buffer_timer);
        spin_lock_irqsave(&uart->open_lock, flags);
        snd_uart16550_del_timer(uart);
        snd_uart16550_io_loop(uart);
 
 
 static void snd_ak4117_timer(struct timer_list *t)
 {
-       struct ak4117 *chip = from_timer(chip, t, timer);
+       struct ak4117 *chip = timer_container_of(chip, t, timer);
 
        if (chip->init)
                return;
 
  */
 static void emu8k_pcm_timer_func(struct timer_list *t)
 {
-       struct snd_emu8k_pcm *rec = from_timer(rec, t, timer);
+       struct snd_emu8k_pcm *rec = timer_container_of(rec, t, timer);
        int ptr, delta;
 
        spin_lock(&rec->timer_lock);
 
 
 static void snd_sb8dsp_midi_output_timer(struct timer_list *t)
 {
-       struct snd_sb *chip = from_timer(chip, t, midi_timer);
+       struct snd_sb *chip = timer_container_of(chip, t, midi_timer);
        struct snd_rawmidi_substream *substream = chip->midi_substream_output;
        unsigned long flags;
 
 
 
 static void snd_wavefront_midi_output_timer(struct timer_list *t)
 {
-       snd_wavefront_midi_t *midi = from_timer(midi, t, timer);
+       snd_wavefront_midi_t *midi = timer_container_of(midi, t, timer);
        snd_wavefront_card_t *card = midi->timer_card;
        unsigned long flags;
        
 
 */
 static void snd_card_asihpi_timer_function(struct timer_list *t)
 {
-       struct snd_card_asihpi_pcm *dpcm = from_timer(dpcm, t, timer);
+       struct snd_card_asihpi_pcm *dpcm = timer_container_of(dpcm, t, timer);
        struct snd_pcm_substream *substream = dpcm->substream;
        struct snd_card_asihpi *card = snd_pcm_substream_chip(substream);
        struct snd_pcm_runtime *runtime;
 
 
 static void ct_systimer_callback(struct timer_list *t)
 {
-       struct ct_timer_instance *ti = from_timer(ti, t, timer);
+       struct ct_timer_instance *ti = timer_container_of(ti, t, timer);
        struct snd_pcm_substream *substream = ti->substream;
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct ct_atc_pcm *apcm = ti->apcm;
 
 
 static void snd_echo_midi_output_write(struct timer_list *t)
 {
-       struct echoaudio *chip = from_timer(chip, t, timer);
+       struct echoaudio *chip = timer_container_of(chip, t, timer);
        unsigned long flags;
        int bytes, sent, time;
        unsigned char buf[MIDI_OUT_BUFFER_SIZE - 1];
 
 
 static void snd_hdsp_midi_output_timer(struct timer_list *t)
 {
-       struct hdsp_midi *hmidi = from_timer(hmidi, t, timer);
+       struct hdsp_midi *hmidi = timer_container_of(hmidi, t, timer);
        unsigned long flags;
 
        snd_hdsp_midi_output_write(hmidi);
 
 
 static void snd_hdspm_midi_output_timer(struct timer_list *t)
 {
-       struct hdspm_midi *hmidi = from_timer(hmidi, t, timer);
+       struct hdspm_midi *hmidi = timer_container_of(hmidi, t, timer);
        unsigned long flags;
 
        snd_hdspm_midi_output_write(hmidi);
 
 
 static void aica_period_elapsed(struct timer_list *t)
 {
-       struct snd_card_aica *dreamcastcard = from_timer(dreamcastcard,
-                                                             t, timer);
+       struct snd_card_aica *dreamcastcard = timer_container_of(dreamcastcard,
+                                                                t, timer);
        struct snd_pcm_substream *substream = dreamcastcard->substream;
        /*timer function - so cannot sleep */
        int play_period;
 
 
 static void rt5645_btn_check_callback(struct timer_list *t)
 {
-       struct rt5645_priv *rt5645 = from_timer(rt5645, t, btn_check_timer);
+       struct rt5645_priv *rt5645 = timer_container_of(rt5645, t,
+                                                       btn_check_timer);
 
        queue_delayed_work(system_power_efficient_wq,
                   &rt5645->jack_detect_work, msecs_to_jiffies(5));
 
 static void imx_rpmsg_timer_callback(struct timer_list *t)
 {
        struct stream_timer  *stream_timer =
-                       from_timer(stream_timer, t, timer);
+                       timer_container_of(stream_timer, t, timer);
        struct snd_pcm_substream *substream = stream_timer->substream;
        struct rpmsg_info *info = stream_timer->info;
        struct rpmsg_msg *msg;
 
  */
 void snd_emux_timer_callback(struct timer_list *t)
 {
-       struct snd_emux *emu = from_timer(emu, t, tlist);
+       struct snd_emux *emu = timer_container_of(emu, t, tlist);
        struct snd_emux_voice *vp;
        unsigned long flags;
        int ch, do_again = 0;
 
 /* called after transfers had been interrupted due to some USB error */
 static void snd_usbmidi_error_timer(struct timer_list *t)
 {
-       struct snd_usb_midi *umidi = from_timer(umidi, t, error_timer);
+       struct snd_usb_midi *umidi = timer_container_of(umidi, t, error_timer);
        unsigned int i, j;
 
        spin_lock(&umidi->disc_lock);