Lines Matching refs:msg
321 nl802154_put_flags(struct sk_buff *msg, int attr, u32 mask) in nl802154_put_flags() argument
323 struct nlattr *nl_flags = nla_nest_start_noflag(msg, attr); in nl802154_put_flags()
331 if ((mask & 1) && nla_put_flag(msg, i)) in nl802154_put_flags()
338 nla_nest_end(msg, nl_flags); in nl802154_put_flags()
344 struct sk_buff *msg) in nl802154_send_wpan_phy_channels() argument
349 nl_page = nla_nest_start_noflag(msg, NL802154_ATTR_CHANNELS_SUPPORTED); in nl802154_send_wpan_phy_channels()
354 if (nla_put_u32(msg, NL802154_ATTR_SUPPORTED_CHANNEL, in nl802154_send_wpan_phy_channels()
358 nla_nest_end(msg, nl_page); in nl802154_send_wpan_phy_channels()
364 nl802154_put_capabilities(struct sk_buff *msg, in nl802154_put_capabilities() argument
371 nl_caps = nla_nest_start_noflag(msg, NL802154_ATTR_WPAN_PHY_CAPS); in nl802154_put_capabilities()
375 nl_channels = nla_nest_start_noflag(msg, NL802154_CAP_ATTR_CHANNELS); in nl802154_put_capabilities()
381 if (nl802154_put_flags(msg, i, caps->channels[i])) in nl802154_put_capabilities()
386 nla_nest_end(msg, nl_channels); in nl802154_put_capabilities()
391 nl_ed_lvls = nla_nest_start_noflag(msg, in nl802154_put_capabilities()
397 if (nla_put_s32(msg, i, caps->cca_ed_levels[i])) in nl802154_put_capabilities()
401 nla_nest_end(msg, nl_ed_lvls); in nl802154_put_capabilities()
407 nl_tx_pwrs = nla_nest_start_noflag(msg, in nl802154_put_capabilities()
413 if (nla_put_s32(msg, i, caps->tx_powers[i])) in nl802154_put_capabilities()
417 nla_nest_end(msg, nl_tx_pwrs); in nl802154_put_capabilities()
421 if (nl802154_put_flags(msg, NL802154_CAP_ATTR_CCA_MODES, in nl802154_put_capabilities()
423 nl802154_put_flags(msg, NL802154_CAP_ATTR_CCA_OPTS, in nl802154_put_capabilities()
428 if (nla_put_u8(msg, NL802154_CAP_ATTR_MIN_MINBE, caps->min_minbe) || in nl802154_put_capabilities()
429 nla_put_u8(msg, NL802154_CAP_ATTR_MAX_MINBE, caps->max_minbe) || in nl802154_put_capabilities()
430 nla_put_u8(msg, NL802154_CAP_ATTR_MIN_MAXBE, caps->min_maxbe) || in nl802154_put_capabilities()
431 nla_put_u8(msg, NL802154_CAP_ATTR_MAX_MAXBE, caps->max_maxbe) || in nl802154_put_capabilities()
432 nla_put_u8(msg, NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS, in nl802154_put_capabilities()
434 nla_put_u8(msg, NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS, in nl802154_put_capabilities()
436 nla_put_s8(msg, NL802154_CAP_ATTR_MIN_FRAME_RETRIES, in nl802154_put_capabilities()
438 nla_put_s8(msg, NL802154_CAP_ATTR_MAX_FRAME_RETRIES, in nl802154_put_capabilities()
440 nl802154_put_flags(msg, NL802154_CAP_ATTR_IFTYPES, in nl802154_put_capabilities()
442 nla_put_u32(msg, NL802154_CAP_ATTR_LBT, caps->lbt)) in nl802154_put_capabilities()
445 nla_nest_end(msg, nl_caps); in nl802154_put_capabilities()
452 struct sk_buff *msg, u32 portid, u32 seq, in nl802154_send_wpan_phy() argument
459 hdr = nl802154hdr_put(msg, portid, seq, flags, cmd); in nl802154_send_wpan_phy()
463 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx) || in nl802154_send_wpan_phy()
464 nla_put_string(msg, NL802154_ATTR_WPAN_PHY_NAME, in nl802154_send_wpan_phy()
466 nla_put_u32(msg, NL802154_ATTR_GENERATION, in nl802154_send_wpan_phy()
476 if (nla_put_u8(msg, NL802154_ATTR_PAGE, in nl802154_send_wpan_phy()
478 nla_put_u8(msg, NL802154_ATTR_CHANNEL, in nl802154_send_wpan_phy()
485 if (nl802154_send_wpan_phy_channels(rdev, msg)) in nl802154_send_wpan_phy()
490 if (nla_put_u32(msg, NL802154_ATTR_CCA_MODE, in nl802154_send_wpan_phy()
495 if (nla_put_u32(msg, NL802154_ATTR_CCA_OPT, in nl802154_send_wpan_phy()
502 if (nla_put_s32(msg, NL802154_ATTR_TX_POWER, in nl802154_send_wpan_phy()
508 if (nla_put_s32(msg, NL802154_ATTR_CCA_ED_LEVEL, in nl802154_send_wpan_phy()
513 if (nl802154_put_capabilities(msg, rdev)) in nl802154_send_wpan_phy()
516 nl_cmds = nla_nest_start_noflag(msg, NL802154_ATTR_SUPPORTED_COMMANDS); in nl802154_send_wpan_phy()
525 if (nla_put_u32(msg, i, NL802154_CMD_ ## n)) \ in nl802154_send_wpan_phy()
551 nla_nest_end(msg, nl_cmds); in nl802154_send_wpan_phy()
554 genlmsg_end(msg, hdr); in nl802154_send_wpan_phy()
558 genlmsg_cancel(msg, hdr); in nl802154_send_wpan_phy()
662 struct sk_buff *msg; in nl802154_get_wpan_phy() local
665 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl802154_get_wpan_phy()
666 if (!msg) in nl802154_get_wpan_phy()
669 if (nl802154_send_wpan_phy(rdev, NL802154_CMD_NEW_WPAN_PHY, msg, in nl802154_get_wpan_phy()
671 nlmsg_free(msg); in nl802154_get_wpan_phy()
675 return genlmsg_reply(msg, info); in nl802154_get_wpan_phy()
688 ieee802154_llsec_send_key_id(struct sk_buff *msg, in ieee802154_llsec_send_key_id() argument
693 if (nla_put_u32(msg, NL802154_KEY_ID_ATTR_MODE, desc->mode)) in ieee802154_llsec_send_key_id()
698 nl_dev_addr = nla_nest_start_noflag(msg, in ieee802154_llsec_send_key_id()
703 if (nla_put_le16(msg, NL802154_DEV_ADDR_ATTR_PAN_ID, in ieee802154_llsec_send_key_id()
705 nla_put_u32(msg, NL802154_DEV_ADDR_ATTR_MODE, in ieee802154_llsec_send_key_id()
711 if (nla_put_le16(msg, NL802154_DEV_ADDR_ATTR_SHORT, in ieee802154_llsec_send_key_id()
716 if (nla_put_le64(msg, NL802154_DEV_ADDR_ATTR_EXTENDED, in ieee802154_llsec_send_key_id()
726 nla_nest_end(msg, nl_dev_addr); in ieee802154_llsec_send_key_id()
732 if (nla_put_le32(msg, NL802154_KEY_ID_ATTR_SOURCE_SHORT, in ieee802154_llsec_send_key_id()
737 if (nla_put_le64(msg, NL802154_KEY_ID_ATTR_SOURCE_EXTENDED, in ieee802154_llsec_send_key_id()
749 if (nla_put_u8(msg, NL802154_KEY_ID_ATTR_INDEX, desc->id)) in ieee802154_llsec_send_key_id()
756 static int nl802154_get_llsec_params(struct sk_buff *msg, in nl802154_get_llsec_params() argument
768 if (nla_put_u8(msg, NL802154_ATTR_SEC_ENABLED, params.enabled) || in nl802154_get_llsec_params()
769 nla_put_u32(msg, NL802154_ATTR_SEC_OUT_LEVEL, params.out_level) || in nl802154_get_llsec_params()
770 nla_put_be32(msg, NL802154_ATTR_SEC_FRAME_COUNTER, in nl802154_get_llsec_params()
774 nl_key_id = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_OUT_KEY_ID); in nl802154_get_llsec_params()
778 ret = ieee802154_llsec_send_key_id(msg, ¶ms.out_key); in nl802154_get_llsec_params()
782 nla_nest_end(msg, nl_key_id); in nl802154_get_llsec_params()
789 nl802154_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flags, in nl802154_send_iface() argument
796 hdr = nl802154hdr_put(msg, portid, seq, flags, in nl802154_send_iface()
802 (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex) || in nl802154_send_iface()
803 nla_put_string(msg, NL802154_ATTR_IFNAME, dev->name))) in nl802154_send_iface()
806 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx) || in nl802154_send_iface()
807 nla_put_u32(msg, NL802154_ATTR_IFTYPE, wpan_dev->iftype) || in nl802154_send_iface()
808 nla_put_u64_64bit(msg, NL802154_ATTR_WPAN_DEV, in nl802154_send_iface()
810 nla_put_u32(msg, NL802154_ATTR_GENERATION, in nl802154_send_iface()
816 if (nla_put_le64(msg, NL802154_ATTR_EXTENDED_ADDR, in nl802154_send_iface()
819 nla_put_le16(msg, NL802154_ATTR_SHORT_ADDR, in nl802154_send_iface()
821 nla_put_le16(msg, NL802154_ATTR_PAN_ID, wpan_dev->pan_id)) in nl802154_send_iface()
825 if (nla_put_s8(msg, NL802154_ATTR_MAX_FRAME_RETRIES, in nl802154_send_iface()
827 nla_put_u8(msg, NL802154_ATTR_MAX_BE, wpan_dev->max_be) || in nl802154_send_iface()
828 nla_put_u8(msg, NL802154_ATTR_MAX_CSMA_BACKOFFS, in nl802154_send_iface()
830 nla_put_u8(msg, NL802154_ATTR_MIN_BE, wpan_dev->min_be)) in nl802154_send_iface()
834 if (nla_put_u8(msg, NL802154_ATTR_LBT_MODE, wpan_dev->lbt)) in nl802154_send_iface()
838 if (nla_put_u8(msg, NL802154_ATTR_ACKREQ_DEFAULT, wpan_dev->ackreq)) in nl802154_send_iface()
845 if (nl802154_get_llsec_params(msg, rdev, wpan_dev) < 0) in nl802154_send_iface()
851 genlmsg_end(msg, hdr); in nl802154_send_iface()
855 genlmsg_cancel(msg, hdr); in nl802154_send_iface()
905 struct sk_buff *msg; in nl802154_get_interface() local
909 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl802154_get_interface()
910 if (!msg) in nl802154_get_interface()
913 if (nl802154_send_iface(msg, info->snd_portid, info->snd_seq, 0, in nl802154_get_interface()
915 nlmsg_free(msg); in nl802154_get_interface()
919 return genlmsg_reply(msg, info); in nl802154_get_interface()
1302 static int nl802154_prep_scan_event_msg(struct sk_buff *msg, in nl802154_prep_scan_event_msg() argument
1311 hdr = nl802154hdr_put(msg, portid, seq, flags, cmd); in nl802154_prep_scan_event_msg()
1315 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx)) in nl802154_prep_scan_event_msg()
1319 nla_put_u32(msg, NL802154_ATTR_IFINDEX, wpan_dev->netdev->ifindex)) in nl802154_prep_scan_event_msg()
1322 if (nla_put_u64_64bit(msg, NL802154_ATTR_WPAN_DEV, in nl802154_prep_scan_event_msg()
1326 nla = nla_nest_start_noflag(msg, NL802154_ATTR_COORDINATOR); in nl802154_prep_scan_event_msg()
1330 if (nla_put(msg, NL802154_COORD_PANID, IEEE802154_PAN_ID_LEN, in nl802154_prep_scan_event_msg()
1335 if (nla_put(msg, NL802154_COORD_ADDR, in nl802154_prep_scan_event_msg()
1340 if (nla_put(msg, NL802154_COORD_ADDR, in nl802154_prep_scan_event_msg()
1346 if (nla_put_u8(msg, NL802154_COORD_CHANNEL, desc->channel)) in nl802154_prep_scan_event_msg()
1349 if (nla_put_u8(msg, NL802154_COORD_PAGE, desc->page)) in nl802154_prep_scan_event_msg()
1352 if (nla_put_u16(msg, NL802154_COORD_SUPERFRAME_SPEC, in nl802154_prep_scan_event_msg()
1356 if (nla_put_u8(msg, NL802154_COORD_LINK_QUALITY, desc->link_quality)) in nl802154_prep_scan_event_msg()
1359 if (desc->gts_permit && nla_put_flag(msg, NL802154_COORD_GTS_PERMIT)) in nl802154_prep_scan_event_msg()
1364 nla_nest_end(msg, nla); in nl802154_prep_scan_event_msg()
1366 genlmsg_end(msg, hdr); in nl802154_prep_scan_event_msg()
1371 genlmsg_cancel(msg, hdr); in nl802154_prep_scan_event_msg()
1380 struct sk_buff *msg; in nl802154_scan_event() local
1383 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); in nl802154_scan_event()
1384 if (!msg) in nl802154_scan_event()
1387 ret = nl802154_prep_scan_event_msg(msg, rdev, wpan_dev, 0, 0, 0, in nl802154_scan_event()
1391 nlmsg_free(msg); in nl802154_scan_event()
1396 msg, 0, NL802154_MCGRP_SCAN, GFP_ATOMIC); in nl802154_scan_event()
1476 static int nl802154_prep_scan_msg(struct sk_buff *msg, in nl802154_prep_scan_msg() argument
1483 hdr = nl802154hdr_put(msg, portid, seq, flags, cmd); in nl802154_prep_scan_msg()
1487 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx)) in nl802154_prep_scan_msg()
1491 nla_put_u32(msg, NL802154_ATTR_IFINDEX, wpan_dev->netdev->ifindex)) in nl802154_prep_scan_msg()
1494 if (nla_put_u64_64bit(msg, NL802154_ATTR_WPAN_DEV, in nl802154_prep_scan_msg()
1499 nla_put_u8(msg, NL802154_ATTR_SCAN_DONE_REASON, arg)) in nl802154_prep_scan_msg()
1502 genlmsg_end(msg, hdr); in nl802154_prep_scan_msg()
1507 genlmsg_cancel(msg, hdr); in nl802154_prep_scan_msg()
1515 struct sk_buff *msg; in nl802154_send_scan_msg() local
1518 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl802154_send_scan_msg()
1519 if (!msg) in nl802154_send_scan_msg()
1522 ret = nl802154_prep_scan_msg(msg, rdev, wpan_dev, 0, 0, 0, cmd, arg); in nl802154_send_scan_msg()
1524 nlmsg_free(msg); in nl802154_send_scan_msg()
1529 wpan_phy_net(&rdev->wpan_phy), msg, 0, in nl802154_send_scan_msg()
1789 static int nl802154_send_key(struct sk_buff *msg, u32 cmd, u32 portid, in nl802154_send_key() argument
1799 hdr = nl802154hdr_put(msg, portid, seq, flags, cmd); in nl802154_send_key()
1803 if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) in nl802154_send_key()
1806 nl_key = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_KEY); in nl802154_send_key()
1810 nl_key_id = nla_nest_start_noflag(msg, NL802154_KEY_ATTR_ID); in nl802154_send_key()
1814 if (ieee802154_llsec_send_key_id(msg, &key->id) < 0) in nl802154_send_key()
1817 nla_nest_end(msg, nl_key_id); in nl802154_send_key()
1819 if (nla_put_u8(msg, NL802154_KEY_ATTR_USAGE_FRAMES, in nl802154_send_key()
1827 if (nla_put(msg, NL802154_KEY_ATTR_USAGE_CMDS, in nl802154_send_key()
1832 if (nla_put(msg, NL802154_KEY_ATTR_BYTES, NL802154_KEY_SIZE, in nl802154_send_key()
1836 nla_nest_end(msg, nl_key); in nl802154_send_key()
1837 genlmsg_end(msg, hdr); in nl802154_send_key()
1842 genlmsg_cancel(msg, hdr); in nl802154_send_key()
1983 static int nl802154_send_device(struct sk_buff *msg, u32 cmd, u32 portid, in nl802154_send_device() argument
1992 hdr = nl802154hdr_put(msg, portid, seq, flags, cmd); in nl802154_send_device()
1996 if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) in nl802154_send_device()
1999 nl_device = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_DEVICE); in nl802154_send_device()
2003 if (nla_put_u32(msg, NL802154_DEV_ATTR_FRAME_COUNTER, in nl802154_send_device()
2005 nla_put_le16(msg, NL802154_DEV_ATTR_PAN_ID, dev_desc->pan_id) || in nl802154_send_device()
2006 nla_put_le16(msg, NL802154_DEV_ATTR_SHORT_ADDR, in nl802154_send_device()
2008 nla_put_le64(msg, NL802154_DEV_ATTR_EXTENDED_ADDR, in nl802154_send_device()
2010 nla_put_u8(msg, NL802154_DEV_ATTR_SECLEVEL_EXEMPT, in nl802154_send_device()
2012 nla_put_u32(msg, NL802154_DEV_ATTR_KEY_MODE, dev_desc->key_mode)) in nl802154_send_device()
2015 nla_nest_end(msg, nl_device); in nl802154_send_device()
2016 genlmsg_end(msg, hdr); in nl802154_send_device()
2021 genlmsg_cancel(msg, hdr); in nl802154_send_device()
2161 static int nl802154_send_devkey(struct sk_buff *msg, u32 cmd, u32 portid, in nl802154_send_devkey() argument
2170 hdr = nl802154hdr_put(msg, portid, seq, flags, cmd); in nl802154_send_devkey()
2174 if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) in nl802154_send_devkey()
2177 nl_devkey = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_DEVKEY); in nl802154_send_devkey()
2181 if (nla_put_le64(msg, NL802154_DEVKEY_ATTR_EXTENDED_ADDR, in nl802154_send_devkey()
2183 nla_put_u32(msg, NL802154_DEVKEY_ATTR_FRAME_COUNTER, in nl802154_send_devkey()
2187 nl_key_id = nla_nest_start_noflag(msg, NL802154_DEVKEY_ATTR_ID); in nl802154_send_devkey()
2191 if (ieee802154_llsec_send_key_id(msg, &devkey->key_id) < 0) in nl802154_send_devkey()
2194 nla_nest_end(msg, nl_key_id); in nl802154_send_devkey()
2195 nla_nest_end(msg, nl_devkey); in nl802154_send_devkey()
2196 genlmsg_end(msg, hdr); in nl802154_send_devkey()
2201 genlmsg_cancel(msg, hdr); in nl802154_send_devkey()
2337 static int nl802154_send_seclevel(struct sk_buff *msg, u32 cmd, u32 portid, in nl802154_send_seclevel() argument
2346 hdr = nl802154hdr_put(msg, portid, seq, flags, cmd); in nl802154_send_seclevel()
2350 if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) in nl802154_send_seclevel()
2353 nl_seclevel = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_LEVEL); in nl802154_send_seclevel()
2357 if (nla_put_u32(msg, NL802154_SECLEVEL_ATTR_FRAME, sl->frame_type) || in nl802154_send_seclevel()
2358 nla_put_u32(msg, NL802154_SECLEVEL_ATTR_LEVELS, sl->sec_levels) || in nl802154_send_seclevel()
2359 nla_put_u8(msg, NL802154_SECLEVEL_ATTR_DEV_OVERRIDE, in nl802154_send_seclevel()
2364 if (nla_put_u32(msg, NL802154_SECLEVEL_ATTR_CMD_FRAME, in nl802154_send_seclevel()
2369 nla_nest_end(msg, nl_seclevel); in nl802154_send_seclevel()
2370 genlmsg_end(msg, hdr); in nl802154_send_seclevel()
2375 genlmsg_cancel(msg, hdr); in nl802154_send_seclevel()