Re: [PATCH net-next v2 1/7] mld: convert from timer to delayed work
From: Cong Wang <hidden>
Date: 2021-02-13 19:08:15
On Sat, Feb 13, 2021 at 9:51 AM Taehee Yoo [off-list ref] wrote:
-static void mld_dad_start_timer(struct inet6_dev *idev, unsigned long delay)
+static void mld_dad_start_work(struct inet6_dev *idev, unsigned long delay)
{
unsigned long tv = prandom_u32() % delay;
- if (!mod_timer(&idev->mc_dad_timer, jiffies+tv+2))
+ if (!mod_delayed_work(mld_wq, &idev->mc_dad_work, msecs_to_jiffies(tv + 2)))IIUC, before this patch 'delay' is in jiffies, after this patch it is in msecs? [...]
-static void mld_dad_timer_expire(struct timer_list *t)
+static void mld_dad_work(struct work_struct *work)
{
- struct inet6_dev *idev = from_timer(idev, t, mc_dad_timer);
+ struct inet6_dev *idev = container_of(to_delayed_work(work),
+ struct inet6_dev,
+ mc_dad_work);
+ rtnl_lock();Any reason why we need RTNL after converting the timer to delayed work? Thanks.