13ae75e02SAlexander Aring #ifndef __NL802154_H 23ae75e02SAlexander Aring #define __NL802154_H 33ae75e02SAlexander Aring /* 43ae75e02SAlexander Aring * 802.15.4 netlink interface public header 53ae75e02SAlexander Aring * 63ae75e02SAlexander Aring * Copyright 2014 Alexander Aring <aar@pengutronix.de> 73ae75e02SAlexander Aring * 83ae75e02SAlexander Aring * Permission to use, copy, modify, and/or distribute this software for any 93ae75e02SAlexander Aring * purpose with or without fee is hereby granted, provided that the above 103ae75e02SAlexander Aring * copyright notice and this permission notice appear in all copies. 113ae75e02SAlexander Aring * 123ae75e02SAlexander Aring * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 133ae75e02SAlexander Aring * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 143ae75e02SAlexander Aring * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 153ae75e02SAlexander Aring * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 163ae75e02SAlexander Aring * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 173ae75e02SAlexander Aring * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 183ae75e02SAlexander Aring * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 193ae75e02SAlexander Aring * 203ae75e02SAlexander Aring */ 213ae75e02SAlexander Aring 22451dc48cSAlexander Aring #include <linux/types.h> 23451dc48cSAlexander Aring 243ae75e02SAlexander Aring #define NL802154_GENL_NAME "nl802154" 253ae75e02SAlexander Aring 263ae75e02SAlexander Aring enum nl802154_commands { 273ae75e02SAlexander Aring /* don't change the order or add anything between, this is ABI! */ 283ae75e02SAlexander Aring /* currently we don't shipping this file via uapi, ignore the above one */ 293ae75e02SAlexander Aring NL802154_CMD_UNSPEC, 303ae75e02SAlexander Aring 313ae75e02SAlexander Aring NL802154_CMD_GET_WPAN_PHY, /* can dump */ 323ae75e02SAlexander Aring NL802154_CMD_SET_WPAN_PHY, 333ae75e02SAlexander Aring NL802154_CMD_NEW_WPAN_PHY, 343ae75e02SAlexander Aring NL802154_CMD_DEL_WPAN_PHY, 353ae75e02SAlexander Aring 363ae75e02SAlexander Aring NL802154_CMD_GET_INTERFACE, /* can dump */ 373ae75e02SAlexander Aring NL802154_CMD_SET_INTERFACE, 383ae75e02SAlexander Aring NL802154_CMD_NEW_INTERFACE, 393ae75e02SAlexander Aring NL802154_CMD_DEL_INTERFACE, 403ae75e02SAlexander Aring 413ae75e02SAlexander Aring NL802154_CMD_SET_CHANNEL, 423ae75e02SAlexander Aring 433ae75e02SAlexander Aring NL802154_CMD_SET_PAN_ID, 443ae75e02SAlexander Aring NL802154_CMD_SET_SHORT_ADDR, 453ae75e02SAlexander Aring 463ae75e02SAlexander Aring NL802154_CMD_SET_TX_POWER, 473ae75e02SAlexander Aring NL802154_CMD_SET_CCA_MODE, 483ae75e02SAlexander Aring NL802154_CMD_SET_CCA_ED_LEVEL, 493ae75e02SAlexander Aring 503ae75e02SAlexander Aring NL802154_CMD_SET_MAX_FRAME_RETRIES, 513ae75e02SAlexander Aring 523ae75e02SAlexander Aring NL802154_CMD_SET_BACKOFF_EXPONENT, 533ae75e02SAlexander Aring NL802154_CMD_SET_MAX_CSMA_BACKOFFS, 543ae75e02SAlexander Aring 553ae75e02SAlexander Aring NL802154_CMD_SET_LBT_MODE, 563ae75e02SAlexander Aring 57c91208d8SAlexander Aring NL802154_CMD_SET_ACKREQ_DEFAULT, 58c91208d8SAlexander Aring 5966e5c267SAlexander Aring NL802154_CMD_SET_WPAN_PHY_NETNS, 6066e5c267SAlexander Aring 61a26c5fd7SAlexander Aring NL802154_CMD_SET_SEC_PARAMS, 62a26c5fd7SAlexander Aring NL802154_CMD_GET_SEC_KEY, /* can dump */ 63a26c5fd7SAlexander Aring NL802154_CMD_NEW_SEC_KEY, 64a26c5fd7SAlexander Aring NL802154_CMD_DEL_SEC_KEY, 65a26c5fd7SAlexander Aring NL802154_CMD_GET_SEC_DEV, /* can dump */ 66a26c5fd7SAlexander Aring NL802154_CMD_NEW_SEC_DEV, 67a26c5fd7SAlexander Aring NL802154_CMD_DEL_SEC_DEV, 68a26c5fd7SAlexander Aring NL802154_CMD_GET_SEC_DEVKEY, /* can dump */ 69a26c5fd7SAlexander Aring NL802154_CMD_NEW_SEC_DEVKEY, 70a26c5fd7SAlexander Aring NL802154_CMD_DEL_SEC_DEVKEY, 71a26c5fd7SAlexander Aring NL802154_CMD_GET_SEC_LEVEL, /* can dump */ 72a26c5fd7SAlexander Aring NL802154_CMD_NEW_SEC_LEVEL, 73a26c5fd7SAlexander Aring NL802154_CMD_DEL_SEC_LEVEL, 7482543936SGal Pressman 7551147284SMiquel Raynal NL802154_CMD_SCAN_EVENT, 76ed3557c9SMiquel Raynal NL802154_CMD_TRIGGER_SCAN, 77ed3557c9SMiquel Raynal NL802154_CMD_ABORT_SCAN, 78ed3557c9SMiquel Raynal NL802154_CMD_SCAN_DONE, 799bc11450SMiquel Raynal NL802154_CMD_SEND_BEACONS, 809bc11450SMiquel Raynal NL802154_CMD_STOP_BEACONS, 8105db59a0SMiquel Raynal NL802154_CMD_ASSOCIATE, 827b18313eSMiquel Raynal NL802154_CMD_DISASSOCIATE, 83ce93b937SMiquel Raynal NL802154_CMD_SET_MAX_ASSOCIATIONS, 8483fcf26bSMiquel Raynal NL802154_CMD_LIST_ASSOCIATIONS, 8551147284SMiquel Raynal 8682543936SGal Pressman /* add new commands above here */ 87a26c5fd7SAlexander Aring 883ae75e02SAlexander Aring /* used to define NL802154_CMD_MAX below */ 893ae75e02SAlexander Aring __NL802154_CMD_AFTER_LAST, 903ae75e02SAlexander Aring NL802154_CMD_MAX = __NL802154_CMD_AFTER_LAST - 1 913ae75e02SAlexander Aring }; 923ae75e02SAlexander Aring 933ae75e02SAlexander Aring enum nl802154_attrs { 943ae75e02SAlexander Aring /* don't change the order or add anything between, this is ABI! */ 953ae75e02SAlexander Aring /* currently we don't shipping this file via uapi, ignore the above one */ 963ae75e02SAlexander Aring NL802154_ATTR_UNSPEC, 973ae75e02SAlexander Aring 983ae75e02SAlexander Aring NL802154_ATTR_WPAN_PHY, 993ae75e02SAlexander Aring NL802154_ATTR_WPAN_PHY_NAME, 1003ae75e02SAlexander Aring 1013ae75e02SAlexander Aring NL802154_ATTR_IFINDEX, 1023ae75e02SAlexander Aring NL802154_ATTR_IFNAME, 1033ae75e02SAlexander Aring NL802154_ATTR_IFTYPE, 1043ae75e02SAlexander Aring 1053ae75e02SAlexander Aring NL802154_ATTR_WPAN_DEV, 1063ae75e02SAlexander Aring 1073ae75e02SAlexander Aring NL802154_ATTR_PAGE, 1083ae75e02SAlexander Aring NL802154_ATTR_CHANNEL, 1093ae75e02SAlexander Aring 1103ae75e02SAlexander Aring NL802154_ATTR_PAN_ID, 1113ae75e02SAlexander Aring NL802154_ATTR_SHORT_ADDR, 1123ae75e02SAlexander Aring 1133ae75e02SAlexander Aring NL802154_ATTR_TX_POWER, 1143ae75e02SAlexander Aring 1153ae75e02SAlexander Aring NL802154_ATTR_CCA_MODE, 116ba2a9506SAlexander Aring NL802154_ATTR_CCA_OPT, 1173ae75e02SAlexander Aring NL802154_ATTR_CCA_ED_LEVEL, 1183ae75e02SAlexander Aring 1193ae75e02SAlexander Aring NL802154_ATTR_MAX_FRAME_RETRIES, 1203ae75e02SAlexander Aring 1213ae75e02SAlexander Aring NL802154_ATTR_MAX_BE, 1223ae75e02SAlexander Aring NL802154_ATTR_MIN_BE, 1233ae75e02SAlexander Aring NL802154_ATTR_MAX_CSMA_BACKOFFS, 1243ae75e02SAlexander Aring 1253ae75e02SAlexander Aring NL802154_ATTR_LBT_MODE, 1263ae75e02SAlexander Aring 1273ae75e02SAlexander Aring NL802154_ATTR_GENERATION, 1283ae75e02SAlexander Aring 1293ae75e02SAlexander Aring NL802154_ATTR_CHANNELS_SUPPORTED, 1303ae75e02SAlexander Aring NL802154_ATTR_SUPPORTED_CHANNEL, 1313ae75e02SAlexander Aring 1323ae75e02SAlexander Aring NL802154_ATTR_EXTENDED_ADDR, 1333ae75e02SAlexander Aring 1340e665457SAlexander Aring NL802154_ATTR_WPAN_PHY_CAPS, 1350e665457SAlexander Aring 136133be026SVarka Bhadram NL802154_ATTR_SUPPORTED_COMMANDS, 137133be026SVarka Bhadram 138c91208d8SAlexander Aring NL802154_ATTR_ACKREQ_DEFAULT, 139c91208d8SAlexander Aring 140aece0c3fSAlexander Aring NL802154_ATTR_PAD, 141aece0c3fSAlexander Aring 14266e5c267SAlexander Aring NL802154_ATTR_PID, 14366e5c267SAlexander Aring NL802154_ATTR_NETNS_FD, 14466e5c267SAlexander Aring 14551147284SMiquel Raynal NL802154_ATTR_COORDINATOR, 146ed3557c9SMiquel Raynal NL802154_ATTR_SCAN_TYPE, 147ed3557c9SMiquel Raynal NL802154_ATTR_SCAN_FLAGS, 148ed3557c9SMiquel Raynal NL802154_ATTR_SCAN_CHANNELS, 149ed3557c9SMiquel Raynal NL802154_ATTR_SCAN_PREAMBLE_CODES, 150ed3557c9SMiquel Raynal NL802154_ATTR_SCAN_MEAN_PRF, 151ed3557c9SMiquel Raynal NL802154_ATTR_SCAN_DURATION, 152ed3557c9SMiquel Raynal NL802154_ATTR_SCAN_DONE_REASON, 1539bc11450SMiquel Raynal NL802154_ATTR_BEACON_INTERVAL, 154ce93b937SMiquel Raynal NL802154_ATTR_MAX_ASSOCIATIONS, 15583fcf26bSMiquel Raynal NL802154_ATTR_PEER, 15651147284SMiquel Raynal 1573ae75e02SAlexander Aring /* add attributes here, update the policy in nl802154.c */ 1583ae75e02SAlexander Aring 159a26c5fd7SAlexander Aring #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 160a26c5fd7SAlexander Aring NL802154_ATTR_SEC_ENABLED, 161a26c5fd7SAlexander Aring NL802154_ATTR_SEC_OUT_LEVEL, 162a26c5fd7SAlexander Aring NL802154_ATTR_SEC_OUT_KEY_ID, 163a26c5fd7SAlexander Aring NL802154_ATTR_SEC_FRAME_COUNTER, 164a26c5fd7SAlexander Aring 165a26c5fd7SAlexander Aring NL802154_ATTR_SEC_LEVEL, 166a26c5fd7SAlexander Aring NL802154_ATTR_SEC_DEVICE, 167a26c5fd7SAlexander Aring NL802154_ATTR_SEC_DEVKEY, 168a26c5fd7SAlexander Aring NL802154_ATTR_SEC_KEY, 169a26c5fd7SAlexander Aring #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 170a26c5fd7SAlexander Aring 1713ae75e02SAlexander Aring __NL802154_ATTR_AFTER_LAST, 1723ae75e02SAlexander Aring NL802154_ATTR_MAX = __NL802154_ATTR_AFTER_LAST - 1 1733ae75e02SAlexander Aring }; 1743ae75e02SAlexander Aring 1753ae75e02SAlexander Aring enum nl802154_iftype { 176451dc48cSAlexander Aring NL802154_IFTYPE_UNSPEC = (~(__u32)0), 1773ae75e02SAlexander Aring 178451dc48cSAlexander Aring NL802154_IFTYPE_NODE = 0, 1793ae75e02SAlexander Aring NL802154_IFTYPE_MONITOR, 1803ae75e02SAlexander Aring NL802154_IFTYPE_COORD, 1813ae75e02SAlexander Aring 1823ae75e02SAlexander Aring /* keep last */ 1833ae75e02SAlexander Aring NUM_NL802154_IFTYPES, 1843ae75e02SAlexander Aring NL802154_IFTYPE_MAX = NUM_NL802154_IFTYPES - 1 1853ae75e02SAlexander Aring }; 1863ae75e02SAlexander Aring 187b40d6376SAlexander Aring /** 1880e665457SAlexander Aring * enum nl802154_wpan_phy_capability_attr - wpan phy capability attributes 1890e665457SAlexander Aring * 1900e665457SAlexander Aring * @__NL802154_CAP_ATTR_INVALID: attribute number 0 is reserved 1910e665457SAlexander Aring * @NL802154_CAP_ATTR_CHANNELS: a nested attribute for nl802154_channel_attr 1920e665457SAlexander Aring * @NL802154_CAP_ATTR_TX_POWERS: a nested attribute for 1930e665457SAlexander Aring * nl802154_wpan_phy_tx_power 1940e665457SAlexander Aring * @NL802154_CAP_ATTR_MIN_CCA_ED_LEVEL: minimum value for cca_ed_level 195*3682c302SSimon Horman * @NL802154_CAP_ATTR_MAX_CCA_ED_LEVEL: maximum value for cca_ed_level 1960e665457SAlexander Aring * @NL802154_CAP_ATTR_CCA_MODES: nl802154_cca_modes flags 1970e665457SAlexander Aring * @NL802154_CAP_ATTR_CCA_OPTS: nl802154_cca_opts flags 1980e665457SAlexander Aring * @NL802154_CAP_ATTR_MIN_MINBE: minimum of minbe value 1990e665457SAlexander Aring * @NL802154_CAP_ATTR_MAX_MINBE: maximum of minbe value 2000e665457SAlexander Aring * @NL802154_CAP_ATTR_MIN_MAXBE: minimum of maxbe value 2010e665457SAlexander Aring * @NL802154_CAP_ATTR_MAX_MINBE: maximum of maxbe value 2020e665457SAlexander Aring * @NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS: minimum of csma backoff value 2030e665457SAlexander Aring * @NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS: maximum of csma backoffs value 2040e665457SAlexander Aring * @NL802154_CAP_ATTR_MIN_FRAME_RETRIES: minimum of frame retries value 2050e665457SAlexander Aring * @NL802154_CAP_ATTR_MAX_FRAME_RETRIES: maximum of frame retries value 2060e665457SAlexander Aring * @NL802154_CAP_ATTR_IFTYPES: nl802154_iftype flags 2070e665457SAlexander Aring * @NL802154_CAP_ATTR_LBT: nl802154_supported_bool_states flags 2080e665457SAlexander Aring * @NL802154_CAP_ATTR_MAX: highest cap attribute currently defined 2090e665457SAlexander Aring * @__NL802154_CAP_ATTR_AFTER_LAST: internal use 2100e665457SAlexander Aring */ 2110e665457SAlexander Aring enum nl802154_wpan_phy_capability_attr { 2120e665457SAlexander Aring __NL802154_CAP_ATTR_INVALID, 2130e665457SAlexander Aring 2140e665457SAlexander Aring NL802154_CAP_ATTR_IFTYPES, 2150e665457SAlexander Aring 2160e665457SAlexander Aring NL802154_CAP_ATTR_CHANNELS, 2170e665457SAlexander Aring NL802154_CAP_ATTR_TX_POWERS, 2180e665457SAlexander Aring 2190e665457SAlexander Aring NL802154_CAP_ATTR_CCA_ED_LEVELS, 2200e665457SAlexander Aring NL802154_CAP_ATTR_CCA_MODES, 2210e665457SAlexander Aring NL802154_CAP_ATTR_CCA_OPTS, 2220e665457SAlexander Aring 2230e665457SAlexander Aring NL802154_CAP_ATTR_MIN_MINBE, 2240e665457SAlexander Aring NL802154_CAP_ATTR_MAX_MINBE, 2250e665457SAlexander Aring 2260e665457SAlexander Aring NL802154_CAP_ATTR_MIN_MAXBE, 2270e665457SAlexander Aring NL802154_CAP_ATTR_MAX_MAXBE, 2280e665457SAlexander Aring 2290e665457SAlexander Aring NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS, 2300e665457SAlexander Aring NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS, 2310e665457SAlexander Aring 2320e665457SAlexander Aring NL802154_CAP_ATTR_MIN_FRAME_RETRIES, 2330e665457SAlexander Aring NL802154_CAP_ATTR_MAX_FRAME_RETRIES, 2340e665457SAlexander Aring 2350e665457SAlexander Aring NL802154_CAP_ATTR_LBT, 2360e665457SAlexander Aring 2370e665457SAlexander Aring /* keep last */ 2380e665457SAlexander Aring __NL802154_CAP_ATTR_AFTER_LAST, 2390e665457SAlexander Aring NL802154_CAP_ATTR_MAX = __NL802154_CAP_ATTR_AFTER_LAST - 1 2400e665457SAlexander Aring }; 2410e665457SAlexander Aring 2420e665457SAlexander Aring /** 24351147284SMiquel Raynal * enum nl802154_coord - Netlink attributes for a coord 24451147284SMiquel Raynal * 24551147284SMiquel Raynal * @__NL802154_COORD_INVALID: invalid 24651147284SMiquel Raynal * @NL802154_COORD_PANID: PANID of the coordinator (2 bytes) 24751147284SMiquel Raynal * @NL802154_COORD_ADDR: coordinator address, (8 bytes or 2 bytes) 24851147284SMiquel Raynal * @NL802154_COORD_CHANNEL: channel number, related to @NL802154_COORD_PAGE (u8) 24951147284SMiquel Raynal * @NL802154_COORD_PAGE: channel page, related to @NL802154_COORD_CHANNEL (u8) 25051147284SMiquel Raynal * @NL802154_COORD_PREAMBLE_CODE: Preamble code used when the beacon was received, 25151147284SMiquel Raynal * this is PHY dependent and optional (u8) 25251147284SMiquel Raynal * @NL802154_COORD_MEAN_PRF: Mean PRF used when the beacon was received, 25351147284SMiquel Raynal * this is PHY dependent and optional (u8) 25451147284SMiquel Raynal * @NL802154_COORD_SUPERFRAME_SPEC: superframe specification of the PAN (u16) 25551147284SMiquel Raynal * @NL802154_COORD_LINK_QUALITY: signal quality of beacon in unspecified units, 25651147284SMiquel Raynal * scaled to 0..255 (u8) 25751147284SMiquel Raynal * @NL802154_COORD_GTS_PERMIT: set to true if GTS is permitted on this PAN 25851147284SMiquel Raynal * @NL802154_COORD_PAYLOAD_DATA: binary data containing the raw data from the 25951147284SMiquel Raynal * frame payload, (only if beacon or probe response had data) 26051147284SMiquel Raynal * @NL802154_COORD_PAD: attribute used for padding for 64-bit alignment 26151147284SMiquel Raynal * @NL802154_COORD_MAX: highest coordinator attribute 26251147284SMiquel Raynal */ 26351147284SMiquel Raynal enum nl802154_coord { 26451147284SMiquel Raynal __NL802154_COORD_INVALID, 26551147284SMiquel Raynal NL802154_COORD_PANID, 26651147284SMiquel Raynal NL802154_COORD_ADDR, 26751147284SMiquel Raynal NL802154_COORD_CHANNEL, 26851147284SMiquel Raynal NL802154_COORD_PAGE, 26951147284SMiquel Raynal NL802154_COORD_PREAMBLE_CODE, 27051147284SMiquel Raynal NL802154_COORD_MEAN_PRF, 27151147284SMiquel Raynal NL802154_COORD_SUPERFRAME_SPEC, 27251147284SMiquel Raynal NL802154_COORD_LINK_QUALITY, 27351147284SMiquel Raynal NL802154_COORD_GTS_PERMIT, 27451147284SMiquel Raynal NL802154_COORD_PAYLOAD_DATA, 27551147284SMiquel Raynal NL802154_COORD_PAD, 27651147284SMiquel Raynal 27751147284SMiquel Raynal /* keep last */ 27851147284SMiquel Raynal NL802154_COORD_MAX, 27951147284SMiquel Raynal }; 28051147284SMiquel Raynal 28151147284SMiquel Raynal /** 282ed3557c9SMiquel Raynal * enum nl802154_scan_types - Scan types 283ed3557c9SMiquel Raynal * 284ed3557c9SMiquel Raynal * @__NL802154_SCAN_INVALID: scan type number 0 is reserved 285ed3557c9SMiquel Raynal * @NL802154_SCAN_ED: An ED scan allows a device to obtain a measure of the peak 286ed3557c9SMiquel Raynal * energy in each requested channel 287ed3557c9SMiquel Raynal * @NL802154_SCAN_ACTIVE: Locate any coordinator transmitting Beacon frames using 288ed3557c9SMiquel Raynal * a Beacon Request command 289ed3557c9SMiquel Raynal * @NL802154_SCAN_PASSIVE: Locate any coordinator transmitting Beacon frames 290ed3557c9SMiquel Raynal * @NL802154_SCAN_ORPHAN: Relocate coordinator following a loss of synchronisation 291ed3557c9SMiquel Raynal * @NL802154_SCAN_ENHANCED_ACTIVE: Same as Active using Enhanced Beacon Request 292ed3557c9SMiquel Raynal * command instead of Beacon Request command 293ed3557c9SMiquel Raynal * @NL802154_SCAN_RIT_PASSIVE: Passive scan for RIT Data Request command frames 294ed3557c9SMiquel Raynal * instead of Beacon frames 295ed3557c9SMiquel Raynal * @NL802154_SCAN_ATTR_MAX: Maximum SCAN attribute number 296ed3557c9SMiquel Raynal */ 297ed3557c9SMiquel Raynal enum nl802154_scan_types { 298ed3557c9SMiquel Raynal __NL802154_SCAN_INVALID, 299ed3557c9SMiquel Raynal NL802154_SCAN_ED, 300ed3557c9SMiquel Raynal NL802154_SCAN_ACTIVE, 301ed3557c9SMiquel Raynal NL802154_SCAN_PASSIVE, 302ed3557c9SMiquel Raynal NL802154_SCAN_ORPHAN, 303ed3557c9SMiquel Raynal NL802154_SCAN_ENHANCED_ACTIVE, 304ed3557c9SMiquel Raynal NL802154_SCAN_RIT_PASSIVE, 305ed3557c9SMiquel Raynal 306ed3557c9SMiquel Raynal /* keep last */ 307ed3557c9SMiquel Raynal NL802154_SCAN_ATTR_MAX, 308ed3557c9SMiquel Raynal }; 309ed3557c9SMiquel Raynal 310ed3557c9SMiquel Raynal /** 311ed3557c9SMiquel Raynal * enum nl802154_scan_done_reasons - End of scan reasons 312ed3557c9SMiquel Raynal * 313ed3557c9SMiquel Raynal * @__NL802154_SCAN_DONE_REASON_INVALID: scan done reason number 0 is reserved. 314ed3557c9SMiquel Raynal * @NL802154_SCAN_DONE_REASON_FINISHED: The scan just finished naturally after 315ed3557c9SMiquel Raynal * going through all the requested and possible (complex) channels. 316ed3557c9SMiquel Raynal * @NL802154_SCAN_DONE_REASON_ABORTED: The scan was aborted upon user request. 317ed3557c9SMiquel Raynal * a Beacon Request command 318ed3557c9SMiquel Raynal * @NL802154_SCAN_DONE_REASON_MAX: Maximum scan done reason attribute number. 319ed3557c9SMiquel Raynal */ 320ed3557c9SMiquel Raynal enum nl802154_scan_done_reasons { 321ed3557c9SMiquel Raynal __NL802154_SCAN_DONE_REASON_INVALID, 322ed3557c9SMiquel Raynal NL802154_SCAN_DONE_REASON_FINISHED, 323ed3557c9SMiquel Raynal NL802154_SCAN_DONE_REASON_ABORTED, 324ed3557c9SMiquel Raynal 325ed3557c9SMiquel Raynal /* keep last */ 326ed3557c9SMiquel Raynal NL802154_SCAN_DONE_REASON_MAX, 327ed3557c9SMiquel Raynal }; 328ed3557c9SMiquel Raynal 329ed3557c9SMiquel Raynal /** 330b40d6376SAlexander Aring * enum nl802154_cca_modes - cca modes 331b40d6376SAlexander Aring * 332b40d6376SAlexander Aring * @__NL802154_CCA_INVALID: cca mode number 0 is reserved 333b40d6376SAlexander Aring * @NL802154_CCA_ENERGY: Energy above threshold 334b40d6376SAlexander Aring * @NL802154_CCA_CARRIER: Carrier sense only 335b40d6376SAlexander Aring * @NL802154_CCA_ENERGY_CARRIER: Carrier sense with energy above threshold 336b40d6376SAlexander Aring * @NL802154_CCA_ALOHA: CCA shall always report an idle medium 337b40d6376SAlexander Aring * @NL802154_CCA_UWB_SHR: UWB preamble sense based on the SHR of a frame 338d446278cSChristoffer Holmstedt * @NL802154_CCA_UWB_MULTIPLEXED: UWB preamble sense based on the packet with 339b40d6376SAlexander Aring * the multiplexed preamble 340b40d6376SAlexander Aring * @__NL802154_CCA_ATTR_AFTER_LAST: Internal 341b40d6376SAlexander Aring * @NL802154_CCA_ATTR_MAX: Maximum CCA attribute number 342b40d6376SAlexander Aring */ 343b40d6376SAlexander Aring enum nl802154_cca_modes { 344b40d6376SAlexander Aring __NL802154_CCA_INVALID, 345b40d6376SAlexander Aring NL802154_CCA_ENERGY, 346b40d6376SAlexander Aring NL802154_CCA_CARRIER, 347b40d6376SAlexander Aring NL802154_CCA_ENERGY_CARRIER, 348b40d6376SAlexander Aring NL802154_CCA_ALOHA, 349b40d6376SAlexander Aring NL802154_CCA_UWB_SHR, 350d446278cSChristoffer Holmstedt NL802154_CCA_UWB_MULTIPLEXED, 351b40d6376SAlexander Aring 352b40d6376SAlexander Aring /* keep last */ 353b40d6376SAlexander Aring __NL802154_CCA_ATTR_AFTER_LAST, 354b40d6376SAlexander Aring NL802154_CCA_ATTR_MAX = __NL802154_CCA_ATTR_AFTER_LAST - 1 355b40d6376SAlexander Aring }; 356b40d6376SAlexander Aring 357b40d6376SAlexander Aring /** 358b40d6376SAlexander Aring * enum nl802154_cca_opts - additional options for cca modes 359b40d6376SAlexander Aring * 360b40d6376SAlexander Aring * @NL802154_CCA_OPT_ENERGY_CARRIER_OR: NL802154_CCA_ENERGY_CARRIER with OR 361b40d6376SAlexander Aring * @NL802154_CCA_OPT_ENERGY_CARRIER_AND: NL802154_CCA_ENERGY_CARRIER with AND 362b40d6376SAlexander Aring */ 363b40d6376SAlexander Aring enum nl802154_cca_opts { 364b40d6376SAlexander Aring NL802154_CCA_OPT_ENERGY_CARRIER_AND, 365b40d6376SAlexander Aring NL802154_CCA_OPT_ENERGY_CARRIER_OR, 366b40d6376SAlexander Aring 367b40d6376SAlexander Aring /* keep last */ 368b40d6376SAlexander Aring __NL802154_CCA_OPT_ATTR_AFTER_LAST, 369b40d6376SAlexander Aring NL802154_CCA_OPT_ATTR_MAX = __NL802154_CCA_OPT_ATTR_AFTER_LAST - 1 370b40d6376SAlexander Aring }; 371b40d6376SAlexander Aring 372fea3318dSAlexander Aring /** 373fea3318dSAlexander Aring * enum nl802154_supported_bool_states - bool states for bool capability entry 374fea3318dSAlexander Aring * 375fea3318dSAlexander Aring * @NL802154_SUPPORTED_BOOL_FALSE: indicates to set false 376fea3318dSAlexander Aring * @NL802154_SUPPORTED_BOOL_TRUE: indicates to set true 377fea3318dSAlexander Aring * @__NL802154_SUPPORTED_BOOL_INVALD: reserved 378fea3318dSAlexander Aring * @NL802154_SUPPORTED_BOOL_BOTH: indicates to set true and false 379fea3318dSAlexander Aring * @__NL802154_SUPPORTED_BOOL_AFTER_LAST: Internal 380fea3318dSAlexander Aring * @NL802154_SUPPORTED_BOOL_MAX: highest value for bool states 381fea3318dSAlexander Aring */ 382fea3318dSAlexander Aring enum nl802154_supported_bool_states { 383fea3318dSAlexander Aring NL802154_SUPPORTED_BOOL_FALSE, 384fea3318dSAlexander Aring NL802154_SUPPORTED_BOOL_TRUE, 385fea3318dSAlexander Aring /* to handle them in a mask */ 386fea3318dSAlexander Aring __NL802154_SUPPORTED_BOOL_INVALD, 387fea3318dSAlexander Aring NL802154_SUPPORTED_BOOL_BOTH, 388fea3318dSAlexander Aring 389fea3318dSAlexander Aring /* keep last */ 390fea3318dSAlexander Aring __NL802154_SUPPORTED_BOOL_AFTER_LAST, 391fea3318dSAlexander Aring NL802154_SUPPORTED_BOOL_MAX = __NL802154_SUPPORTED_BOOL_AFTER_LAST - 1 392fea3318dSAlexander Aring }; 393fea3318dSAlexander Aring 394a26c5fd7SAlexander Aring enum nl802154_dev_addr_modes { 395a26c5fd7SAlexander Aring NL802154_DEV_ADDR_NONE, 396a26c5fd7SAlexander Aring __NL802154_DEV_ADDR_INVALID, 397a26c5fd7SAlexander Aring NL802154_DEV_ADDR_SHORT, 398a26c5fd7SAlexander Aring NL802154_DEV_ADDR_EXTENDED, 399a26c5fd7SAlexander Aring 400a26c5fd7SAlexander Aring /* keep last */ 401a26c5fd7SAlexander Aring __NL802154_DEV_ADDR_AFTER_LAST, 402a26c5fd7SAlexander Aring NL802154_DEV_ADDR_MAX = __NL802154_DEV_ADDR_AFTER_LAST - 1 403a26c5fd7SAlexander Aring }; 404a26c5fd7SAlexander Aring 405a26c5fd7SAlexander Aring enum nl802154_dev_addr_attrs { 406a26c5fd7SAlexander Aring NL802154_DEV_ADDR_ATTR_UNSPEC, 407a26c5fd7SAlexander Aring 408a26c5fd7SAlexander Aring NL802154_DEV_ADDR_ATTR_PAN_ID, 409a26c5fd7SAlexander Aring NL802154_DEV_ADDR_ATTR_MODE, 410a26c5fd7SAlexander Aring NL802154_DEV_ADDR_ATTR_SHORT, 411a26c5fd7SAlexander Aring NL802154_DEV_ADDR_ATTR_EXTENDED, 412e7479122SNicolas Dichtel NL802154_DEV_ADDR_ATTR_PAD, 41383fcf26bSMiquel Raynal NL802154_DEV_ADDR_ATTR_PEER_TYPE, 414a26c5fd7SAlexander Aring 415a26c5fd7SAlexander Aring /* keep last */ 416a26c5fd7SAlexander Aring __NL802154_DEV_ADDR_ATTR_AFTER_LAST, 417a26c5fd7SAlexander Aring NL802154_DEV_ADDR_ATTR_MAX = __NL802154_DEV_ADDR_ATTR_AFTER_LAST - 1 418a26c5fd7SAlexander Aring }; 419a26c5fd7SAlexander Aring 42083fcf26bSMiquel Raynal enum nl802154_peer_type { 42183fcf26bSMiquel Raynal NL802154_PEER_TYPE_UNSPEC, 42283fcf26bSMiquel Raynal 42383fcf26bSMiquel Raynal NL802154_PEER_TYPE_PARENT, 42483fcf26bSMiquel Raynal NL802154_PEER_TYPE_CHILD, 42583fcf26bSMiquel Raynal 42683fcf26bSMiquel Raynal /* keep last */ 42783fcf26bSMiquel Raynal __NL802154_PEER_TYPE_AFTER_LAST, 42883fcf26bSMiquel Raynal NL802154_PEER_TYPE_MAX = __NL802154_PEER_TYPE_AFTER_LAST - 1 42983fcf26bSMiquel Raynal }; 43083fcf26bSMiquel Raynal 43183fcf26bSMiquel Raynal #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 43283fcf26bSMiquel Raynal 433a26c5fd7SAlexander Aring enum nl802154_key_id_modes { 434a26c5fd7SAlexander Aring NL802154_KEY_ID_MODE_IMPLICIT, 435a26c5fd7SAlexander Aring NL802154_KEY_ID_MODE_INDEX, 436a26c5fd7SAlexander Aring NL802154_KEY_ID_MODE_INDEX_SHORT, 437a26c5fd7SAlexander Aring NL802154_KEY_ID_MODE_INDEX_EXTENDED, 438a26c5fd7SAlexander Aring 439a26c5fd7SAlexander Aring /* keep last */ 440a26c5fd7SAlexander Aring __NL802154_KEY_ID_MODE_AFTER_LAST, 441a26c5fd7SAlexander Aring NL802154_KEY_ID_MODE_MAX = __NL802154_KEY_ID_MODE_AFTER_LAST - 1 442a26c5fd7SAlexander Aring }; 443a26c5fd7SAlexander Aring 444a26c5fd7SAlexander Aring enum nl802154_key_id_attrs { 445a26c5fd7SAlexander Aring NL802154_KEY_ID_ATTR_UNSPEC, 446a26c5fd7SAlexander Aring 447a26c5fd7SAlexander Aring NL802154_KEY_ID_ATTR_MODE, 448a26c5fd7SAlexander Aring NL802154_KEY_ID_ATTR_INDEX, 449a26c5fd7SAlexander Aring NL802154_KEY_ID_ATTR_IMPLICIT, 450a26c5fd7SAlexander Aring NL802154_KEY_ID_ATTR_SOURCE_SHORT, 451a26c5fd7SAlexander Aring NL802154_KEY_ID_ATTR_SOURCE_EXTENDED, 452e7479122SNicolas Dichtel NL802154_KEY_ID_ATTR_PAD, 453a26c5fd7SAlexander Aring 454a26c5fd7SAlexander Aring /* keep last */ 455a26c5fd7SAlexander Aring __NL802154_KEY_ID_ATTR_AFTER_LAST, 456a26c5fd7SAlexander Aring NL802154_KEY_ID_ATTR_MAX = __NL802154_KEY_ID_ATTR_AFTER_LAST - 1 457a26c5fd7SAlexander Aring }; 458a26c5fd7SAlexander Aring 459a26c5fd7SAlexander Aring enum nl802154_seclevels { 460a26c5fd7SAlexander Aring NL802154_SECLEVEL_NONE, 461a26c5fd7SAlexander Aring NL802154_SECLEVEL_MIC32, 462a26c5fd7SAlexander Aring NL802154_SECLEVEL_MIC64, 463a26c5fd7SAlexander Aring NL802154_SECLEVEL_MIC128, 464a26c5fd7SAlexander Aring NL802154_SECLEVEL_ENC, 465a26c5fd7SAlexander Aring NL802154_SECLEVEL_ENC_MIC32, 466a26c5fd7SAlexander Aring NL802154_SECLEVEL_ENC_MIC64, 467a26c5fd7SAlexander Aring NL802154_SECLEVEL_ENC_MIC128, 468a26c5fd7SAlexander Aring 469a26c5fd7SAlexander Aring /* keep last */ 470a26c5fd7SAlexander Aring __NL802154_SECLEVEL_AFTER_LAST, 471a26c5fd7SAlexander Aring NL802154_SECLEVEL_MAX = __NL802154_SECLEVEL_AFTER_LAST - 1 472a26c5fd7SAlexander Aring }; 473a26c5fd7SAlexander Aring 474a26c5fd7SAlexander Aring enum nl802154_frames { 475a26c5fd7SAlexander Aring NL802154_FRAME_BEACON, 476a26c5fd7SAlexander Aring NL802154_FRAME_DATA, 477a26c5fd7SAlexander Aring NL802154_FRAME_ACK, 478a26c5fd7SAlexander Aring NL802154_FRAME_CMD, 479a26c5fd7SAlexander Aring 480a26c5fd7SAlexander Aring /* keep last */ 481a26c5fd7SAlexander Aring __NL802154_FRAME_AFTER_LAST, 482a26c5fd7SAlexander Aring NL802154_FRAME_MAX = __NL802154_FRAME_AFTER_LAST - 1 483a26c5fd7SAlexander Aring }; 484a26c5fd7SAlexander Aring 485a26c5fd7SAlexander Aring enum nl802154_cmd_frames { 486a26c5fd7SAlexander Aring __NL802154_CMD_FRAME_INVALID, 487a26c5fd7SAlexander Aring NL802154_CMD_FRAME_ASSOC_REQUEST, 488a26c5fd7SAlexander Aring NL802154_CMD_FRAME_ASSOC_RESPONSE, 489a26c5fd7SAlexander Aring NL802154_CMD_FRAME_DISASSOC_NOTIFY, 490a26c5fd7SAlexander Aring NL802154_CMD_FRAME_DATA_REQUEST, 491a26c5fd7SAlexander Aring NL802154_CMD_FRAME_PAN_ID_CONFLICT_NOTIFY, 492a26c5fd7SAlexander Aring NL802154_CMD_FRAME_ORPHAN_NOTIFY, 493a26c5fd7SAlexander Aring NL802154_CMD_FRAME_BEACON_REQUEST, 494a26c5fd7SAlexander Aring NL802154_CMD_FRAME_COORD_REALIGNMENT, 495a26c5fd7SAlexander Aring NL802154_CMD_FRAME_GTS_REQUEST, 496a26c5fd7SAlexander Aring 497a26c5fd7SAlexander Aring /* keep last */ 498a26c5fd7SAlexander Aring __NL802154_CMD_FRAME_AFTER_LAST, 499a26c5fd7SAlexander Aring NL802154_CMD_FRAME_MAX = __NL802154_CMD_FRAME_AFTER_LAST - 1 500a26c5fd7SAlexander Aring }; 501a26c5fd7SAlexander Aring 502a26c5fd7SAlexander Aring enum nl802154_seclevel_attrs { 503a26c5fd7SAlexander Aring NL802154_SECLEVEL_ATTR_UNSPEC, 504a26c5fd7SAlexander Aring 505a26c5fd7SAlexander Aring NL802154_SECLEVEL_ATTR_LEVELS, 506a26c5fd7SAlexander Aring NL802154_SECLEVEL_ATTR_FRAME, 507a26c5fd7SAlexander Aring NL802154_SECLEVEL_ATTR_CMD_FRAME, 508a26c5fd7SAlexander Aring NL802154_SECLEVEL_ATTR_DEV_OVERRIDE, 509a26c5fd7SAlexander Aring 510a26c5fd7SAlexander Aring /* keep last */ 511a26c5fd7SAlexander Aring __NL802154_SECLEVEL_ATTR_AFTER_LAST, 512a26c5fd7SAlexander Aring NL802154_SECLEVEL_ATTR_MAX = __NL802154_SECLEVEL_ATTR_AFTER_LAST - 1 513a26c5fd7SAlexander Aring }; 514a26c5fd7SAlexander Aring 515a26c5fd7SAlexander Aring /* TODO what is this? couldn't find in mib */ 516a26c5fd7SAlexander Aring enum { 517a26c5fd7SAlexander Aring NL802154_DEVKEY_IGNORE, 518a26c5fd7SAlexander Aring NL802154_DEVKEY_RESTRICT, 519a26c5fd7SAlexander Aring NL802154_DEVKEY_RECORD, 520a26c5fd7SAlexander Aring 521a26c5fd7SAlexander Aring /* keep last */ 522a26c5fd7SAlexander Aring __NL802154_DEVKEY_AFTER_LAST, 523a26c5fd7SAlexander Aring NL802154_DEVKEY_MAX = __NL802154_DEVKEY_AFTER_LAST - 1 524a26c5fd7SAlexander Aring }; 525a26c5fd7SAlexander Aring 526a26c5fd7SAlexander Aring enum nl802154_dev { 527a26c5fd7SAlexander Aring NL802154_DEV_ATTR_UNSPEC, 528a26c5fd7SAlexander Aring 529a26c5fd7SAlexander Aring NL802154_DEV_ATTR_FRAME_COUNTER, 530a26c5fd7SAlexander Aring NL802154_DEV_ATTR_PAN_ID, 531a26c5fd7SAlexander Aring NL802154_DEV_ATTR_SHORT_ADDR, 532a26c5fd7SAlexander Aring NL802154_DEV_ATTR_EXTENDED_ADDR, 533a26c5fd7SAlexander Aring NL802154_DEV_ATTR_SECLEVEL_EXEMPT, 534a26c5fd7SAlexander Aring NL802154_DEV_ATTR_KEY_MODE, 535e7479122SNicolas Dichtel NL802154_DEV_ATTR_PAD, 536a26c5fd7SAlexander Aring 537a26c5fd7SAlexander Aring /* keep last */ 538a26c5fd7SAlexander Aring __NL802154_DEV_ATTR_AFTER_LAST, 539a26c5fd7SAlexander Aring NL802154_DEV_ATTR_MAX = __NL802154_DEV_ATTR_AFTER_LAST - 1 540a26c5fd7SAlexander Aring }; 541a26c5fd7SAlexander Aring 542a26c5fd7SAlexander Aring enum nl802154_devkey { 543a26c5fd7SAlexander Aring NL802154_DEVKEY_ATTR_UNSPEC, 544a26c5fd7SAlexander Aring 545a26c5fd7SAlexander Aring NL802154_DEVKEY_ATTR_FRAME_COUNTER, 546a26c5fd7SAlexander Aring NL802154_DEVKEY_ATTR_EXTENDED_ADDR, 547a26c5fd7SAlexander Aring NL802154_DEVKEY_ATTR_ID, 548e7479122SNicolas Dichtel NL802154_DEVKEY_ATTR_PAD, 549a26c5fd7SAlexander Aring 550a26c5fd7SAlexander Aring /* keep last */ 551a26c5fd7SAlexander Aring __NL802154_DEVKEY_ATTR_AFTER_LAST, 552a26c5fd7SAlexander Aring NL802154_DEVKEY_ATTR_MAX = __NL802154_DEVKEY_ATTR_AFTER_LAST - 1 553a26c5fd7SAlexander Aring }; 554a26c5fd7SAlexander Aring 555a26c5fd7SAlexander Aring enum nl802154_key { 556a26c5fd7SAlexander Aring NL802154_KEY_ATTR_UNSPEC, 557a26c5fd7SAlexander Aring 558a26c5fd7SAlexander Aring NL802154_KEY_ATTR_ID, 559a26c5fd7SAlexander Aring NL802154_KEY_ATTR_USAGE_FRAMES, 560a26c5fd7SAlexander Aring NL802154_KEY_ATTR_USAGE_CMDS, 561a26c5fd7SAlexander Aring NL802154_KEY_ATTR_BYTES, 562a26c5fd7SAlexander Aring 563a26c5fd7SAlexander Aring /* keep last */ 564a26c5fd7SAlexander Aring __NL802154_KEY_ATTR_AFTER_LAST, 565a26c5fd7SAlexander Aring NL802154_KEY_ATTR_MAX = __NL802154_KEY_ATTR_AFTER_LAST - 1 566a26c5fd7SAlexander Aring }; 567a26c5fd7SAlexander Aring 568a26c5fd7SAlexander Aring #define NL802154_KEY_SIZE 16 569a26c5fd7SAlexander Aring #define NL802154_CMD_FRAME_NR_IDS 256 570a26c5fd7SAlexander Aring 571a26c5fd7SAlexander Aring #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 572a26c5fd7SAlexander Aring 5733ae75e02SAlexander Aring #endif /* __NL802154_H */ 574