Sending over AF_PACKET RAW sockets we can sending frames which exceeds
MTU size. To handling it correct we need to change things in AF_PACKET
which knows on RAW sockets an additional FCS is set by hardware or
mac802154 transmit functionality.
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
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);