firewire: net: really fix maximum possible MTU
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 29 Oct 2016 20:16:58 +0000 (22:16 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 30 Oct 2016 03:00:45 +0000 (23:00 -0400)
The maximum unicast datagram size /without/ link fragmentation is
4096 - 4 = 4092 (max IEEE 1394 async payload size at >= S800 bus speed,
minus unfragmented encapssulation header).  Max broadcast datagram size
without fragmentation is 8 bytes less than that (due to GASP header).

The maximum datagram size /with/ link fragmentation is 0xfff = 4095
for unicast and broadcast.  This is because the RFC 2734 fragment
encapsulation header field for datagram size is only 12 bits wide.

Fixes: 5d48f00d836a('firewire: net: fix maximum possible MTU')
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/firewire/net.c

index 03715e7d9d92125f15e8ade08bc58350e241c506..363fc5ec1a4eb20ee70e17ac611dd1b917a0624c 100644 (file)
@@ -1465,7 +1465,7 @@ static int fwnet_probe(struct fw_unit *unit,
 
        net->mtu = 1500U;
        net->min_mtu = ETH_MIN_MTU;
-       net->max_mtu = ETH_MAX_MTU;
+       net->max_mtu = 0xfff;
 
        /* Set our hardware address while we're at it */
        ha = (union fwnet_hwaddr *)net->dev_addr;