|
@@ -792,9 +792,9 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- spin_lock(&ifmsh->mesh_preq_queue_lock);
|
|
|
|
|
|
+ spin_lock_bh(&ifmsh->mesh_preq_queue_lock);
|
|
if (ifmsh->preq_queue_len == MAX_PREQ_QUEUE_LEN) {
|
|
if (ifmsh->preq_queue_len == MAX_PREQ_QUEUE_LEN) {
|
|
- spin_unlock(&ifmsh->mesh_preq_queue_lock);
|
|
|
|
|
|
+ spin_unlock_bh(&ifmsh->mesh_preq_queue_lock);
|
|
kfree(preq_node);
|
|
kfree(preq_node);
|
|
if (printk_ratelimit())
|
|
if (printk_ratelimit())
|
|
mhwmp_dbg("PREQ node queue full\n");
|
|
mhwmp_dbg("PREQ node queue full\n");
|
|
@@ -806,7 +806,7 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags)
|
|
|
|
|
|
list_add_tail(&preq_node->list, &ifmsh->preq_queue.list);
|
|
list_add_tail(&preq_node->list, &ifmsh->preq_queue.list);
|
|
++ifmsh->preq_queue_len;
|
|
++ifmsh->preq_queue_len;
|
|
- spin_unlock(&ifmsh->mesh_preq_queue_lock);
|
|
|
|
|
|
+ spin_unlock_bh(&ifmsh->mesh_preq_queue_lock);
|
|
|
|
|
|
if (time_after(jiffies, ifmsh->last_preq + min_preq_int_jiff(sdata)))
|
|
if (time_after(jiffies, ifmsh->last_preq + min_preq_int_jiff(sdata)))
|
|
ieee80211_queue_work(&sdata->local->hw, &sdata->work);
|
|
ieee80211_queue_work(&sdata->local->hw, &sdata->work);
|