mesh_hwmp.c (d585a021c0b10b0477d6b608c53e1feb8cde0507) mesh_hwmp.c (5bb644a0fd25a5e083ecbfaa92a211db99aa6ef7)
1/*
2 * Copyright (c) 2008 open80211s Ltd.
3 * Author: Luis Carlos Cobo <luisca@cozybit.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */

--- 822 unchanged lines hidden (view full) ---

831 struct ieee80211_sub_if_data *sdata;
832 struct mesh_path *mpath;
833
834 rcu_read_lock();
835 mpath = (struct mesh_path *) data;
836 mpath = rcu_dereference(mpath);
837 if (!mpath)
838 goto endmpathtimer;
1/*
2 * Copyright (c) 2008 open80211s Ltd.
3 * Author: Luis Carlos Cobo <luisca@cozybit.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */

--- 822 unchanged lines hidden (view full) ---

831 struct ieee80211_sub_if_data *sdata;
832 struct mesh_path *mpath;
833
834 rcu_read_lock();
835 mpath = (struct mesh_path *) data;
836 mpath = rcu_dereference(mpath);
837 if (!mpath)
838 goto endmpathtimer;
839 spin_lock_bh(&mpath->state_lock);
840 sdata = mpath->sdata;
839 sdata = mpath->sdata;
840
841 if (sdata->local->quiescing) {
842 rcu_read_unlock();
843 return;
844 }
845
846 spin_lock_bh(&mpath->state_lock);
841 if (mpath->flags & MESH_PATH_RESOLVED ||
842 (!(mpath->flags & MESH_PATH_RESOLVING)))
843 mpath->flags &= ~(MESH_PATH_RESOLVING | MESH_PATH_RESOLVED);
844 else if (mpath->discovery_retries < max_preq_retries(sdata)) {
845 ++mpath->discovery_retries;
846 mpath->discovery_timeout *= 2;
847 mesh_queue_preq(mpath, 0);
848 } else {
849 mpath->flags = 0;
850 mpath->exp_time = jiffies;
851 mesh_path_flush_pending(mpath);
852 }
853
854 spin_unlock_bh(&mpath->state_lock);
855endmpathtimer:
856 rcu_read_unlock();
857}
847 if (mpath->flags & MESH_PATH_RESOLVED ||
848 (!(mpath->flags & MESH_PATH_RESOLVING)))
849 mpath->flags &= ~(MESH_PATH_RESOLVING | MESH_PATH_RESOLVED);
850 else if (mpath->discovery_retries < max_preq_retries(sdata)) {
851 ++mpath->discovery_retries;
852 mpath->discovery_timeout *= 2;
853 mesh_queue_preq(mpath, 0);
854 } else {
855 mpath->flags = 0;
856 mpath->exp_time = jiffies;
857 mesh_path_flush_pending(mpath);
858 }
859
860 spin_unlock_bh(&mpath->state_lock);
861endmpathtimer:
862 rcu_read_unlock();
863}