Lines Matching defs:rdev
20 #include "rdev-ops.h"
41 struct cfg802154_registered_device *rdev;
61 list_for_each_entry(rdev, &cfg802154_rdev_list, list) {
64 if (wpan_phy_net(&rdev->wpan_phy) != netns)
67 if (have_wpan_dev_id && rdev->wpan_phy_idx != wpan_phy_idx)
70 list_for_each_entry(wpan_dev, &rdev->wpan_dev_list, list) {
96 struct cfg802154_registered_device *rdev = NULL, *tmp;
107 rdev = cfg802154_rdev_by_wpan_phy_idx(
128 if (rdev && tmp != rdev)
130 rdev = tmp;
150 if (rdev && tmp != rdev)
153 rdev = tmp;
157 if (!rdev)
160 if (netns != wpan_phy_net(&rdev->wpan_phy))
163 return rdev;
255 struct cfg802154_registered_device **rdev,
270 *rdev = wpan_phy_to_rdev((*wpan_dev)->wpan_phy);
272 cb->args[0] = (*rdev)->wpan_phy_idx + 1;
283 *rdev = wpan_phy_to_rdev(wpan_phy);
286 list_for_each_entry(tmp, &(*rdev)->wpan_dev_list, list) {
306 nl802154_finish_wpan_dev_dump(struct cfg802154_registered_device *rdev)
343 nl802154_send_wpan_phy_channels(struct cfg802154_registered_device *rdev,
355 rdev->wpan_phy.supported.channels[page]))
365 struct cfg802154_registered_device *rdev)
367 const struct wpan_phy_supported *caps = &rdev->wpan_phy.supported;
388 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL) {
404 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER) {
420 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE) {
450 static int nl802154_send_wpan_phy(struct cfg802154_registered_device *rdev,
463 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx) ||
465 wpan_phy_name(&rdev->wpan_phy)) ||
477 rdev->wpan_phy.current_page) ||
479 rdev->wpan_phy.current_channel))
485 if (nl802154_send_wpan_phy_channels(rdev, msg))
489 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE) {
491 rdev->wpan_phy.cca.mode))
494 if (rdev->wpan_phy.cca.mode == NL802154_CCA_ENERGY_CARRIER) {
496 rdev->wpan_phy.cca.opt))
501 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER) {
503 rdev->wpan_phy.transmit_power))
507 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL) {
509 rdev->wpan_phy.cca_ed_level))
513 if (nl802154_put_capabilities(msg, rdev))
523 if (rdev->ops->op) { \
541 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER)
544 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL)
547 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE)
581 struct cfg802154_registered_device *rdev;
588 rdev = wpan_phy_to_rdev(
590 state->filter_wpan_phy = rdev->wpan_phy_idx;
602 struct cfg802154_registered_device *rdev;
621 list_for_each_entry(rdev, &cfg802154_rdev_list, list) {
622 if (!net_eq(wpan_phy_net(&rdev->wpan_phy), sock_net(skb->sk)))
627 state->filter_wpan_phy != rdev->wpan_phy_idx)
630 ret = nl802154_send_wpan_phy(rdev,
663 struct cfg802154_registered_device *rdev = info->user_ptr[0];
669 if (nl802154_send_wpan_phy(rdev, NL802154_CMD_NEW_WPAN_PHY, msg,
757 struct cfg802154_registered_device *rdev,
764 ret = rdev_get_llsec_params(rdev, wpan_dev, ¶ms);
790 struct cfg802154_registered_device *rdev,
806 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx) ||
811 rdev->devlist_generation ^
845 if (nl802154_get_llsec_params(msg, rdev, wpan_dev) < 0)
866 struct cfg802154_registered_device *rdev;
870 list_for_each_entry(rdev, &cfg802154_rdev_list, list) {
871 if (!net_eq(wpan_phy_net(&rdev->wpan_phy), sock_net(skb->sk)))
879 list_for_each_entry(wpan_dev, &rdev->wpan_dev_list, list) {
886 rdev, wpan_dev) < 0) {
906 struct cfg802154_registered_device *rdev = info->user_ptr[0];
914 rdev, wdev) < 0) {
924 struct cfg802154_registered_device *rdev = info->user_ptr[0];
938 !(rdev->wpan_phy.supported.iftypes & BIT(type)))
945 if (!rdev->ops->add_virtual_intf)
948 return rdev_add_virtual_intf(rdev,
955 struct cfg802154_registered_device *rdev = info->user_ptr[0];
958 if (!rdev->ops->del_virtual_intf)
970 return rdev_del_virtual_intf(rdev, wpan_dev);
975 struct cfg802154_registered_device *rdev = info->user_ptr[0];
986 if (!ieee802154_chan_is_valid(&rdev->wpan_phy, page, channel))
989 return rdev_set_channel(rdev, page, channel);
994 struct cfg802154_registered_device *rdev = info->user_ptr[0];
997 if (!(rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE))
1007 !(rdev->wpan_phy.supported.cca_modes & BIT(cca.mode)))
1016 !(rdev->wpan_phy.supported.cca_opts & BIT(cca.opt)))
1020 return rdev_set_cca_mode(rdev, &cca);
1025 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1029 if (!(rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL))
1037 for (i = 0; i < rdev->wpan_phy.supported.cca_ed_levels_size; i++) {
1038 if (ed_level == rdev->wpan_phy.supported.cca_ed_levels[i])
1039 return rdev_set_cca_ed_level(rdev, ed_level);
1047 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1051 if (!(rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER))
1059 for (i = 0; i < rdev->wpan_phy.supported.tx_powers_size; i++) {
1060 if (power == rdev->wpan_phy.supported.tx_powers[i])
1061 return rdev_set_tx_power(rdev, power);
1069 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1100 return rdev_set_pan_id(rdev, wpan_dev, pan_id);
1105 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1141 return rdev_set_short_addr(rdev, wpan_dev, short_addr);
1147 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1164 if (min_be < rdev->wpan_phy.supported.min_minbe ||
1165 min_be > rdev->wpan_phy.supported.max_minbe ||
1166 max_be < rdev->wpan_phy.supported.min_maxbe ||
1167 max_be > rdev->wpan_phy.supported.max_maxbe ||
1171 return rdev_set_backoff_exponent(rdev, wpan_dev, min_be, max_be);
1177 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1193 if (max_csma_backoffs < rdev->wpan_phy.supported.min_csma_backoffs ||
1194 max_csma_backoffs > rdev->wpan_phy.supported.max_csma_backoffs)
1197 return rdev_set_max_csma_backoffs(rdev, wpan_dev, max_csma_backoffs);
1203 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1218 if (max_frame_retries < rdev->wpan_phy.supported.min_frame_retries ||
1219 max_frame_retries > rdev->wpan_phy.supported.max_frame_retries)
1222 return rdev_set_max_frame_retries(rdev, wpan_dev, max_frame_retries);
1227 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1243 if (!wpan_phy_supported_bool(mode, rdev->wpan_phy.supported.lbt))
1246 return rdev_set_lbt_mode(rdev, wpan_dev, mode);
1252 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1268 return rdev_set_ackreq_default(rdev, wpan_dev, ackreq);
1273 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1295 if (!net_eq(wpan_phy_net(&rdev->wpan_phy), net))
1296 err = cfg802154_switch_netns(rdev, net);
1303 struct cfg802154_registered_device *rdev,
1315 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx))
1379 struct cfg802154_registered_device *rdev = wpan_phy_to_rdev(wpan_phy);
1387 ret = nl802154_prep_scan_event_msg(msg, rdev, wpan_dev, 0, 0, 0,
1402 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1405 struct wpan_phy *wpan_phy = &rdev->wpan_phy;
1462 err = rdev_trigger_scan(rdev, request);
1477 struct cfg802154_registered_device *rdev,
1487 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx))
1512 static int nl802154_send_scan_msg(struct cfg802154_registered_device *rdev,
1522 ret = nl802154_prep_scan_msg(msg, rdev, wpan_dev, 0, 0, 0, cmd, arg);
1529 wpan_phy_net(&rdev->wpan_phy), msg, 0,
1535 struct cfg802154_registered_device *rdev = wpan_phy_to_rdev(wpan_phy);
1539 err = nl802154_send_scan_msg(rdev, wpan_dev, NL802154_CMD_TRIGGER_SCAN, 0);
1550 struct cfg802154_registered_device *rdev = wpan_phy_to_rdev(wpan_phy);
1554 err = nl802154_send_scan_msg(rdev, wpan_dev, NL802154_CMD_SCAN_DONE, reason);
1564 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1569 return rdev_abort_scan(rdev, wpan_dev);
1575 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1578 struct wpan_phy *wpan_phy = &rdev->wpan_phy;
1610 err = rdev_send_beacons(rdev, request);
1633 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1638 return rdev_stop_beacons(rdev, wpan_dev);
1743 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1786 return rdev_set_llsec_params(rdev, wpan_dev, ¶ms, changed);
1791 struct cfg802154_registered_device *rdev,
1849 struct cfg802154_registered_device *rdev = NULL;
1855 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
1869 rdev_lock_llsec_table(rdev, wpan_dev);
1870 rdev_get_llsec_table(rdev, wpan_dev, &table);
1880 rdev, wpan_dev->netdev, key) < 0) {
1883 rdev_unlock_llsec_table(rdev, wpan_dev);
1891 rdev_unlock_llsec_table(rdev, wpan_dev);
1894 nl802154_finish_wpan_dev_dump(rdev);
1910 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1959 return rdev_add_llsec_key(rdev, wpan_dev, &id, &key);
1964 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1980 return rdev_del_llsec_key(rdev, wpan_dev, &id);
1985 struct cfg802154_registered_device *rdev,
2028 struct cfg802154_registered_device *rdev = NULL;
2034 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
2048 rdev_lock_llsec_table(rdev, wpan_dev);
2049 rdev_get_llsec_table(rdev, wpan_dev, &table);
2059 rdev, wpan_dev->netdev, dev) < 0) {
2062 rdev_unlock_llsec_table(rdev, wpan_dev);
2070 rdev_unlock_llsec_table(rdev, wpan_dev);
2073 nl802154_finish_wpan_dev_dump(rdev);
2124 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2136 return rdev_add_device(rdev, wpan_dev, &dev_desc);
2141 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2158 return rdev_del_device(rdev, wpan_dev, extended_addr);
2163 struct cfg802154_registered_device *rdev,
2208 struct cfg802154_registered_device *rdev = NULL;
2215 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
2229 rdev_lock_llsec_table(rdev, wpan_dev);
2230 rdev_get_llsec_table(rdev, wpan_dev, &table);
2243 NLM_F_MULTI, rdev,
2249 rdev_unlock_llsec_table(rdev, wpan_dev);
2258 rdev_unlock_llsec_table(rdev, wpan_dev);
2261 nl802154_finish_wpan_dev_dump(rdev);
2274 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2303 return rdev_add_devkey(rdev, wpan_dev, extended_addr, &key);
2308 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2334 return rdev_del_devkey(rdev, wpan_dev, extended_addr, &key);
2339 struct cfg802154_registered_device *rdev,
2382 struct cfg802154_registered_device *rdev = NULL;
2388 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
2402 rdev_lock_llsec_table(rdev, wpan_dev);
2403 rdev_get_llsec_table(rdev, wpan_dev, &table);
2413 rdev, wpan_dev->netdev, sl) < 0) {
2416 rdev_unlock_llsec_table(rdev, wpan_dev);
2424 rdev_unlock_llsec_table(rdev, wpan_dev);
2427 nl802154_finish_wpan_dev_dump(rdev);
2476 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2488 return rdev_add_seclevel(rdev, wpan_dev, &sl);
2494 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2506 return rdev_del_seclevel(rdev, wpan_dev, &sl);
2520 struct cfg802154_registered_device *rdev;
2529 rdev = cfg802154_get_dev_from_info(genl_info_net(info), info);
2530 if (IS_ERR(rdev)) {
2533 return PTR_ERR(rdev);
2535 info->user_ptr[0] = rdev;
2548 rdev = wpan_phy_to_rdev(wpan_dev->wpan_phy);
2573 info->user_ptr[0] = rdev;