^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * nl802154.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 2007, 2008 Siemens AG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/kernel.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <net/netlink.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/nl802154.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define NLA_HW_ADDR NLA_U64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) const struct nla_policy ieee802154_policy[IEEE802154_ATTR_MAX + 1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) [IEEE802154_ATTR_DEV_NAME] = { .type = NLA_STRING, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) [IEEE802154_ATTR_DEV_INDEX] = { .type = NLA_U32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) [IEEE802154_ATTR_PHY_NAME] = { .type = NLA_STRING, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) [IEEE802154_ATTR_STATUS] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) [IEEE802154_ATTR_SHORT_ADDR] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) [IEEE802154_ATTR_HW_ADDR] = { .type = NLA_HW_ADDR, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) [IEEE802154_ATTR_PAN_ID] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) [IEEE802154_ATTR_CHANNEL] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) [IEEE802154_ATTR_BCN_ORD] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) [IEEE802154_ATTR_SF_ORD] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) [IEEE802154_ATTR_PAN_COORD] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) [IEEE802154_ATTR_BAT_EXT] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) [IEEE802154_ATTR_COORD_REALIGN] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) [IEEE802154_ATTR_PAGE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) [IEEE802154_ATTR_DEV_TYPE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) [IEEE802154_ATTR_COORD_SHORT_ADDR] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) [IEEE802154_ATTR_COORD_HW_ADDR] = { .type = NLA_HW_ADDR, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) [IEEE802154_ATTR_COORD_PAN_ID] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) [IEEE802154_ATTR_SRC_SHORT_ADDR] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) [IEEE802154_ATTR_SRC_HW_ADDR] = { .type = NLA_HW_ADDR, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) [IEEE802154_ATTR_SRC_PAN_ID] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) [IEEE802154_ATTR_DEST_SHORT_ADDR] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) [IEEE802154_ATTR_DEST_HW_ADDR] = { .type = NLA_HW_ADDR, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) [IEEE802154_ATTR_DEST_PAN_ID] = { .type = NLA_U16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) [IEEE802154_ATTR_CAPABILITY] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) [IEEE802154_ATTR_REASON] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) [IEEE802154_ATTR_SCAN_TYPE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) [IEEE802154_ATTR_CHANNELS] = { .type = NLA_U32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) [IEEE802154_ATTR_DURATION] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) [IEEE802154_ATTR_ED_LIST] = { .len = 27 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) [IEEE802154_ATTR_CHANNEL_PAGE_LIST] = { .len = 32 * 4, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) [IEEE802154_ATTR_TXPOWER] = { .type = NLA_S8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) [IEEE802154_ATTR_LBT_ENABLED] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) [IEEE802154_ATTR_CCA_MODE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) [IEEE802154_ATTR_CCA_ED_LEVEL] = { .type = NLA_S32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) [IEEE802154_ATTR_CSMA_RETRIES] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) [IEEE802154_ATTR_CSMA_MIN_BE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) [IEEE802154_ATTR_CSMA_MAX_BE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) [IEEE802154_ATTR_FRAME_RETRIES] = { .type = NLA_S8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) [IEEE802154_ATTR_LLSEC_ENABLED] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) [IEEE802154_ATTR_LLSEC_SECLEVEL] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) [IEEE802154_ATTR_LLSEC_KEY_MODE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) [IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT] = { .type = NLA_U32, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) [IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED] = { .type = NLA_HW_ADDR, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) [IEEE802154_ATTR_LLSEC_KEY_ID] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) [IEEE802154_ATTR_LLSEC_FRAME_COUNTER] = { .type = NLA_U32 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) [IEEE802154_ATTR_LLSEC_KEY_BYTES] = { .len = 16, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) [IEEE802154_ATTR_LLSEC_KEY_USAGE_FRAME_TYPES] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) [IEEE802154_ATTR_LLSEC_KEY_USAGE_COMMANDS] = { .len = 258 / 8 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) [IEEE802154_ATTR_LLSEC_FRAME_TYPE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) [IEEE802154_ATTR_LLSEC_CMD_FRAME_ID] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) [IEEE802154_ATTR_LLSEC_SECLEVELS] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) [IEEE802154_ATTR_LLSEC_DEV_OVERRIDE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) [IEEE802154_ATTR_LLSEC_DEV_KEY_MODE] = { .type = NLA_U8, },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) };