ieee802154: correct ieee802154_is_valid_psdu_len
authorAlexander Aring <alex.aring@gmail.com>
Wed, 11 Feb 2015 13:39:15 +0000 (14:39 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 14 Feb 2015 04:19:58 +0000 (05:19 +0100)
This patch corrects the ieee802154_is_valid_psdu_len function that this
function also checks on reserved values 6-8 for validation the psdu
length.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/linux/ieee802154.h

index 6e82d888287c280e096bc4c8c4cd585f786fb507..40b0ab953937e52559b91c60da559acccd094b4d 100644 (file)
@@ -28,7 +28,8 @@
 #include <asm/byteorder.h>
 
 #define IEEE802154_MTU                 127
-#define IEEE802154_MIN_PSDU_LEN                5
+#define IEEE802154_ACK_PSDU_LEN                5
+#define IEEE802154_MIN_PSDU_LEN                9
 
 #define IEEE802154_PAN_ID_BROADCAST    0xffff
 #define IEEE802154_ADDR_SHORT_BROADCAST        0xffff
@@ -204,11 +205,18 @@ enum {
 
 /**
  * ieee802154_is_valid_psdu_len - check if psdu len is valid
+ * available lengths:
+ *     0-4     Reserved
+ *     5       MPDU (Acknowledgment)
+ *     6-8     Reserved
+ *     9-127   MPDU
+ *
  * @len: psdu len with (MHR + payload + MFR)
  */
 static inline bool ieee802154_is_valid_psdu_len(const u8 len)
 {
-       return (len >= IEEE802154_MIN_PSDU_LEN && len <= IEEE802154_MTU);
+       return (len == IEEE802154_ACK_PSDU_LEN ||
+               (len >= IEEE802154_MIN_PSDU_LEN && len <= IEEE802154_MTU));
 }
 
 /**