|
@@ -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;
|
|
|
}
|