Lines Matching +refs:dev +refs:id +refs:attrs
51 static int ieee802154_nl_start_confirm(struct net_device *dev, u8 status) in ieee802154_nl_start_confirm() argument
61 if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) || in ieee802154_nl_start_confirm()
62 nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) || in ieee802154_nl_start_confirm()
64 dev->dev_addr) || in ieee802154_nl_start_confirm()
75 u32 seq, int flags, struct net_device *dev) in ieee802154_nl_fill_iface() argument
89 ops = ieee802154_mlme_ops(dev); in ieee802154_nl_fill_iface()
90 phy = dev->ieee802154_ptr->wpan_phy; in ieee802154_nl_fill_iface()
92 get_device(&phy->dev); in ieee802154_nl_fill_iface()
95 short_addr = dev->ieee802154_ptr->short_addr; in ieee802154_nl_fill_iface()
96 pan_id = dev->ieee802154_ptr->pan_id; in ieee802154_nl_fill_iface()
99 if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) || in ieee802154_nl_fill_iface()
101 nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) || in ieee802154_nl_fill_iface()
103 dev->dev_addr) || in ieee802154_nl_fill_iface()
112 ops->get_mac_params(dev, ¶ms); in ieee802154_nl_fill_iface()
147 struct net_device *dev; in ieee802154_nl_get_dev() local
149 if (info->attrs[IEEE802154_ATTR_DEV_NAME]) { in ieee802154_nl_get_dev()
152 nla_strscpy(name, info->attrs[IEEE802154_ATTR_DEV_NAME], in ieee802154_nl_get_dev()
154 dev = dev_get_by_name(&init_net, name); in ieee802154_nl_get_dev()
155 } else if (info->attrs[IEEE802154_ATTR_DEV_INDEX]) { in ieee802154_nl_get_dev()
156 dev = dev_get_by_index(&init_net, in ieee802154_nl_get_dev()
157 nla_get_u32(info->attrs[IEEE802154_ATTR_DEV_INDEX])); in ieee802154_nl_get_dev()
162 if (!dev) in ieee802154_nl_get_dev()
165 if (dev->type != ARPHRD_IEEE802154) { in ieee802154_nl_get_dev()
166 dev_put(dev); in ieee802154_nl_get_dev()
170 return dev; in ieee802154_nl_get_dev()
175 struct net_device *dev; in ieee802154_associate_req() local
180 if (!info->attrs[IEEE802154_ATTR_CHANNEL] || in ieee802154_associate_req()
181 !info->attrs[IEEE802154_ATTR_COORD_PAN_ID] || in ieee802154_associate_req()
182 (!info->attrs[IEEE802154_ATTR_COORD_HW_ADDR] && in ieee802154_associate_req()
183 !info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR]) || in ieee802154_associate_req()
184 !info->attrs[IEEE802154_ATTR_CAPABILITY]) in ieee802154_associate_req()
187 dev = ieee802154_nl_get_dev(info); in ieee802154_associate_req()
188 if (!dev) in ieee802154_associate_req()
190 if (!ieee802154_mlme_ops(dev)->assoc_req) in ieee802154_associate_req()
193 if (info->attrs[IEEE802154_ATTR_COORD_HW_ADDR]) { in ieee802154_associate_req()
196 info->attrs[IEEE802154_ATTR_COORD_HW_ADDR]); in ieee802154_associate_req()
200 info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR]); in ieee802154_associate_req()
203 info->attrs[IEEE802154_ATTR_COORD_PAN_ID]); in ieee802154_associate_req()
205 if (info->attrs[IEEE802154_ATTR_PAGE]) in ieee802154_associate_req()
206 page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]); in ieee802154_associate_req()
210 ret = ieee802154_mlme_ops(dev)->assoc_req(dev, &addr, in ieee802154_associate_req()
211 nla_get_u8(info->attrs[IEEE802154_ATTR_CHANNEL]), in ieee802154_associate_req()
213 nla_get_u8(info->attrs[IEEE802154_ATTR_CAPABILITY])); in ieee802154_associate_req()
216 dev_put(dev); in ieee802154_associate_req()
222 struct net_device *dev; in ieee802154_associate_resp() local
226 if (!info->attrs[IEEE802154_ATTR_STATUS] || in ieee802154_associate_resp()
227 !info->attrs[IEEE802154_ATTR_DEST_HW_ADDR] || in ieee802154_associate_resp()
228 !info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]) in ieee802154_associate_resp()
231 dev = ieee802154_nl_get_dev(info); in ieee802154_associate_resp()
232 if (!dev) in ieee802154_associate_resp()
234 if (!ieee802154_mlme_ops(dev)->assoc_resp) in ieee802154_associate_resp()
239 info->attrs[IEEE802154_ATTR_DEST_HW_ADDR]); in ieee802154_associate_resp()
241 addr.pan_id = dev->ieee802154_ptr->pan_id; in ieee802154_associate_resp()
244 ret = ieee802154_mlme_ops(dev)->assoc_resp(dev, &addr, in ieee802154_associate_resp()
245 nla_get_shortaddr(info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]), in ieee802154_associate_resp()
246 nla_get_u8(info->attrs[IEEE802154_ATTR_STATUS])); in ieee802154_associate_resp()
249 dev_put(dev); in ieee802154_associate_resp()
255 struct net_device *dev; in ieee802154_disassociate_req() local
259 if ((!info->attrs[IEEE802154_ATTR_DEST_HW_ADDR] && in ieee802154_disassociate_req()
260 !info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]) || in ieee802154_disassociate_req()
261 !info->attrs[IEEE802154_ATTR_REASON]) in ieee802154_disassociate_req()
264 dev = ieee802154_nl_get_dev(info); in ieee802154_disassociate_req()
265 if (!dev) in ieee802154_disassociate_req()
267 if (!ieee802154_mlme_ops(dev)->disassoc_req) in ieee802154_disassociate_req()
270 if (info->attrs[IEEE802154_ATTR_DEST_HW_ADDR]) { in ieee802154_disassociate_req()
273 info->attrs[IEEE802154_ATTR_DEST_HW_ADDR]); in ieee802154_disassociate_req()
277 info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]); in ieee802154_disassociate_req()
280 addr.pan_id = dev->ieee802154_ptr->pan_id; in ieee802154_disassociate_req()
283 ret = ieee802154_mlme_ops(dev)->disassoc_req(dev, &addr, in ieee802154_disassociate_req()
284 nla_get_u8(info->attrs[IEEE802154_ATTR_REASON])); in ieee802154_disassociate_req()
287 dev_put(dev); in ieee802154_disassociate_req()
297 struct net_device *dev; in ieee802154_start_req() local
305 if (!info->attrs[IEEE802154_ATTR_COORD_PAN_ID] || in ieee802154_start_req()
306 !info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR] || in ieee802154_start_req()
307 !info->attrs[IEEE802154_ATTR_CHANNEL] || in ieee802154_start_req()
308 !info->attrs[IEEE802154_ATTR_BCN_ORD] || in ieee802154_start_req()
309 !info->attrs[IEEE802154_ATTR_SF_ORD] || in ieee802154_start_req()
310 !info->attrs[IEEE802154_ATTR_PAN_COORD] || in ieee802154_start_req()
311 !info->attrs[IEEE802154_ATTR_BAT_EXT] || in ieee802154_start_req()
312 !info->attrs[IEEE802154_ATTR_COORD_REALIGN] in ieee802154_start_req()
316 dev = ieee802154_nl_get_dev(info); in ieee802154_start_req()
317 if (!dev) in ieee802154_start_req()
320 if (netif_running(dev)) in ieee802154_start_req()
323 if (!ieee802154_mlme_ops(dev)->start_req) { in ieee802154_start_req()
330 info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR]); in ieee802154_start_req()
332 info->attrs[IEEE802154_ATTR_COORD_PAN_ID]); in ieee802154_start_req()
334 channel = nla_get_u8(info->attrs[IEEE802154_ATTR_CHANNEL]); in ieee802154_start_req()
335 bcn_ord = nla_get_u8(info->attrs[IEEE802154_ATTR_BCN_ORD]); in ieee802154_start_req()
336 sf_ord = nla_get_u8(info->attrs[IEEE802154_ATTR_SF_ORD]); in ieee802154_start_req()
337 pan_coord = nla_get_u8(info->attrs[IEEE802154_ATTR_PAN_COORD]); in ieee802154_start_req()
338 blx = nla_get_u8(info->attrs[IEEE802154_ATTR_BAT_EXT]); in ieee802154_start_req()
339 coord_realign = nla_get_u8(info->attrs[IEEE802154_ATTR_COORD_REALIGN]); in ieee802154_start_req()
341 if (info->attrs[IEEE802154_ATTR_PAGE]) in ieee802154_start_req()
342 page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]); in ieee802154_start_req()
347 ieee802154_nl_start_confirm(dev, IEEE802154_NO_SHORT_ADDRESS); in ieee802154_start_req()
348 dev_put(dev); in ieee802154_start_req()
353 ret = ieee802154_mlme_ops(dev)->start_req(dev, &addr, channel, page, in ieee802154_start_req()
360 ieee802154_nl_start_confirm(dev, IEEE802154_SUCCESS); in ieee802154_start_req()
363 dev_put(dev); in ieee802154_start_req()
369 struct net_device *dev; in ieee802154_scan_req() local
376 if (!info->attrs[IEEE802154_ATTR_SCAN_TYPE] || in ieee802154_scan_req()
377 !info->attrs[IEEE802154_ATTR_CHANNELS] || in ieee802154_scan_req()
378 !info->attrs[IEEE802154_ATTR_DURATION]) in ieee802154_scan_req()
381 dev = ieee802154_nl_get_dev(info); in ieee802154_scan_req()
382 if (!dev) in ieee802154_scan_req()
384 if (!ieee802154_mlme_ops(dev)->scan_req) in ieee802154_scan_req()
387 type = nla_get_u8(info->attrs[IEEE802154_ATTR_SCAN_TYPE]); in ieee802154_scan_req()
388 channels = nla_get_u32(info->attrs[IEEE802154_ATTR_CHANNELS]); in ieee802154_scan_req()
389 duration = nla_get_u8(info->attrs[IEEE802154_ATTR_DURATION]); in ieee802154_scan_req()
391 if (info->attrs[IEEE802154_ATTR_PAGE]) in ieee802154_scan_req()
392 page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]); in ieee802154_scan_req()
396 ret = ieee802154_mlme_ops(dev)->scan_req(dev, type, channels, in ieee802154_scan_req()
400 dev_put(dev); in ieee802154_scan_req()
410 struct net_device *dev = NULL; in ieee802154_list_iface() local
415 dev = ieee802154_nl_get_dev(info); in ieee802154_list_iface()
416 if (!dev) in ieee802154_list_iface()
424 0, dev); in ieee802154_list_iface()
428 dev_put(dev); in ieee802154_list_iface()
434 dev_put(dev); in ieee802154_list_iface()
441 struct net_device *dev; in ieee802154_dump_iface() local
448 for_each_netdev(net, dev) { in ieee802154_dump_iface()
449 if (idx < s_idx || dev->type != ARPHRD_IEEE802154) in ieee802154_dump_iface()
454 NLM_F_MULTI, dev) < 0) in ieee802154_dump_iface()
466 struct net_device *dev = NULL; in ieee802154_set_macparams() local
474 dev = ieee802154_nl_get_dev(info); in ieee802154_set_macparams()
475 if (!dev) in ieee802154_set_macparams()
478 ops = ieee802154_mlme_ops(dev); in ieee802154_set_macparams()
485 if (netif_running(dev)) { in ieee802154_set_macparams()
490 if (!info->attrs[IEEE802154_ATTR_LBT_ENABLED] && in ieee802154_set_macparams()
491 !info->attrs[IEEE802154_ATTR_CCA_MODE] && in ieee802154_set_macparams()
492 !info->attrs[IEEE802154_ATTR_CCA_ED_LEVEL] && in ieee802154_set_macparams()
493 !info->attrs[IEEE802154_ATTR_CSMA_RETRIES] && in ieee802154_set_macparams()
494 !info->attrs[IEEE802154_ATTR_CSMA_MIN_BE] && in ieee802154_set_macparams()
495 !info->attrs[IEEE802154_ATTR_CSMA_MAX_BE] && in ieee802154_set_macparams()
496 !info->attrs[IEEE802154_ATTR_FRAME_RETRIES]) in ieee802154_set_macparams()
499 phy = dev->ieee802154_ptr->wpan_phy; in ieee802154_set_macparams()
500 get_device(&phy->dev); in ieee802154_set_macparams()
503 ops->get_mac_params(dev, ¶ms); in ieee802154_set_macparams()
505 if (info->attrs[IEEE802154_ATTR_TXPOWER]) in ieee802154_set_macparams()
506 params.transmit_power = nla_get_s8(info->attrs[IEEE802154_ATTR_TXPOWER]) * 100; in ieee802154_set_macparams()
508 if (info->attrs[IEEE802154_ATTR_LBT_ENABLED]) in ieee802154_set_macparams()
509 params.lbt = nla_get_u8(info->attrs[IEEE802154_ATTR_LBT_ENABLED]); in ieee802154_set_macparams()
511 if (info->attrs[IEEE802154_ATTR_CCA_MODE]) in ieee802154_set_macparams()
512 params.cca.mode = nla_get_u8(info->attrs[IEEE802154_ATTR_CCA_MODE]); in ieee802154_set_macparams()
514 if (info->attrs[IEEE802154_ATTR_CCA_ED_LEVEL]) in ieee802154_set_macparams()
515 params.cca_ed_level = nla_get_s32(info->attrs[IEEE802154_ATTR_CCA_ED_LEVEL]) * 100; in ieee802154_set_macparams()
517 if (info->attrs[IEEE802154_ATTR_CSMA_RETRIES]) in ieee802154_set_macparams()
518 params.csma_retries = nla_get_u8(info->attrs[IEEE802154_ATTR_CSMA_RETRIES]); in ieee802154_set_macparams()
520 if (info->attrs[IEEE802154_ATTR_CSMA_MIN_BE]) in ieee802154_set_macparams()
521 params.min_be = nla_get_u8(info->attrs[IEEE802154_ATTR_CSMA_MIN_BE]); in ieee802154_set_macparams()
523 if (info->attrs[IEEE802154_ATTR_CSMA_MAX_BE]) in ieee802154_set_macparams()
524 params.max_be = nla_get_u8(info->attrs[IEEE802154_ATTR_CSMA_MAX_BE]); in ieee802154_set_macparams()
526 if (info->attrs[IEEE802154_ATTR_FRAME_RETRIES]) in ieee802154_set_macparams()
527 params.frame_retries = nla_get_s8(info->attrs[IEEE802154_ATTR_FRAME_RETRIES]); in ieee802154_set_macparams()
529 rc = ops->set_mac_params(dev, ¶ms); in ieee802154_set_macparams()
533 dev_put(dev); in ieee802154_set_macparams()
538 dev_put(dev); in ieee802154_set_macparams()
548 if (!info->attrs[IEEE802154_ATTR_LLSEC_KEY_MODE]) in ieee802154_llsec_parse_key_id()
551 desc->mode = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_KEY_MODE]); in ieee802154_llsec_parse_key_id()
554 if (!info->attrs[IEEE802154_ATTR_PAN_ID]) in ieee802154_llsec_parse_key_id()
557 desc->device_addr.pan_id = nla_get_shortaddr(info->attrs[IEEE802154_ATTR_PAN_ID]); in ieee802154_llsec_parse_key_id()
559 if (info->attrs[IEEE802154_ATTR_SHORT_ADDR]) { in ieee802154_llsec_parse_key_id()
561 desc->device_addr.short_addr = nla_get_shortaddr(info->attrs[IEEE802154_ATTR_SHORT_ADDR]); in ieee802154_llsec_parse_key_id()
563 if (!info->attrs[IEEE802154_ATTR_HW_ADDR]) in ieee802154_llsec_parse_key_id()
567 desc->device_addr.extended_addr = nla_get_hwaddr(info->attrs[IEEE802154_ATTR_HW_ADDR]); in ieee802154_llsec_parse_key_id()
572 !info->attrs[IEEE802154_ATTR_LLSEC_KEY_ID]) in ieee802154_llsec_parse_key_id()
576 !info->attrs[IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT]) in ieee802154_llsec_parse_key_id()
580 !info->attrs[IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED]) in ieee802154_llsec_parse_key_id()
584 desc->id = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_KEY_ID]); in ieee802154_llsec_parse_key_id()
589 u32 source = nla_get_u32(info->attrs[IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT]); in ieee802154_llsec_parse_key_id()
595 desc->extended_source = nla_get_hwaddr(info->attrs[IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED]); in ieee802154_llsec_parse_key_id()
627 nla_put_u8(msg, IEEE802154_ATTR_LLSEC_KEY_ID, desc->id)) in ieee802154_llsec_fill_key_id()
646 struct net_device *dev = NULL; in ieee802154_llsec_getparams() local
654 dev = ieee802154_nl_get_dev(info); in ieee802154_llsec_getparams()
655 if (!dev) in ieee802154_llsec_getparams()
658 ops = ieee802154_mlme_ops(dev); in ieee802154_llsec_getparams()
673 rc = ops->llsec->get_params(dev, ¶ms); in ieee802154_llsec_getparams()
677 if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) || in ieee802154_llsec_getparams()
678 nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) || in ieee802154_llsec_getparams()
688 dev_put(dev); in ieee802154_llsec_getparams()
694 dev_put(dev); in ieee802154_llsec_getparams()
700 struct net_device *dev = NULL; in ieee802154_llsec_setparams() local
708 dev = ieee802154_nl_get_dev(info); in ieee802154_llsec_setparams()
709 if (!dev) in ieee802154_llsec_setparams()
712 if (!info->attrs[IEEE802154_ATTR_LLSEC_ENABLED] && in ieee802154_llsec_setparams()
713 !info->attrs[IEEE802154_ATTR_LLSEC_KEY_MODE] && in ieee802154_llsec_setparams()
714 !info->attrs[IEEE802154_ATTR_LLSEC_SECLEVEL]) in ieee802154_llsec_setparams()
717 ops = ieee802154_mlme_ops(dev); in ieee802154_llsec_setparams()
723 if (info->attrs[IEEE802154_ATTR_LLSEC_SECLEVEL] && in ieee802154_llsec_setparams()
724 nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_SECLEVEL]) > 7) in ieee802154_llsec_setparams()
727 if (info->attrs[IEEE802154_ATTR_LLSEC_ENABLED]) { in ieee802154_llsec_setparams()
728 params.enabled = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_ENABLED]); in ieee802154_llsec_setparams()
732 if (info->attrs[IEEE802154_ATTR_LLSEC_KEY_MODE]) { in ieee802154_llsec_setparams()
739 if (info->attrs[IEEE802154_ATTR_LLSEC_SECLEVEL]) { in ieee802154_llsec_setparams()
740 params.out_level = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_SECLEVEL]); in ieee802154_llsec_setparams()
744 if (info->attrs[IEEE802154_ATTR_LLSEC_FRAME_COUNTER]) { in ieee802154_llsec_setparams()
745 u32 fc = nla_get_u32(info->attrs[IEEE802154_ATTR_LLSEC_FRAME_COUNTER]); in ieee802154_llsec_setparams()
751 rc = ops->llsec->set_params(dev, ¶ms, changed); in ieee802154_llsec_setparams()
753 dev_put(dev); in ieee802154_llsec_setparams()
757 dev_put(dev); in ieee802154_llsec_setparams()
766 struct net_device *dev; member
776 struct net_device *dev; in ieee802154_llsec_dump_table() local
782 for_each_netdev(net, dev) { in ieee802154_llsec_dump_table()
783 if (idx < first_dev || dev->type != ARPHRD_IEEE802154) in ieee802154_llsec_dump_table()
786 data.ops = ieee802154_mlme_ops(dev); in ieee802154_llsec_dump_table()
793 data.dev = dev; in ieee802154_llsec_dump_table()
797 data.ops->llsec->lock_table(dev); in ieee802154_llsec_dump_table()
798 data.ops->llsec->get_table(data.dev, &data.table); in ieee802154_llsec_dump_table()
800 data.ops->llsec->unlock_table(dev); in ieee802154_llsec_dump_table()
817 struct net_device *dev = NULL; in ieee802154_nl_llsec_change() local
820 dev = ieee802154_nl_get_dev(info); in ieee802154_nl_llsec_change()
821 if (!dev) in ieee802154_nl_llsec_change()
824 if (!ieee802154_mlme_ops(dev)->llsec) in ieee802154_nl_llsec_change()
827 rc = fn(dev, info); in ieee802154_nl_llsec_change()
829 dev_put(dev); in ieee802154_nl_llsec_change()
842 if (!info->attrs[IEEE802154_ATTR_LLSEC_KEY_USAGE_FRAME_TYPES] || in ieee802154_llsec_parse_key()
843 !info->attrs[IEEE802154_ATTR_LLSEC_KEY_BYTES]) in ieee802154_llsec_parse_key()
846 frames = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_KEY_USAGE_FRAME_TYPES]); in ieee802154_llsec_parse_key()
848 !info->attrs[IEEE802154_ATTR_LLSEC_KEY_USAGE_COMMANDS]) in ieee802154_llsec_parse_key()
851 if (info->attrs[IEEE802154_ATTR_LLSEC_KEY_USAGE_COMMANDS]) { in ieee802154_llsec_parse_key()
853 info->attrs[IEEE802154_ATTR_LLSEC_KEY_USAGE_COMMANDS], in ieee802154_llsec_parse_key()
866 nla_memcpy(key->key, info->attrs[IEEE802154_ATTR_LLSEC_KEY_BYTES], in ieee802154_llsec_parse_key()
872 static int llsec_add_key(struct net_device *dev, struct genl_info *info) in llsec_add_key() argument
874 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_add_key()
876 struct ieee802154_llsec_key_id id; in llsec_add_key() local
879 ieee802154_llsec_parse_key_id(info, &id)) in llsec_add_key()
882 return ops->llsec->add_key(dev, &id, &key); in llsec_add_key()
894 static int llsec_remove_key(struct net_device *dev, struct genl_info *info) in llsec_remove_key() argument
896 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_remove_key()
897 struct ieee802154_llsec_key_id id; in llsec_remove_key() local
899 if (ieee802154_llsec_parse_key_id(info, &id)) in llsec_remove_key()
902 return ops->llsec->del_key(dev, &id); in llsec_remove_key()
913 const struct net_device *dev) in ieee802154_nl_fill_key() argument
923 if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) || in ieee802154_nl_fill_key()
924 nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) || in ieee802154_nl_fill_key()
925 ieee802154_llsec_fill_key_id(msg, &key->id) || in ieee802154_nl_fill_key()
961 data->nlmsg_seq, pos, data->dev)) { in llsec_iter_keys()
979 struct ieee802154_llsec_device *dev) in llsec_parse_dev() argument
981 memset(dev, 0, sizeof(*dev)); in llsec_parse_dev()
983 if (!info->attrs[IEEE802154_ATTR_LLSEC_FRAME_COUNTER] || in llsec_parse_dev()
984 !info->attrs[IEEE802154_ATTR_HW_ADDR] || in llsec_parse_dev()
985 !info->attrs[IEEE802154_ATTR_LLSEC_DEV_OVERRIDE] || in llsec_parse_dev()
986 !info->attrs[IEEE802154_ATTR_LLSEC_DEV_KEY_MODE] || in llsec_parse_dev()
987 (!!info->attrs[IEEE802154_ATTR_PAN_ID] != in llsec_parse_dev()
988 !!info->attrs[IEEE802154_ATTR_SHORT_ADDR])) in llsec_parse_dev()
991 if (info->attrs[IEEE802154_ATTR_PAN_ID]) { in llsec_parse_dev()
992 dev->pan_id = nla_get_shortaddr(info->attrs[IEEE802154_ATTR_PAN_ID]); in llsec_parse_dev()
993 dev->short_addr = nla_get_shortaddr(info->attrs[IEEE802154_ATTR_SHORT_ADDR]); in llsec_parse_dev()
995 dev->short_addr = cpu_to_le16(IEEE802154_ADDR_UNDEF); in llsec_parse_dev()
998 dev->hwaddr = nla_get_hwaddr(info->attrs[IEEE802154_ATTR_HW_ADDR]); in llsec_parse_dev()
999 dev->frame_counter = nla_get_u32(info->attrs[IEEE802154_ATTR_LLSEC_FRAME_COUNTER]); in llsec_parse_dev()
1000 dev->seclevel_exempt = !!nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_DEV_OVERRIDE]); in llsec_parse_dev()
1001 dev->key_mode = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_DEV_KEY_MODE]); in llsec_parse_dev()
1003 if (dev->key_mode >= __IEEE802154_LLSEC_DEVKEY_MAX) in llsec_parse_dev()
1009 static int llsec_add_dev(struct net_device *dev, struct genl_info *info) in llsec_add_dev() argument
1011 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_add_dev()
1017 return ops->llsec->add_dev(dev, &desc); in llsec_add_dev()
1029 static int llsec_del_dev(struct net_device *dev, struct genl_info *info) in llsec_del_dev() argument
1031 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_del_dev()
1034 if (!info->attrs[IEEE802154_ATTR_HW_ADDR]) in llsec_del_dev()
1037 devaddr = nla_get_hwaddr(info->attrs[IEEE802154_ATTR_HW_ADDR]); in llsec_del_dev()
1039 return ops->llsec->del_dev(dev, devaddr); in llsec_del_dev()
1050 const struct net_device *dev) in ieee802154_nl_fill_dev() argument
1059 if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) || in ieee802154_nl_fill_dev()
1060 nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) || in ieee802154_nl_fill_dev()
1092 data->nlmsg_seq, pos, data->dev)) { in llsec_iter_devs()
1108 static int llsec_add_devkey(struct net_device *dev, struct genl_info *info) in llsec_add_devkey() argument
1110 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_add_devkey()
1114 if (!info->attrs[IEEE802154_ATTR_LLSEC_FRAME_COUNTER] || in llsec_add_devkey()
1115 !info->attrs[IEEE802154_ATTR_HW_ADDR] || in llsec_add_devkey()
1119 devaddr = nla_get_hwaddr(info->attrs[IEEE802154_ATTR_HW_ADDR]); in llsec_add_devkey()
1120 key.frame_counter = nla_get_u32(info->attrs[IEEE802154_ATTR_LLSEC_FRAME_COUNTER]); in llsec_add_devkey()
1122 return ops->llsec->add_devkey(dev, devaddr, &key); in llsec_add_devkey()
1134 static int llsec_del_devkey(struct net_device *dev, struct genl_info *info) in llsec_del_devkey() argument
1136 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_del_devkey()
1140 if (!info->attrs[IEEE802154_ATTR_HW_ADDR] || in llsec_del_devkey()
1144 devaddr = nla_get_hwaddr(info->attrs[IEEE802154_ATTR_HW_ADDR]); in llsec_del_devkey()
1146 return ops->llsec->del_devkey(dev, devaddr, &key); in llsec_del_devkey()
1158 const struct net_device *dev) in ieee802154_nl_fill_devkey() argument
1167 if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) || in ieee802154_nl_fill_devkey()
1168 nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) || in ieee802154_nl_fill_devkey()
1204 data->dev)) { in llsec_iter_devkeys()
1229 if (!info->attrs[IEEE802154_ATTR_LLSEC_FRAME_TYPE] || in llsec_parse_seclevel()
1230 !info->attrs[IEEE802154_ATTR_LLSEC_SECLEVELS] || in llsec_parse_seclevel()
1231 !info->attrs[IEEE802154_ATTR_LLSEC_DEV_OVERRIDE]) in llsec_parse_seclevel()
1234 sl->frame_type = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_FRAME_TYPE]); in llsec_parse_seclevel()
1236 if (!info->attrs[IEEE802154_ATTR_LLSEC_CMD_FRAME_ID]) in llsec_parse_seclevel()
1239 sl->cmd_frame_id = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_CMD_FRAME_ID]); in llsec_parse_seclevel()
1242 sl->sec_levels = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_SECLEVELS]); in llsec_parse_seclevel()
1243 sl->device_override = nla_get_u8(info->attrs[IEEE802154_ATTR_LLSEC_DEV_OVERRIDE]); in llsec_parse_seclevel()
1248 static int llsec_add_seclevel(struct net_device *dev, struct genl_info *info) in llsec_add_seclevel() argument
1250 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_add_seclevel()
1256 return ops->llsec->add_seclevel(dev, &sl); in llsec_add_seclevel()
1268 static int llsec_del_seclevel(struct net_device *dev, struct genl_info *info) in llsec_del_seclevel() argument
1270 struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); in llsec_del_seclevel()
1276 return ops->llsec->del_seclevel(dev, &sl); in llsec_del_seclevel()
1287 const struct net_device *dev) in ieee802154_nl_fill_seclevel() argument
1296 if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) || in ieee802154_nl_fill_seclevel()
1297 nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) || in ieee802154_nl_fill_seclevel()
1329 data->dev)) { in llsec_iter_seclevels()