Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77861d9c authored by Gerlando Falauto's avatar Gerlando Falauto Committed by David S. Miller
Browse files

tipc: tipc_bcbearer_send(): simplify bearer selection

parent e6160710
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -610,23 +610,23 @@ static int tipc_bcbearer_send(struct sk_buff *buf,
	for (bp_index = 0; bp_index < MAX_BEARERS; bp_index++) {
		struct tipc_bearer *p = bcbearer->bpairs[bp_index].primary;
		struct tipc_bearer *s = bcbearer->bpairs[bp_index].secondary;
		struct tipc_bearer *b = p;

		if (!p)
			break; /* No more bearers to try */

		tipc_nmap_diff(&bcbearer->remains, &p->nodes,
		if (tipc_bearer_blocked(p)) {
			if (!s || tipc_bearer_blocked(s))
				continue; /* Can't use either bearer */
			b = s;
		}

		tipc_nmap_diff(&bcbearer->remains, &b->nodes,
			       &bcbearer->remains_new);
		if (bcbearer->remains_new.count == bcbearer->remains.count)
			continue; /* Nothing added by bearer pair */

		if (!tipc_bearer_blocked(p))
			tipc_bearer_send(p, buf, &p->bcast_addr);
		else if (s && !tipc_bearer_blocked(s))
			/* unable to send on primary bearer */
			tipc_bearer_send(s, buf, &s->bcast_addr);
		else
			/* unable to send on either bearer */
			continue;
		tipc_bearer_send(b, buf, &b->bcast_addr);

		/* Swap bearers for next packet */
		if (s) {