batman-adv: Re-Enable Interface alternating and bonding

Message ID 1287988488-10533-1-git-send-email-clang@gateworks.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Chris Lang Oct. 25, 2010, 6:34 a.m. UTC
  r1765 incidentally disabled bonding of packets first entering the
mesh along with also disabling interface alternating regardless
of where the packet came from. This re-enables these options.

Signed-off-by: Chris Lang <clang@gateworks.com>
---
 routing.c |   12 ++++--------
 routing.h |    4 ++--
 unicast.c |    2 +-
 3 files changed, 7 insertions(+), 11 deletions(-)
  

Comments

Marek Lindner Oct. 25, 2010, 12:44 p.m. UTC | #1
On Monday 25 October 2010 08:34:48 Chris Lang wrote:
> r1765 incidentally disabled bonding of packets first entering the
> mesh along with also disabling interface alternating regardless
> of where the packet came from. This re-enables these options.

Wow - what a catch! :-)
We might have to reword your commit message to get your patch accepted by the 
Linux stable maintainers. I offer to do the job if you don't mind.

Cheers,
Marek
  
Chris Lang Oct. 25, 2010, 3:36 p.m. UTC | #2
On Mon, 2010-10-25 at 14:44 +0200, Marek Lindner wrote:
> On Monday 25 October 2010 08:34:48 Chris Lang wrote:
> > r1765 incidentally disabled bonding of packets first entering the
> > mesh along with also disabling interface alternating regardless
> > of where the packet came from. This re-enables these options.
> 
> Wow - what a catch! :-)
> We might have to reword your commit message to get your patch accepted by the 
> Linux stable maintainers. I offer to do the job if you don't mind.
> 
> Cheers,
> Marek

Marek,

I don't have any issue with you rewording the commit message. I just
didn't think about making the commit message linux friendly.

Thanks,
  
Marek Lindner Oct. 25, 2010, 10:22 p.m. UTC | #3
On Monday 25 October 2010 17:36:30 Chris Lang wrote:
> I don't have any issue with you rewording the commit message. I just
> didn't think about making the commit message linux friendly.

Ok, applied your patch in revision 1853.

Thanks,
Marek
  

Patch

diff --git a/routing.c b/routing.c
index 7c9a053..f1012bc 100644
--- a/routing.c
+++ b/routing.c
@@ -1001,10 +1001,10 @@  int recv_icmp_packet(struct sk_buff *skb, struct batman_if *recv_if)
 
 /* find a suitable router for this originator, and use
  * bonding if possible. */
-struct neigh_node *find_router(struct orig_node *orig_node,
+struct neigh_node *find_router(struct bat_priv *bat_priv,
+			       struct orig_node *orig_node,
 			       struct batman_if *recv_if)
 {
-	struct bat_priv *bat_priv;
 	struct orig_node *primary_orig_node;
 	struct orig_node *router_orig;
 	struct neigh_node *router, *first_candidate, *best_router;
@@ -1020,13 +1020,9 @@  struct neigh_node *find_router(struct orig_node *orig_node,
 	/* without bonding, the first node should
 	 * always choose the default router. */
 
-	if (!recv_if)
-		return orig_node->router;
-
-	bat_priv = netdev_priv(recv_if->soft_iface);
 	bonding_enabled = atomic_read(&bat_priv->bonding_enabled);
 
-	if (!bonding_enabled)
+	if (!recv_if && !bonding_enabled)
 		return orig_node->router;
 
 	router_orig = orig_node->router->orig_node;
@@ -1155,7 +1151,7 @@  static int route_unicast_packet(struct sk_buff *skb,
 	orig_node = ((struct orig_node *)
 		     hash_find(bat_priv->orig_hash, unicast_packet->dest));
 
-	router = find_router(orig_node, recv_if);
+	router = find_router(bat_priv, orig_node, recv_if);
 
 	if (!router) {
 		spin_unlock_irqrestore(&bat_priv->orig_hash_lock, flags);
diff --git a/routing.h b/routing.h
index 06ea99d..92674c8 100644
--- a/routing.h
+++ b/routing.h
@@ -38,8 +38,8 @@  int recv_ucast_frag_packet(struct sk_buff *skb, struct batman_if *recv_if);
 int recv_bcast_packet(struct sk_buff *skb, struct batman_if *recv_if);
 int recv_vis_packet(struct sk_buff *skb, struct batman_if *recv_if);
 int recv_bat_packet(struct sk_buff *skb, struct batman_if *recv_if);
-struct neigh_node *find_router(struct orig_node *orig_node,
-		struct batman_if *recv_if);
+struct neigh_node *find_router(struct bat_priv *bat_priv,
+		struct orig_node *orig_node, struct batman_if *recv_if);
 void update_bonding_candidates(struct bat_priv *bat_priv,
 			       struct orig_node *orig_node);
 
diff --git a/unicast.c b/unicast.c
index 0dac50d..0459413 100644
--- a/unicast.c
+++ b/unicast.c
@@ -224,7 +224,7 @@  int unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv)
 	if (!orig_node)
 		orig_node = transtable_search(bat_priv, ethhdr->h_dest);
 
-	router = find_router(orig_node, NULL);
+	router = find_router(bat_priv, orig_node, NULL);
 
 	if (!router)
 		goto unlock;