1*4882a593Smuzhiyun #ifndef __NL802154_H 2*4882a593Smuzhiyun #define __NL802154_H 3*4882a593Smuzhiyun /* 4*4882a593Smuzhiyun * 802.15.4 netlink interface public header 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright 2014 Alexander Aring <aar@pengutronix.de> 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Permission to use, copy, modify, and/or distribute this software for any 9*4882a593Smuzhiyun * purpose with or without fee is hereby granted, provided that the above 10*4882a593Smuzhiyun * copyright notice and this permission notice appear in all copies. 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 13*4882a593Smuzhiyun * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 14*4882a593Smuzhiyun * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 15*4882a593Smuzhiyun * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 16*4882a593Smuzhiyun * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17*4882a593Smuzhiyun * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18*4882a593Smuzhiyun * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun */ 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #include <linux/types.h> 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #define NL802154_GENL_NAME "nl802154" 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun enum nl802154_commands { 27*4882a593Smuzhiyun /* don't change the order or add anything between, this is ABI! */ 28*4882a593Smuzhiyun /* currently we don't shipping this file via uapi, ignore the above one */ 29*4882a593Smuzhiyun NL802154_CMD_UNSPEC, 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun NL802154_CMD_GET_WPAN_PHY, /* can dump */ 32*4882a593Smuzhiyun NL802154_CMD_SET_WPAN_PHY, 33*4882a593Smuzhiyun NL802154_CMD_NEW_WPAN_PHY, 34*4882a593Smuzhiyun NL802154_CMD_DEL_WPAN_PHY, 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun NL802154_CMD_GET_INTERFACE, /* can dump */ 37*4882a593Smuzhiyun NL802154_CMD_SET_INTERFACE, 38*4882a593Smuzhiyun NL802154_CMD_NEW_INTERFACE, 39*4882a593Smuzhiyun NL802154_CMD_DEL_INTERFACE, 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun NL802154_CMD_SET_CHANNEL, 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun NL802154_CMD_SET_PAN_ID, 44*4882a593Smuzhiyun NL802154_CMD_SET_SHORT_ADDR, 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun NL802154_CMD_SET_TX_POWER, 47*4882a593Smuzhiyun NL802154_CMD_SET_CCA_MODE, 48*4882a593Smuzhiyun NL802154_CMD_SET_CCA_ED_LEVEL, 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun NL802154_CMD_SET_MAX_FRAME_RETRIES, 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun NL802154_CMD_SET_BACKOFF_EXPONENT, 53*4882a593Smuzhiyun NL802154_CMD_SET_MAX_CSMA_BACKOFFS, 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun NL802154_CMD_SET_LBT_MODE, 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun NL802154_CMD_SET_ACKREQ_DEFAULT, 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun NL802154_CMD_SET_WPAN_PHY_NETNS, 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* add new commands above here */ 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 64*4882a593Smuzhiyun NL802154_CMD_SET_SEC_PARAMS, 65*4882a593Smuzhiyun NL802154_CMD_GET_SEC_KEY, /* can dump */ 66*4882a593Smuzhiyun NL802154_CMD_NEW_SEC_KEY, 67*4882a593Smuzhiyun NL802154_CMD_DEL_SEC_KEY, 68*4882a593Smuzhiyun NL802154_CMD_GET_SEC_DEV, /* can dump */ 69*4882a593Smuzhiyun NL802154_CMD_NEW_SEC_DEV, 70*4882a593Smuzhiyun NL802154_CMD_DEL_SEC_DEV, 71*4882a593Smuzhiyun NL802154_CMD_GET_SEC_DEVKEY, /* can dump */ 72*4882a593Smuzhiyun NL802154_CMD_NEW_SEC_DEVKEY, 73*4882a593Smuzhiyun NL802154_CMD_DEL_SEC_DEVKEY, 74*4882a593Smuzhiyun NL802154_CMD_GET_SEC_LEVEL, /* can dump */ 75*4882a593Smuzhiyun NL802154_CMD_NEW_SEC_LEVEL, 76*4882a593Smuzhiyun NL802154_CMD_DEL_SEC_LEVEL, 77*4882a593Smuzhiyun #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun /* used to define NL802154_CMD_MAX below */ 80*4882a593Smuzhiyun __NL802154_CMD_AFTER_LAST, 81*4882a593Smuzhiyun NL802154_CMD_MAX = __NL802154_CMD_AFTER_LAST - 1 82*4882a593Smuzhiyun }; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun enum nl802154_attrs { 85*4882a593Smuzhiyun /* don't change the order or add anything between, this is ABI! */ 86*4882a593Smuzhiyun /* currently we don't shipping this file via uapi, ignore the above one */ 87*4882a593Smuzhiyun NL802154_ATTR_UNSPEC, 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun NL802154_ATTR_WPAN_PHY, 90*4882a593Smuzhiyun NL802154_ATTR_WPAN_PHY_NAME, 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun NL802154_ATTR_IFINDEX, 93*4882a593Smuzhiyun NL802154_ATTR_IFNAME, 94*4882a593Smuzhiyun NL802154_ATTR_IFTYPE, 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun NL802154_ATTR_WPAN_DEV, 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun NL802154_ATTR_PAGE, 99*4882a593Smuzhiyun NL802154_ATTR_CHANNEL, 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun NL802154_ATTR_PAN_ID, 102*4882a593Smuzhiyun NL802154_ATTR_SHORT_ADDR, 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun NL802154_ATTR_TX_POWER, 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun NL802154_ATTR_CCA_MODE, 107*4882a593Smuzhiyun NL802154_ATTR_CCA_OPT, 108*4882a593Smuzhiyun NL802154_ATTR_CCA_ED_LEVEL, 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun NL802154_ATTR_MAX_FRAME_RETRIES, 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun NL802154_ATTR_MAX_BE, 113*4882a593Smuzhiyun NL802154_ATTR_MIN_BE, 114*4882a593Smuzhiyun NL802154_ATTR_MAX_CSMA_BACKOFFS, 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun NL802154_ATTR_LBT_MODE, 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun NL802154_ATTR_GENERATION, 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun NL802154_ATTR_CHANNELS_SUPPORTED, 121*4882a593Smuzhiyun NL802154_ATTR_SUPPORTED_CHANNEL, 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun NL802154_ATTR_EXTENDED_ADDR, 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun NL802154_ATTR_WPAN_PHY_CAPS, 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun NL802154_ATTR_SUPPORTED_COMMANDS, 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun NL802154_ATTR_ACKREQ_DEFAULT, 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun NL802154_ATTR_PAD, 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun NL802154_ATTR_PID, 134*4882a593Smuzhiyun NL802154_ATTR_NETNS_FD, 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun /* add attributes here, update the policy in nl802154.c */ 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 139*4882a593Smuzhiyun NL802154_ATTR_SEC_ENABLED, 140*4882a593Smuzhiyun NL802154_ATTR_SEC_OUT_LEVEL, 141*4882a593Smuzhiyun NL802154_ATTR_SEC_OUT_KEY_ID, 142*4882a593Smuzhiyun NL802154_ATTR_SEC_FRAME_COUNTER, 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun NL802154_ATTR_SEC_LEVEL, 145*4882a593Smuzhiyun NL802154_ATTR_SEC_DEVICE, 146*4882a593Smuzhiyun NL802154_ATTR_SEC_DEVKEY, 147*4882a593Smuzhiyun NL802154_ATTR_SEC_KEY, 148*4882a593Smuzhiyun #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun __NL802154_ATTR_AFTER_LAST, 151*4882a593Smuzhiyun NL802154_ATTR_MAX = __NL802154_ATTR_AFTER_LAST - 1 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun enum nl802154_iftype { 155*4882a593Smuzhiyun NL802154_IFTYPE_UNSPEC = (~(__u32)0), 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun NL802154_IFTYPE_NODE = 0, 158*4882a593Smuzhiyun NL802154_IFTYPE_MONITOR, 159*4882a593Smuzhiyun NL802154_IFTYPE_COORD, 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun /* keep last */ 162*4882a593Smuzhiyun NUM_NL802154_IFTYPES, 163*4882a593Smuzhiyun NL802154_IFTYPE_MAX = NUM_NL802154_IFTYPES - 1 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun /** 167*4882a593Smuzhiyun * enum nl802154_wpan_phy_capability_attr - wpan phy capability attributes 168*4882a593Smuzhiyun * 169*4882a593Smuzhiyun * @__NL802154_CAP_ATTR_INVALID: attribute number 0 is reserved 170*4882a593Smuzhiyun * @NL802154_CAP_ATTR_CHANNELS: a nested attribute for nl802154_channel_attr 171*4882a593Smuzhiyun * @NL802154_CAP_ATTR_TX_POWERS: a nested attribute for 172*4882a593Smuzhiyun * nl802154_wpan_phy_tx_power 173*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MIN_CCA_ED_LEVEL: minimum value for cca_ed_level 174*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MAX_CCA_ED_LEVEL: maxmimum value for cca_ed_level 175*4882a593Smuzhiyun * @NL802154_CAP_ATTR_CCA_MODES: nl802154_cca_modes flags 176*4882a593Smuzhiyun * @NL802154_CAP_ATTR_CCA_OPTS: nl802154_cca_opts flags 177*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MIN_MINBE: minimum of minbe value 178*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MAX_MINBE: maximum of minbe value 179*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MIN_MAXBE: minimum of maxbe value 180*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MAX_MINBE: maximum of maxbe value 181*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS: minimum of csma backoff value 182*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS: maximum of csma backoffs value 183*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MIN_FRAME_RETRIES: minimum of frame retries value 184*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MAX_FRAME_RETRIES: maximum of frame retries value 185*4882a593Smuzhiyun * @NL802154_CAP_ATTR_IFTYPES: nl802154_iftype flags 186*4882a593Smuzhiyun * @NL802154_CAP_ATTR_LBT: nl802154_supported_bool_states flags 187*4882a593Smuzhiyun * @NL802154_CAP_ATTR_MAX: highest cap attribute currently defined 188*4882a593Smuzhiyun * @__NL802154_CAP_ATTR_AFTER_LAST: internal use 189*4882a593Smuzhiyun */ 190*4882a593Smuzhiyun enum nl802154_wpan_phy_capability_attr { 191*4882a593Smuzhiyun __NL802154_CAP_ATTR_INVALID, 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun NL802154_CAP_ATTR_IFTYPES, 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun NL802154_CAP_ATTR_CHANNELS, 196*4882a593Smuzhiyun NL802154_CAP_ATTR_TX_POWERS, 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun NL802154_CAP_ATTR_CCA_ED_LEVELS, 199*4882a593Smuzhiyun NL802154_CAP_ATTR_CCA_MODES, 200*4882a593Smuzhiyun NL802154_CAP_ATTR_CCA_OPTS, 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun NL802154_CAP_ATTR_MIN_MINBE, 203*4882a593Smuzhiyun NL802154_CAP_ATTR_MAX_MINBE, 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun NL802154_CAP_ATTR_MIN_MAXBE, 206*4882a593Smuzhiyun NL802154_CAP_ATTR_MAX_MAXBE, 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS, 209*4882a593Smuzhiyun NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS, 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun NL802154_CAP_ATTR_MIN_FRAME_RETRIES, 212*4882a593Smuzhiyun NL802154_CAP_ATTR_MAX_FRAME_RETRIES, 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun NL802154_CAP_ATTR_LBT, 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* keep last */ 217*4882a593Smuzhiyun __NL802154_CAP_ATTR_AFTER_LAST, 218*4882a593Smuzhiyun NL802154_CAP_ATTR_MAX = __NL802154_CAP_ATTR_AFTER_LAST - 1 219*4882a593Smuzhiyun }; 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun /** 222*4882a593Smuzhiyun * enum nl802154_cca_modes - cca modes 223*4882a593Smuzhiyun * 224*4882a593Smuzhiyun * @__NL802154_CCA_INVALID: cca mode number 0 is reserved 225*4882a593Smuzhiyun * @NL802154_CCA_ENERGY: Energy above threshold 226*4882a593Smuzhiyun * @NL802154_CCA_CARRIER: Carrier sense only 227*4882a593Smuzhiyun * @NL802154_CCA_ENERGY_CARRIER: Carrier sense with energy above threshold 228*4882a593Smuzhiyun * @NL802154_CCA_ALOHA: CCA shall always report an idle medium 229*4882a593Smuzhiyun * @NL802154_CCA_UWB_SHR: UWB preamble sense based on the SHR of a frame 230*4882a593Smuzhiyun * @NL802154_CCA_UWB_MULTIPLEXED: UWB preamble sense based on the packet with 231*4882a593Smuzhiyun * the multiplexed preamble 232*4882a593Smuzhiyun * @__NL802154_CCA_ATTR_AFTER_LAST: Internal 233*4882a593Smuzhiyun * @NL802154_CCA_ATTR_MAX: Maximum CCA attribute number 234*4882a593Smuzhiyun */ 235*4882a593Smuzhiyun enum nl802154_cca_modes { 236*4882a593Smuzhiyun __NL802154_CCA_INVALID, 237*4882a593Smuzhiyun NL802154_CCA_ENERGY, 238*4882a593Smuzhiyun NL802154_CCA_CARRIER, 239*4882a593Smuzhiyun NL802154_CCA_ENERGY_CARRIER, 240*4882a593Smuzhiyun NL802154_CCA_ALOHA, 241*4882a593Smuzhiyun NL802154_CCA_UWB_SHR, 242*4882a593Smuzhiyun NL802154_CCA_UWB_MULTIPLEXED, 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun /* keep last */ 245*4882a593Smuzhiyun __NL802154_CCA_ATTR_AFTER_LAST, 246*4882a593Smuzhiyun NL802154_CCA_ATTR_MAX = __NL802154_CCA_ATTR_AFTER_LAST - 1 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun /** 250*4882a593Smuzhiyun * enum nl802154_cca_opts - additional options for cca modes 251*4882a593Smuzhiyun * 252*4882a593Smuzhiyun * @NL802154_CCA_OPT_ENERGY_CARRIER_OR: NL802154_CCA_ENERGY_CARRIER with OR 253*4882a593Smuzhiyun * @NL802154_CCA_OPT_ENERGY_CARRIER_AND: NL802154_CCA_ENERGY_CARRIER with AND 254*4882a593Smuzhiyun */ 255*4882a593Smuzhiyun enum nl802154_cca_opts { 256*4882a593Smuzhiyun NL802154_CCA_OPT_ENERGY_CARRIER_AND, 257*4882a593Smuzhiyun NL802154_CCA_OPT_ENERGY_CARRIER_OR, 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun /* keep last */ 260*4882a593Smuzhiyun __NL802154_CCA_OPT_ATTR_AFTER_LAST, 261*4882a593Smuzhiyun NL802154_CCA_OPT_ATTR_MAX = __NL802154_CCA_OPT_ATTR_AFTER_LAST - 1 262*4882a593Smuzhiyun }; 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /** 265*4882a593Smuzhiyun * enum nl802154_supported_bool_states - bool states for bool capability entry 266*4882a593Smuzhiyun * 267*4882a593Smuzhiyun * @NL802154_SUPPORTED_BOOL_FALSE: indicates to set false 268*4882a593Smuzhiyun * @NL802154_SUPPORTED_BOOL_TRUE: indicates to set true 269*4882a593Smuzhiyun * @__NL802154_SUPPORTED_BOOL_INVALD: reserved 270*4882a593Smuzhiyun * @NL802154_SUPPORTED_BOOL_BOTH: indicates to set true and false 271*4882a593Smuzhiyun * @__NL802154_SUPPORTED_BOOL_AFTER_LAST: Internal 272*4882a593Smuzhiyun * @NL802154_SUPPORTED_BOOL_MAX: highest value for bool states 273*4882a593Smuzhiyun */ 274*4882a593Smuzhiyun enum nl802154_supported_bool_states { 275*4882a593Smuzhiyun NL802154_SUPPORTED_BOOL_FALSE, 276*4882a593Smuzhiyun NL802154_SUPPORTED_BOOL_TRUE, 277*4882a593Smuzhiyun /* to handle them in a mask */ 278*4882a593Smuzhiyun __NL802154_SUPPORTED_BOOL_INVALD, 279*4882a593Smuzhiyun NL802154_SUPPORTED_BOOL_BOTH, 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun /* keep last */ 282*4882a593Smuzhiyun __NL802154_SUPPORTED_BOOL_AFTER_LAST, 283*4882a593Smuzhiyun NL802154_SUPPORTED_BOOL_MAX = __NL802154_SUPPORTED_BOOL_AFTER_LAST - 1 284*4882a593Smuzhiyun }; 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun enum nl802154_dev_addr_modes { 289*4882a593Smuzhiyun NL802154_DEV_ADDR_NONE, 290*4882a593Smuzhiyun __NL802154_DEV_ADDR_INVALID, 291*4882a593Smuzhiyun NL802154_DEV_ADDR_SHORT, 292*4882a593Smuzhiyun NL802154_DEV_ADDR_EXTENDED, 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun /* keep last */ 295*4882a593Smuzhiyun __NL802154_DEV_ADDR_AFTER_LAST, 296*4882a593Smuzhiyun NL802154_DEV_ADDR_MAX = __NL802154_DEV_ADDR_AFTER_LAST - 1 297*4882a593Smuzhiyun }; 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun enum nl802154_dev_addr_attrs { 300*4882a593Smuzhiyun NL802154_DEV_ADDR_ATTR_UNSPEC, 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun NL802154_DEV_ADDR_ATTR_PAN_ID, 303*4882a593Smuzhiyun NL802154_DEV_ADDR_ATTR_MODE, 304*4882a593Smuzhiyun NL802154_DEV_ADDR_ATTR_SHORT, 305*4882a593Smuzhiyun NL802154_DEV_ADDR_ATTR_EXTENDED, 306*4882a593Smuzhiyun NL802154_DEV_ADDR_ATTR_PAD, 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun /* keep last */ 309*4882a593Smuzhiyun __NL802154_DEV_ADDR_ATTR_AFTER_LAST, 310*4882a593Smuzhiyun NL802154_DEV_ADDR_ATTR_MAX = __NL802154_DEV_ADDR_ATTR_AFTER_LAST - 1 311*4882a593Smuzhiyun }; 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun enum nl802154_key_id_modes { 314*4882a593Smuzhiyun NL802154_KEY_ID_MODE_IMPLICIT, 315*4882a593Smuzhiyun NL802154_KEY_ID_MODE_INDEX, 316*4882a593Smuzhiyun NL802154_KEY_ID_MODE_INDEX_SHORT, 317*4882a593Smuzhiyun NL802154_KEY_ID_MODE_INDEX_EXTENDED, 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun /* keep last */ 320*4882a593Smuzhiyun __NL802154_KEY_ID_MODE_AFTER_LAST, 321*4882a593Smuzhiyun NL802154_KEY_ID_MODE_MAX = __NL802154_KEY_ID_MODE_AFTER_LAST - 1 322*4882a593Smuzhiyun }; 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun enum nl802154_key_id_attrs { 325*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_UNSPEC, 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_MODE, 328*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_INDEX, 329*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_IMPLICIT, 330*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_SOURCE_SHORT, 331*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_SOURCE_EXTENDED, 332*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_PAD, 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun /* keep last */ 335*4882a593Smuzhiyun __NL802154_KEY_ID_ATTR_AFTER_LAST, 336*4882a593Smuzhiyun NL802154_KEY_ID_ATTR_MAX = __NL802154_KEY_ID_ATTR_AFTER_LAST - 1 337*4882a593Smuzhiyun }; 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun enum nl802154_seclevels { 340*4882a593Smuzhiyun NL802154_SECLEVEL_NONE, 341*4882a593Smuzhiyun NL802154_SECLEVEL_MIC32, 342*4882a593Smuzhiyun NL802154_SECLEVEL_MIC64, 343*4882a593Smuzhiyun NL802154_SECLEVEL_MIC128, 344*4882a593Smuzhiyun NL802154_SECLEVEL_ENC, 345*4882a593Smuzhiyun NL802154_SECLEVEL_ENC_MIC32, 346*4882a593Smuzhiyun NL802154_SECLEVEL_ENC_MIC64, 347*4882a593Smuzhiyun NL802154_SECLEVEL_ENC_MIC128, 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun /* keep last */ 350*4882a593Smuzhiyun __NL802154_SECLEVEL_AFTER_LAST, 351*4882a593Smuzhiyun NL802154_SECLEVEL_MAX = __NL802154_SECLEVEL_AFTER_LAST - 1 352*4882a593Smuzhiyun }; 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun enum nl802154_frames { 355*4882a593Smuzhiyun NL802154_FRAME_BEACON, 356*4882a593Smuzhiyun NL802154_FRAME_DATA, 357*4882a593Smuzhiyun NL802154_FRAME_ACK, 358*4882a593Smuzhiyun NL802154_FRAME_CMD, 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun /* keep last */ 361*4882a593Smuzhiyun __NL802154_FRAME_AFTER_LAST, 362*4882a593Smuzhiyun NL802154_FRAME_MAX = __NL802154_FRAME_AFTER_LAST - 1 363*4882a593Smuzhiyun }; 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun enum nl802154_cmd_frames { 366*4882a593Smuzhiyun __NL802154_CMD_FRAME_INVALID, 367*4882a593Smuzhiyun NL802154_CMD_FRAME_ASSOC_REQUEST, 368*4882a593Smuzhiyun NL802154_CMD_FRAME_ASSOC_RESPONSE, 369*4882a593Smuzhiyun NL802154_CMD_FRAME_DISASSOC_NOTIFY, 370*4882a593Smuzhiyun NL802154_CMD_FRAME_DATA_REQUEST, 371*4882a593Smuzhiyun NL802154_CMD_FRAME_PAN_ID_CONFLICT_NOTIFY, 372*4882a593Smuzhiyun NL802154_CMD_FRAME_ORPHAN_NOTIFY, 373*4882a593Smuzhiyun NL802154_CMD_FRAME_BEACON_REQUEST, 374*4882a593Smuzhiyun NL802154_CMD_FRAME_COORD_REALIGNMENT, 375*4882a593Smuzhiyun NL802154_CMD_FRAME_GTS_REQUEST, 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun /* keep last */ 378*4882a593Smuzhiyun __NL802154_CMD_FRAME_AFTER_LAST, 379*4882a593Smuzhiyun NL802154_CMD_FRAME_MAX = __NL802154_CMD_FRAME_AFTER_LAST - 1 380*4882a593Smuzhiyun }; 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun enum nl802154_seclevel_attrs { 383*4882a593Smuzhiyun NL802154_SECLEVEL_ATTR_UNSPEC, 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun NL802154_SECLEVEL_ATTR_LEVELS, 386*4882a593Smuzhiyun NL802154_SECLEVEL_ATTR_FRAME, 387*4882a593Smuzhiyun NL802154_SECLEVEL_ATTR_CMD_FRAME, 388*4882a593Smuzhiyun NL802154_SECLEVEL_ATTR_DEV_OVERRIDE, 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun /* keep last */ 391*4882a593Smuzhiyun __NL802154_SECLEVEL_ATTR_AFTER_LAST, 392*4882a593Smuzhiyun NL802154_SECLEVEL_ATTR_MAX = __NL802154_SECLEVEL_ATTR_AFTER_LAST - 1 393*4882a593Smuzhiyun }; 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun /* TODO what is this? couldn't find in mib */ 396*4882a593Smuzhiyun enum { 397*4882a593Smuzhiyun NL802154_DEVKEY_IGNORE, 398*4882a593Smuzhiyun NL802154_DEVKEY_RESTRICT, 399*4882a593Smuzhiyun NL802154_DEVKEY_RECORD, 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun /* keep last */ 402*4882a593Smuzhiyun __NL802154_DEVKEY_AFTER_LAST, 403*4882a593Smuzhiyun NL802154_DEVKEY_MAX = __NL802154_DEVKEY_AFTER_LAST - 1 404*4882a593Smuzhiyun }; 405*4882a593Smuzhiyun 406*4882a593Smuzhiyun enum nl802154_dev { 407*4882a593Smuzhiyun NL802154_DEV_ATTR_UNSPEC, 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun NL802154_DEV_ATTR_FRAME_COUNTER, 410*4882a593Smuzhiyun NL802154_DEV_ATTR_PAN_ID, 411*4882a593Smuzhiyun NL802154_DEV_ATTR_SHORT_ADDR, 412*4882a593Smuzhiyun NL802154_DEV_ATTR_EXTENDED_ADDR, 413*4882a593Smuzhiyun NL802154_DEV_ATTR_SECLEVEL_EXEMPT, 414*4882a593Smuzhiyun NL802154_DEV_ATTR_KEY_MODE, 415*4882a593Smuzhiyun NL802154_DEV_ATTR_PAD, 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun /* keep last */ 418*4882a593Smuzhiyun __NL802154_DEV_ATTR_AFTER_LAST, 419*4882a593Smuzhiyun NL802154_DEV_ATTR_MAX = __NL802154_DEV_ATTR_AFTER_LAST - 1 420*4882a593Smuzhiyun }; 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun enum nl802154_devkey { 423*4882a593Smuzhiyun NL802154_DEVKEY_ATTR_UNSPEC, 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun NL802154_DEVKEY_ATTR_FRAME_COUNTER, 426*4882a593Smuzhiyun NL802154_DEVKEY_ATTR_EXTENDED_ADDR, 427*4882a593Smuzhiyun NL802154_DEVKEY_ATTR_ID, 428*4882a593Smuzhiyun NL802154_DEVKEY_ATTR_PAD, 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun /* keep last */ 431*4882a593Smuzhiyun __NL802154_DEVKEY_ATTR_AFTER_LAST, 432*4882a593Smuzhiyun NL802154_DEVKEY_ATTR_MAX = __NL802154_DEVKEY_ATTR_AFTER_LAST - 1 433*4882a593Smuzhiyun }; 434*4882a593Smuzhiyun 435*4882a593Smuzhiyun enum nl802154_key { 436*4882a593Smuzhiyun NL802154_KEY_ATTR_UNSPEC, 437*4882a593Smuzhiyun 438*4882a593Smuzhiyun NL802154_KEY_ATTR_ID, 439*4882a593Smuzhiyun NL802154_KEY_ATTR_USAGE_FRAMES, 440*4882a593Smuzhiyun NL802154_KEY_ATTR_USAGE_CMDS, 441*4882a593Smuzhiyun NL802154_KEY_ATTR_BYTES, 442*4882a593Smuzhiyun 443*4882a593Smuzhiyun /* keep last */ 444*4882a593Smuzhiyun __NL802154_KEY_ATTR_AFTER_LAST, 445*4882a593Smuzhiyun NL802154_KEY_ATTR_MAX = __NL802154_KEY_ATTR_AFTER_LAST - 1 446*4882a593Smuzhiyun }; 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun #define NL802154_KEY_SIZE 16 449*4882a593Smuzhiyun #define NL802154_CMD_FRAME_NR_IDS 256 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 452*4882a593Smuzhiyun 453*4882a593Smuzhiyun #endif /* __NL802154_H */ 454