tipc: introduce jumbo frame support for broadcast

Until now, we have only been supporting a fix MTU size of 1500 bytes
for all broadcast media, irrespective of their actual capability.

We now make the broadcast MTU adaptable to the carrying media, i.e.,
we use the smallest MTU supported by any of the interfaces attached
to TIPC.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Jon Paul Maloy
2015-10-22 08:51:43 -04:00
committed by David S. Miller
parent b06b281e79
commit 959e1781aa
7 changed files with 39 additions and 6 deletions

View File

@@ -148,9 +148,9 @@ void tipc_bclink_input(struct net *net)
tipc_sk_mcast_rcv(net, &tn->bcbase->arrvq, &tn->bcbase->inputq);
}
uint tipc_bcast_get_mtu(void)
int tipc_bcast_get_mtu(struct net *net)
{
return MAX_PKT_DEFAULT_MCAST;
return tipc_link_mtu(tipc_bc_sndlink(net));
}
static u16 bcbuf_acks(struct sk_buff *skb)
@@ -175,7 +175,7 @@ static void tipc_bcbase_select_primary(struct net *net)
{
struct tipc_bc_base *bb = tipc_bc_base(net);
int all_dests = tipc_link_bc_peers(bb->link);
int i;
int i, mtu;
bb->primary_bearer = INVALID_BEARER_ID;
@@ -183,6 +183,13 @@ static void tipc_bcbase_select_primary(struct net *net)
return;
for (i = 0; i < MAX_BEARERS; i++) {
if (!bb->dests[i])
continue;
mtu = tipc_bearer_mtu(net, i);
if (mtu < tipc_link_mtu(bb->link))
tipc_link_set_mtu(bb->link, mtu);
if (bb->dests[i] < all_dests)
continue;
@@ -1220,7 +1227,7 @@ int tipc_bcast_init(struct net *net)
bb->node.net = net;
if (!tipc_link_bc_create(&bb->node, 0, 0,
MAX_PKT_DEFAULT_MCAST,
U16_MAX,
BCLINK_WIN_DEFAULT,
0,
&bb->inputq,