aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2015-09-21 11:24:33 +0200
committerMarcel Holtmann <marcel@holtmann.org>2015-09-22 11:51:22 +0200
commit79750ac4257763ff595a8b2cdc7ba580f0b0c8e0 (patch)
tree74db3f8b7b05dab596823df104536d959c913736
parentmrf24j40: change to frame delivery with crc (diff)
downloadlinux-dev-79750ac4257763ff595a8b2cdc7ba580f0b0c8e0.tar.xz
linux-dev-79750ac4257763ff595a8b2cdc7ba580f0b0c8e0.zip
ieee802154: add helpers for frame control checks
This patch introduce two static inline functions. The first to get the frame control field from an sk_buff. The second is for checking on the acknowledgment request bit on the frame control field. Later we can introduce more functions to check on the frame control fields. These will deprecate the current behaviour which requires a host-byteorder conversion and manually bit handling. Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com> Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--include/linux/ieee802154.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/ieee802154.h b/include/linux/ieee802154.h
index 205ce4e1ac32..aca228b81464 100644
--- a/include/linux/ieee802154.h
+++ b/include/linux/ieee802154.h
@@ -25,6 +25,8 @@
#include <linux/types.h>
#include <linux/random.h>
+#include <linux/skbuff.h>
+#include <linux/unaligned/memmove.h>
#include <asm/byteorder.h>
#define IEEE802154_MTU 127
@@ -218,6 +220,7 @@ enum {
/* frame control handling */
#define IEEE802154_FCTL_FTYPE 0x0003
+#define IEEE802154_FCTL_ACKREQ 0x0020
#define IEEE802154_FCTL_INTRA_PAN 0x0040
#define IEEE802154_FTYPE_DATA 0x0001
@@ -233,6 +236,15 @@ static inline int ieee802154_is_data(__le16 fc)
}
/**
+ * ieee802154_is_ackreq - check if acknowledgment request bit is set
+ * @fc: frame control bytes in little-endian byteorder
+ */
+static inline bool ieee802154_is_ackreq(__le16 fc)
+{
+ return fc & cpu_to_le16(IEEE802154_FCTL_ACKREQ);
+}
+
+/**
* ieee802154_is_intra_pan - check if intra pan id communication
* @fc: frame control bytes in little-endian byteorder
*/