aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ieee802154.h
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-11-23 03:04:05 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-11-23 03:04:05 -0500
commit92907cbbef8625bb3998d1eb385fc88f23c97a3f (patch)
tree15626ff9287e37c3cb81c7286d6db5a7fd77c854 /include/linux/ieee802154.h
parent15fbfccfe92c62ae8d1ecc647c44157ed01ac02e (diff)
parent1ec218373b8ebda821aec00bb156a9c94fad9cd4 (diff)
Merge tag 'v4.4-rc2' into drm-intel-next-queued
Linux 4.4-rc2 Backmerge to get at commit 1b0e3a049efe471c399674fd954500ce97438d30 Author: Imre Deak <imre.deak@intel.com> Date: Thu Nov 5 23:04:11 2015 +0200 drm/i915/skl: disable display side power well support for now so that we can proplery re-eanble skl power wells in -next. Conflicts are just adjacent lines changed, except for intel_fbdev.c where we need to interleave the changs. Nothing nefarious. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Diffstat (limited to 'include/linux/ieee802154.h')
-rw-r--r--include/linux/ieee802154.h47
1 files changed, 46 insertions, 1 deletions
diff --git a/include/linux/ieee802154.h b/include/linux/ieee802154.h
index 1dc1f4ed4001..d3e415674dac 100644
--- a/include/linux/ieee802154.h
+++ b/include/linux/ieee802154.h
@@ -25,12 +25,22 @@
25 25
26#include <linux/types.h> 26#include <linux/types.h>
27#include <linux/random.h> 27#include <linux/random.h>
28#include <asm/byteorder.h>
29 28
30#define IEEE802154_MTU 127 29#define IEEE802154_MTU 127
31#define IEEE802154_ACK_PSDU_LEN 5 30#define IEEE802154_ACK_PSDU_LEN 5
32#define IEEE802154_MIN_PSDU_LEN 9 31#define IEEE802154_MIN_PSDU_LEN 9
33#define IEEE802154_FCS_LEN 2 32#define IEEE802154_FCS_LEN 2
33#define IEEE802154_MAX_AUTH_TAG_LEN 16
34
35/* General MAC frame format:
36 * 2 bytes: Frame Control
37 * 1 byte: Sequence Number
38 * 20 bytes: Addressing fields
39 * 14 bytes: Auxiliary Security Header
40 */
41#define IEEE802154_MAX_HEADER_LEN (2 + 1 + 20 + 14)
42#define IEEE802154_MIN_HEADER_LEN (IEEE802154_ACK_PSDU_LEN - \
43 IEEE802154_FCS_LEN)
34 44
35#define IEEE802154_PAN_ID_BROADCAST 0xffff 45#define IEEE802154_PAN_ID_BROADCAST 0xffff
36#define IEEE802154_ADDR_SHORT_BROADCAST 0xffff 46#define IEEE802154_ADDR_SHORT_BROADCAST 0xffff
@@ -205,6 +215,41 @@ enum {
205 IEEE802154_SCAN_IN_PROGRESS = 0xfc, 215 IEEE802154_SCAN_IN_PROGRESS = 0xfc,
206}; 216};
207 217
218/* frame control handling */
219#define IEEE802154_FCTL_FTYPE 0x0003
220#define IEEE802154_FCTL_ACKREQ 0x0020
221#define IEEE802154_FCTL_INTRA_PAN 0x0040
222
223#define IEEE802154_FTYPE_DATA 0x0001
224
225/*
226 * ieee802154_is_data - check if type is IEEE802154_FTYPE_DATA
227 * @fc: frame control bytes in little-endian byteorder
228 */
229static inline int ieee802154_is_data(__le16 fc)
230{
231 return (fc & cpu_to_le16(IEEE802154_FCTL_FTYPE)) ==
232 cpu_to_le16(IEEE802154_FTYPE_DATA);
233}
234
235/**
236 * ieee802154_is_ackreq - check if acknowledgment request bit is set
237 * @fc: frame control bytes in little-endian byteorder
238 */
239static inline bool ieee802154_is_ackreq(__le16 fc)
240{
241 return fc & cpu_to_le16(IEEE802154_FCTL_ACKREQ);
242}
243
244/**
245 * ieee802154_is_intra_pan - check if intra pan id communication
246 * @fc: frame control bytes in little-endian byteorder
247 */
248static inline bool ieee802154_is_intra_pan(__le16 fc)
249{
250 return fc & cpu_to_le16(IEEE802154_FCTL_INTRA_PAN);
251}
252
208/** 253/**
209 * ieee802154_is_valid_psdu_len - check if psdu len is valid 254 * ieee802154_is_valid_psdu_len - check if psdu len is valid
210 * available lengths: 255 * available lengths: