diff options
Diffstat (limited to 'net/mac80211/mesh_pathtbl.c')
-rw-r--r-- | net/mac80211/mesh_pathtbl.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c index b39224d8255..075bc535c60 100644 --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c | |||
@@ -18,12 +18,6 @@ | |||
18 | #include "ieee80211_i.h" | 18 | #include "ieee80211_i.h" |
19 | #include "mesh.h" | 19 | #include "mesh.h" |
20 | 20 | ||
21 | #ifdef CONFIG_MAC80211_VERBOSE_MPATH_DEBUG | ||
22 | #define mpath_dbg(fmt, args...) printk(KERN_DEBUG fmt, ##args) | ||
23 | #else | ||
24 | #define mpath_dbg(fmt, args...) do { (void)(0); } while (0) | ||
25 | #endif | ||
26 | |||
27 | /* There will be initially 2^INIT_PATHS_SIZE_ORDER buckets */ | 21 | /* There will be initially 2^INIT_PATHS_SIZE_ORDER buckets */ |
28 | #define INIT_PATHS_SIZE_ORDER 2 | 22 | #define INIT_PATHS_SIZE_ORDER 2 |
29 | 23 | ||
@@ -322,9 +316,8 @@ static void mesh_path_move_to_queue(struct mesh_path *gate_mpath, | |||
322 | 316 | ||
323 | spin_lock_irqsave(&gate_mpath->frame_queue.lock, flags); | 317 | spin_lock_irqsave(&gate_mpath->frame_queue.lock, flags); |
324 | skb_queue_splice(&gateq, &gate_mpath->frame_queue); | 318 | skb_queue_splice(&gateq, &gate_mpath->frame_queue); |
325 | mpath_dbg("Mpath queue for gate %pM has %d frames\n", | 319 | mpath_dbg(gate_mpath->sdata, "Mpath queue for gate %pM has %d frames\n", |
326 | gate_mpath->dst, | 320 | gate_mpath->dst, skb_queue_len(&gate_mpath->frame_queue)); |
327 | skb_queue_len(&gate_mpath->frame_queue)); | ||
328 | spin_unlock_irqrestore(&gate_mpath->frame_queue.lock, flags); | 321 | spin_unlock_irqrestore(&gate_mpath->frame_queue.lock, flags); |
329 | 322 | ||
330 | if (!copy) | 323 | if (!copy) |
@@ -446,9 +439,9 @@ int mesh_path_add_gate(struct mesh_path *mpath) | |||
446 | hlist_add_head_rcu(&new_gate->list, tbl->known_gates); | 439 | hlist_add_head_rcu(&new_gate->list, tbl->known_gates); |
447 | spin_unlock_bh(&tbl->gates_lock); | 440 | spin_unlock_bh(&tbl->gates_lock); |
448 | rcu_read_unlock(); | 441 | rcu_read_unlock(); |
449 | mpath_dbg("Mesh path (%s): Recorded new gate: %pM. %d known gates\n", | 442 | mpath_dbg(mpath->sdata, |
450 | mpath->sdata->name, mpath->dst, | 443 | "Mesh path: Recorded new gate: %pM. %d known gates\n", |
451 | mpath->sdata->u.mesh.num_gates); | 444 | mpath->dst, mpath->sdata->u.mesh.num_gates); |
452 | return 0; | 445 | return 0; |
453 | err_rcu: | 446 | err_rcu: |
454 | rcu_read_unlock(); | 447 | rcu_read_unlock(); |
@@ -477,8 +470,8 @@ static int mesh_gate_del(struct mesh_table *tbl, struct mesh_path *mpath) | |||
477 | spin_unlock_bh(&tbl->gates_lock); | 470 | spin_unlock_bh(&tbl->gates_lock); |
478 | mpath->sdata->u.mesh.num_gates--; | 471 | mpath->sdata->u.mesh.num_gates--; |
479 | mpath->is_gate = false; | 472 | mpath->is_gate = false; |
480 | mpath_dbg("Mesh path (%s): Deleted gate: %pM. " | 473 | mpath_dbg(mpath->sdata, |
481 | "%d known gates\n", mpath->sdata->name, | 474 | "Mesh path: Deleted gate: %pM. %d known gates\n", |
482 | mpath->dst, mpath->sdata->u.mesh.num_gates); | 475 | mpath->dst, mpath->sdata->u.mesh.num_gates); |
483 | break; | 476 | break; |
484 | } | 477 | } |
@@ -785,7 +778,7 @@ static void __mesh_path_del(struct mesh_table *tbl, struct mpath_node *node) | |||
785 | /** | 778 | /** |
786 | * mesh_path_flush_by_nexthop - Deletes mesh paths if their next hop matches | 779 | * mesh_path_flush_by_nexthop - Deletes mesh paths if their next hop matches |
787 | * | 780 | * |
788 | * @sta - mesh peer to match | 781 | * @sta: mesh peer to match |
789 | * | 782 | * |
790 | * RCU notes: this function is called when a mesh plink transitions from | 783 | * RCU notes: this function is called when a mesh plink transitions from |
791 | * PLINK_ESTAB to any other state, since PLINK_ESTAB state is the only one that | 784 | * PLINK_ESTAB to any other state, since PLINK_ESTAB state is the only one that |
@@ -840,7 +833,7 @@ static void table_flush_by_iface(struct mesh_table *tbl, | |||
840 | * | 833 | * |
841 | * This function deletes both mesh paths as well as mesh portal paths. | 834 | * This function deletes both mesh paths as well as mesh portal paths. |
842 | * | 835 | * |
843 | * @sdata - interface data to match | 836 | * @sdata: interface data to match |
844 | * | 837 | * |
845 | */ | 838 | */ |
846 | void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata) | 839 | void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata) |
@@ -946,19 +939,20 @@ int mesh_path_send_to_gates(struct mesh_path *mpath) | |||
946 | continue; | 939 | continue; |
947 | 940 | ||
948 | if (gate->mpath->flags & MESH_PATH_ACTIVE) { | 941 | if (gate->mpath->flags & MESH_PATH_ACTIVE) { |
949 | mpath_dbg("Forwarding to %pM\n", gate->mpath->dst); | 942 | mpath_dbg(sdata, "Forwarding to %pM\n", gate->mpath->dst); |
950 | mesh_path_move_to_queue(gate->mpath, from_mpath, copy); | 943 | mesh_path_move_to_queue(gate->mpath, from_mpath, copy); |
951 | from_mpath = gate->mpath; | 944 | from_mpath = gate->mpath; |
952 | copy = true; | 945 | copy = true; |
953 | } else { | 946 | } else { |
954 | mpath_dbg("Not forwarding %p\n", gate->mpath); | 947 | mpath_dbg(sdata, |
955 | mpath_dbg("flags %x\n", gate->mpath->flags); | 948 | "Not forwarding %p (flags %#x)\n", |
949 | gate->mpath, gate->mpath->flags); | ||
956 | } | 950 | } |
957 | } | 951 | } |
958 | 952 | ||
959 | hlist_for_each_entry_rcu(gate, n, known_gates, list) | 953 | hlist_for_each_entry_rcu(gate, n, known_gates, list) |
960 | if (gate->mpath->sdata == sdata) { | 954 | if (gate->mpath->sdata == sdata) { |
961 | mpath_dbg("Sending to %pM\n", gate->mpath->dst); | 955 | mpath_dbg(sdata, "Sending to %pM\n", gate->mpath->dst); |
962 | mesh_path_tx_pending(gate->mpath); | 956 | mesh_path_tx_pending(gate->mpath); |
963 | } | 957 | } |
964 | 958 | ||