mac802154: tx: add warning if MTU exceeds
[cascardo/linux.git] / net / mac802154 / tx.c
index 66d7ecb..5ee596e 100644 (file)
@@ -71,6 +71,17 @@ ieee802154_tx(struct ieee802154_local *local, struct sk_buff *skb)
        struct net_device *dev = skb->dev;
        int ret;
 
+       /* This check is for AF_PACKET RAW socket only, which doesn't
+        * know about the FCS which is set here or by hardware. otherwise
+        * it should not occur in any case!
+        *
+        * TODO: This should be handled in AF_PACKET and return -EMSGSIZE.
+        */
+       if (skb->len > IEEE802154_MTU - IEEE802154_FCS_LEN) {
+               netdev_warn(dev, "Frame len above MTU limit. Dropped.\n");
+               goto err_tx;
+       }
+
        if (!(local->hw.flags & IEEE802154_HW_TX_OMIT_CKSUM)) {
                u16 crc = crc_ccitt(0, skb->data, skb->len);