]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/mac802154/iface.c
Merge remote-tracking branch 'arm-soc/for-next'
[karo-tx-linux.git] / net / mac802154 / iface.c
index 3954bcff70e4ac1e45da28ffdd4f469d1149016f..7079cd32a7ad201265cf730027dda07254e622aa 100644 (file)
@@ -547,7 +547,17 @@ static void ieee802154_if_setup(struct net_device *dev)
         */
        dev->needed_tailroom    = IEEE802154_MAX_AUTH_TAG_LEN +
                                  IEEE802154_FCS_LEN;
-       dev->mtu                = IEEE802154_MTU;
+       /* The mtu size is the payload without mac header in this case.
+        * We have a dynamic length header with a minimum header length
+        * which is hard_header_len. In this case we let mtu to the size
+        * of maximum payload which is IEEE802154_MTU - IEEE802154_FCS_LEN -
+        * hard_header_len. The FCS which is set by hardware or ndo_start_xmit
+        * and the minimum mac header which can be evaluated inside driver
+        * layer. The rest of mac header will be part of payload if greater
+        * than hard_header_len.
+        */
+       dev->mtu                = IEEE802154_MTU - IEEE802154_FCS_LEN -
+                                 dev->hard_header_len;
        dev->tx_queue_len       = 300;
        dev->flags              = IFF_NOARP | IFF_BROADCAST;
 }