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} |