0001 #ifndef __NL802154_H
0002 #define __NL802154_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include <linux/types.h>
0023
0024 #define NL802154_GENL_NAME "nl802154"
0025
0026 enum nl802154_commands {
0027
0028
0029 NL802154_CMD_UNSPEC,
0030
0031 NL802154_CMD_GET_WPAN_PHY,
0032 NL802154_CMD_SET_WPAN_PHY,
0033 NL802154_CMD_NEW_WPAN_PHY,
0034 NL802154_CMD_DEL_WPAN_PHY,
0035
0036 NL802154_CMD_GET_INTERFACE,
0037 NL802154_CMD_SET_INTERFACE,
0038 NL802154_CMD_NEW_INTERFACE,
0039 NL802154_CMD_DEL_INTERFACE,
0040
0041 NL802154_CMD_SET_CHANNEL,
0042
0043 NL802154_CMD_SET_PAN_ID,
0044 NL802154_CMD_SET_SHORT_ADDR,
0045
0046 NL802154_CMD_SET_TX_POWER,
0047 NL802154_CMD_SET_CCA_MODE,
0048 NL802154_CMD_SET_CCA_ED_LEVEL,
0049
0050 NL802154_CMD_SET_MAX_FRAME_RETRIES,
0051
0052 NL802154_CMD_SET_BACKOFF_EXPONENT,
0053 NL802154_CMD_SET_MAX_CSMA_BACKOFFS,
0054
0055 NL802154_CMD_SET_LBT_MODE,
0056
0057 NL802154_CMD_SET_ACKREQ_DEFAULT,
0058
0059 NL802154_CMD_SET_WPAN_PHY_NETNS,
0060
0061
0062
0063 #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
0064 NL802154_CMD_SET_SEC_PARAMS,
0065 NL802154_CMD_GET_SEC_KEY,
0066 NL802154_CMD_NEW_SEC_KEY,
0067 NL802154_CMD_DEL_SEC_KEY,
0068 NL802154_CMD_GET_SEC_DEV,
0069 NL802154_CMD_NEW_SEC_DEV,
0070 NL802154_CMD_DEL_SEC_DEV,
0071 NL802154_CMD_GET_SEC_DEVKEY,
0072 NL802154_CMD_NEW_SEC_DEVKEY,
0073 NL802154_CMD_DEL_SEC_DEVKEY,
0074 NL802154_CMD_GET_SEC_LEVEL,
0075 NL802154_CMD_NEW_SEC_LEVEL,
0076 NL802154_CMD_DEL_SEC_LEVEL,
0077 #endif
0078
0079
0080 __NL802154_CMD_AFTER_LAST,
0081 NL802154_CMD_MAX = __NL802154_CMD_AFTER_LAST - 1
0082 };
0083
0084 enum nl802154_attrs {
0085
0086
0087 NL802154_ATTR_UNSPEC,
0088
0089 NL802154_ATTR_WPAN_PHY,
0090 NL802154_ATTR_WPAN_PHY_NAME,
0091
0092 NL802154_ATTR_IFINDEX,
0093 NL802154_ATTR_IFNAME,
0094 NL802154_ATTR_IFTYPE,
0095
0096 NL802154_ATTR_WPAN_DEV,
0097
0098 NL802154_ATTR_PAGE,
0099 NL802154_ATTR_CHANNEL,
0100
0101 NL802154_ATTR_PAN_ID,
0102 NL802154_ATTR_SHORT_ADDR,
0103
0104 NL802154_ATTR_TX_POWER,
0105
0106 NL802154_ATTR_CCA_MODE,
0107 NL802154_ATTR_CCA_OPT,
0108 NL802154_ATTR_CCA_ED_LEVEL,
0109
0110 NL802154_ATTR_MAX_FRAME_RETRIES,
0111
0112 NL802154_ATTR_MAX_BE,
0113 NL802154_ATTR_MIN_BE,
0114 NL802154_ATTR_MAX_CSMA_BACKOFFS,
0115
0116 NL802154_ATTR_LBT_MODE,
0117
0118 NL802154_ATTR_GENERATION,
0119
0120 NL802154_ATTR_CHANNELS_SUPPORTED,
0121 NL802154_ATTR_SUPPORTED_CHANNEL,
0122
0123 NL802154_ATTR_EXTENDED_ADDR,
0124
0125 NL802154_ATTR_WPAN_PHY_CAPS,
0126
0127 NL802154_ATTR_SUPPORTED_COMMANDS,
0128
0129 NL802154_ATTR_ACKREQ_DEFAULT,
0130
0131 NL802154_ATTR_PAD,
0132
0133 NL802154_ATTR_PID,
0134 NL802154_ATTR_NETNS_FD,
0135
0136
0137
0138 #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
0139 NL802154_ATTR_SEC_ENABLED,
0140 NL802154_ATTR_SEC_OUT_LEVEL,
0141 NL802154_ATTR_SEC_OUT_KEY_ID,
0142 NL802154_ATTR_SEC_FRAME_COUNTER,
0143
0144 NL802154_ATTR_SEC_LEVEL,
0145 NL802154_ATTR_SEC_DEVICE,
0146 NL802154_ATTR_SEC_DEVKEY,
0147 NL802154_ATTR_SEC_KEY,
0148 #endif
0149
0150 __NL802154_ATTR_AFTER_LAST,
0151 NL802154_ATTR_MAX = __NL802154_ATTR_AFTER_LAST - 1
0152 };
0153
0154 enum nl802154_iftype {
0155 NL802154_IFTYPE_UNSPEC = (~(__u32)0),
0156
0157 NL802154_IFTYPE_NODE = 0,
0158 NL802154_IFTYPE_MONITOR,
0159 NL802154_IFTYPE_COORD,
0160
0161
0162 NUM_NL802154_IFTYPES,
0163 NL802154_IFTYPE_MAX = NUM_NL802154_IFTYPES - 1
0164 };
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190 enum nl802154_wpan_phy_capability_attr {
0191 __NL802154_CAP_ATTR_INVALID,
0192
0193 NL802154_CAP_ATTR_IFTYPES,
0194
0195 NL802154_CAP_ATTR_CHANNELS,
0196 NL802154_CAP_ATTR_TX_POWERS,
0197
0198 NL802154_CAP_ATTR_CCA_ED_LEVELS,
0199 NL802154_CAP_ATTR_CCA_MODES,
0200 NL802154_CAP_ATTR_CCA_OPTS,
0201
0202 NL802154_CAP_ATTR_MIN_MINBE,
0203 NL802154_CAP_ATTR_MAX_MINBE,
0204
0205 NL802154_CAP_ATTR_MIN_MAXBE,
0206 NL802154_CAP_ATTR_MAX_MAXBE,
0207
0208 NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS,
0209 NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS,
0210
0211 NL802154_CAP_ATTR_MIN_FRAME_RETRIES,
0212 NL802154_CAP_ATTR_MAX_FRAME_RETRIES,
0213
0214 NL802154_CAP_ATTR_LBT,
0215
0216
0217 __NL802154_CAP_ATTR_AFTER_LAST,
0218 NL802154_CAP_ATTR_MAX = __NL802154_CAP_ATTR_AFTER_LAST - 1
0219 };
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235 enum nl802154_cca_modes {
0236 __NL802154_CCA_INVALID,
0237 NL802154_CCA_ENERGY,
0238 NL802154_CCA_CARRIER,
0239 NL802154_CCA_ENERGY_CARRIER,
0240 NL802154_CCA_ALOHA,
0241 NL802154_CCA_UWB_SHR,
0242 NL802154_CCA_UWB_MULTIPLEXED,
0243
0244
0245 __NL802154_CCA_ATTR_AFTER_LAST,
0246 NL802154_CCA_ATTR_MAX = __NL802154_CCA_ATTR_AFTER_LAST - 1
0247 };
0248
0249
0250
0251
0252
0253
0254
0255 enum nl802154_cca_opts {
0256 NL802154_CCA_OPT_ENERGY_CARRIER_AND,
0257 NL802154_CCA_OPT_ENERGY_CARRIER_OR,
0258
0259
0260 __NL802154_CCA_OPT_ATTR_AFTER_LAST,
0261 NL802154_CCA_OPT_ATTR_MAX = __NL802154_CCA_OPT_ATTR_AFTER_LAST - 1
0262 };
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274 enum nl802154_supported_bool_states {
0275 NL802154_SUPPORTED_BOOL_FALSE,
0276 NL802154_SUPPORTED_BOOL_TRUE,
0277
0278 __NL802154_SUPPORTED_BOOL_INVALD,
0279 NL802154_SUPPORTED_BOOL_BOTH,
0280
0281
0282 __NL802154_SUPPORTED_BOOL_AFTER_LAST,
0283 NL802154_SUPPORTED_BOOL_MAX = __NL802154_SUPPORTED_BOOL_AFTER_LAST - 1
0284 };
0285
0286 #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
0287
0288 enum nl802154_dev_addr_modes {
0289 NL802154_DEV_ADDR_NONE,
0290 __NL802154_DEV_ADDR_INVALID,
0291 NL802154_DEV_ADDR_SHORT,
0292 NL802154_DEV_ADDR_EXTENDED,
0293
0294
0295 __NL802154_DEV_ADDR_AFTER_LAST,
0296 NL802154_DEV_ADDR_MAX = __NL802154_DEV_ADDR_AFTER_LAST - 1
0297 };
0298
0299 enum nl802154_dev_addr_attrs {
0300 NL802154_DEV_ADDR_ATTR_UNSPEC,
0301
0302 NL802154_DEV_ADDR_ATTR_PAN_ID,
0303 NL802154_DEV_ADDR_ATTR_MODE,
0304 NL802154_DEV_ADDR_ATTR_SHORT,
0305 NL802154_DEV_ADDR_ATTR_EXTENDED,
0306 NL802154_DEV_ADDR_ATTR_PAD,
0307
0308
0309 __NL802154_DEV_ADDR_ATTR_AFTER_LAST,
0310 NL802154_DEV_ADDR_ATTR_MAX = __NL802154_DEV_ADDR_ATTR_AFTER_LAST - 1
0311 };
0312
0313 enum nl802154_key_id_modes {
0314 NL802154_KEY_ID_MODE_IMPLICIT,
0315 NL802154_KEY_ID_MODE_INDEX,
0316 NL802154_KEY_ID_MODE_INDEX_SHORT,
0317 NL802154_KEY_ID_MODE_INDEX_EXTENDED,
0318
0319
0320 __NL802154_KEY_ID_MODE_AFTER_LAST,
0321 NL802154_KEY_ID_MODE_MAX = __NL802154_KEY_ID_MODE_AFTER_LAST - 1
0322 };
0323
0324 enum nl802154_key_id_attrs {
0325 NL802154_KEY_ID_ATTR_UNSPEC,
0326
0327 NL802154_KEY_ID_ATTR_MODE,
0328 NL802154_KEY_ID_ATTR_INDEX,
0329 NL802154_KEY_ID_ATTR_IMPLICIT,
0330 NL802154_KEY_ID_ATTR_SOURCE_SHORT,
0331 NL802154_KEY_ID_ATTR_SOURCE_EXTENDED,
0332 NL802154_KEY_ID_ATTR_PAD,
0333
0334
0335 __NL802154_KEY_ID_ATTR_AFTER_LAST,
0336 NL802154_KEY_ID_ATTR_MAX = __NL802154_KEY_ID_ATTR_AFTER_LAST - 1
0337 };
0338
0339 enum nl802154_seclevels {
0340 NL802154_SECLEVEL_NONE,
0341 NL802154_SECLEVEL_MIC32,
0342 NL802154_SECLEVEL_MIC64,
0343 NL802154_SECLEVEL_MIC128,
0344 NL802154_SECLEVEL_ENC,
0345 NL802154_SECLEVEL_ENC_MIC32,
0346 NL802154_SECLEVEL_ENC_MIC64,
0347 NL802154_SECLEVEL_ENC_MIC128,
0348
0349
0350 __NL802154_SECLEVEL_AFTER_LAST,
0351 NL802154_SECLEVEL_MAX = __NL802154_SECLEVEL_AFTER_LAST - 1
0352 };
0353
0354 enum nl802154_frames {
0355 NL802154_FRAME_BEACON,
0356 NL802154_FRAME_DATA,
0357 NL802154_FRAME_ACK,
0358 NL802154_FRAME_CMD,
0359
0360
0361 __NL802154_FRAME_AFTER_LAST,
0362 NL802154_FRAME_MAX = __NL802154_FRAME_AFTER_LAST - 1
0363 };
0364
0365 enum nl802154_cmd_frames {
0366 __NL802154_CMD_FRAME_INVALID,
0367 NL802154_CMD_FRAME_ASSOC_REQUEST,
0368 NL802154_CMD_FRAME_ASSOC_RESPONSE,
0369 NL802154_CMD_FRAME_DISASSOC_NOTIFY,
0370 NL802154_CMD_FRAME_DATA_REQUEST,
0371 NL802154_CMD_FRAME_PAN_ID_CONFLICT_NOTIFY,
0372 NL802154_CMD_FRAME_ORPHAN_NOTIFY,
0373 NL802154_CMD_FRAME_BEACON_REQUEST,
0374 NL802154_CMD_FRAME_COORD_REALIGNMENT,
0375 NL802154_CMD_FRAME_GTS_REQUEST,
0376
0377
0378 __NL802154_CMD_FRAME_AFTER_LAST,
0379 NL802154_CMD_FRAME_MAX = __NL802154_CMD_FRAME_AFTER_LAST - 1
0380 };
0381
0382 enum nl802154_seclevel_attrs {
0383 NL802154_SECLEVEL_ATTR_UNSPEC,
0384
0385 NL802154_SECLEVEL_ATTR_LEVELS,
0386 NL802154_SECLEVEL_ATTR_FRAME,
0387 NL802154_SECLEVEL_ATTR_CMD_FRAME,
0388 NL802154_SECLEVEL_ATTR_DEV_OVERRIDE,
0389
0390
0391 __NL802154_SECLEVEL_ATTR_AFTER_LAST,
0392 NL802154_SECLEVEL_ATTR_MAX = __NL802154_SECLEVEL_ATTR_AFTER_LAST - 1
0393 };
0394
0395
0396 enum {
0397 NL802154_DEVKEY_IGNORE,
0398 NL802154_DEVKEY_RESTRICT,
0399 NL802154_DEVKEY_RECORD,
0400
0401
0402 __NL802154_DEVKEY_AFTER_LAST,
0403 NL802154_DEVKEY_MAX = __NL802154_DEVKEY_AFTER_LAST - 1
0404 };
0405
0406 enum nl802154_dev {
0407 NL802154_DEV_ATTR_UNSPEC,
0408
0409 NL802154_DEV_ATTR_FRAME_COUNTER,
0410 NL802154_DEV_ATTR_PAN_ID,
0411 NL802154_DEV_ATTR_SHORT_ADDR,
0412 NL802154_DEV_ATTR_EXTENDED_ADDR,
0413 NL802154_DEV_ATTR_SECLEVEL_EXEMPT,
0414 NL802154_DEV_ATTR_KEY_MODE,
0415 NL802154_DEV_ATTR_PAD,
0416
0417
0418 __NL802154_DEV_ATTR_AFTER_LAST,
0419 NL802154_DEV_ATTR_MAX = __NL802154_DEV_ATTR_AFTER_LAST - 1
0420 };
0421
0422 enum nl802154_devkey {
0423 NL802154_DEVKEY_ATTR_UNSPEC,
0424
0425 NL802154_DEVKEY_ATTR_FRAME_COUNTER,
0426 NL802154_DEVKEY_ATTR_EXTENDED_ADDR,
0427 NL802154_DEVKEY_ATTR_ID,
0428 NL802154_DEVKEY_ATTR_PAD,
0429
0430
0431 __NL802154_DEVKEY_ATTR_AFTER_LAST,
0432 NL802154_DEVKEY_ATTR_MAX = __NL802154_DEVKEY_ATTR_AFTER_LAST - 1
0433 };
0434
0435 enum nl802154_key {
0436 NL802154_KEY_ATTR_UNSPEC,
0437
0438 NL802154_KEY_ATTR_ID,
0439 NL802154_KEY_ATTR_USAGE_FRAMES,
0440 NL802154_KEY_ATTR_USAGE_CMDS,
0441 NL802154_KEY_ATTR_BYTES,
0442
0443
0444 __NL802154_KEY_ATTR_AFTER_LAST,
0445 NL802154_KEY_ATTR_MAX = __NL802154_KEY_ATTR_AFTER_LAST - 1
0446 };
0447
0448 #define NL802154_KEY_SIZE 16
0449 #define NL802154_CMD_FRAME_NR_IDS 256
0450
0451 #endif
0452
0453 #endif