Merge tag 'rpmsg-v4.15' of git://github.com/andersson/remoteproc
[platform/kernel/linux-rpi.git] / net / mac80211 / mesh_plink.c
index f69c6c3..e2d00cc 100644 (file)
@@ -220,8 +220,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
        bool include_plid = false;
        u16 peering_proto = 0;
        u8 *pos, ie_len = 4;
-       int hdr_len = offsetof(struct ieee80211_mgmt, u.action.u.self_prot) +
-                     sizeof(mgmt->u.action.u.self_prot);
+       int hdr_len = offsetofend(struct ieee80211_mgmt, u.action.u.self_prot);
        int err = -ENOMEM;
 
        skb = dev_alloc_skb(local->tx_headroom +
@@ -604,8 +603,9 @@ out:
        ieee80211_mbss_info_change_notify(sdata, changed);
 }
 
-static void mesh_plink_timer(unsigned long data)
+void mesh_plink_timer(struct timer_list *t)
 {
+       struct mesh_sta *mesh = from_timer(mesh, t, plink_timer);
        struct sta_info *sta;
        u16 reason = 0;
        struct ieee80211_sub_if_data *sdata;
@@ -617,7 +617,7 @@ static void mesh_plink_timer(unsigned long data)
         * del_timer_sync() this timer after having made sure
         * it cannot be readded (by deleting the plink.)
         */
-       sta = (struct sta_info *) data;
+       sta = mesh->plink_sta;
 
        if (sta->sdata->local->quiescing)
                return;
@@ -697,11 +697,8 @@ static void mesh_plink_timer(unsigned long data)
 
 static inline void mesh_plink_timer_set(struct sta_info *sta, u32 timeout)
 {
-       sta->mesh->plink_timer.expires = jiffies + msecs_to_jiffies(timeout);
-       sta->mesh->plink_timer.data = (unsigned long) sta;
-       sta->mesh->plink_timer.function = mesh_plink_timer;
        sta->mesh->plink_timeout = timeout;
-       add_timer(&sta->mesh->plink_timer);
+       mod_timer(&sta->mesh->plink_timer, jiffies + msecs_to_jiffies(timeout));
 }
 
 static bool llid_in_use(struct ieee80211_sub_if_data *sdata,