Lines Matching defs:rdev
20 #include "rdev-ops.h"
39 struct cfg802154_registered_device *rdev;
59 list_for_each_entry(rdev, &cfg802154_rdev_list, list) {
62 if (wpan_phy_net(&rdev->wpan_phy) != netns)
65 if (have_wpan_dev_id && rdev->wpan_phy_idx != wpan_phy_idx)
68 list_for_each_entry(wpan_dev, &rdev->wpan_dev_list, list) {
94 struct cfg802154_registered_device *rdev = NULL, *tmp;
105 rdev = cfg802154_rdev_by_wpan_phy_idx(
126 if (rdev && tmp != rdev)
128 rdev = tmp;
148 if (rdev && tmp != rdev)
151 rdev = tmp;
155 if (!rdev)
158 if (netns != wpan_phy_net(&rdev->wpan_phy))
161 return rdev;
236 struct cfg802154_registered_device **rdev,
251 *rdev = wpan_phy_to_rdev((*wpan_dev)->wpan_phy);
253 cb->args[0] = (*rdev)->wpan_phy_idx + 1;
264 *rdev = wpan_phy_to_rdev(wpan_phy);
267 list_for_each_entry(tmp, &(*rdev)->wpan_dev_list, list) {
287 nl802154_finish_wpan_dev_dump(struct cfg802154_registered_device *rdev)
324 nl802154_send_wpan_phy_channels(struct cfg802154_registered_device *rdev,
336 rdev->wpan_phy.supported.channels[page]))
346 struct cfg802154_registered_device *rdev)
348 const struct wpan_phy_supported *caps = &rdev->wpan_phy.supported;
369 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL) {
385 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER) {
401 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE) {
431 static int nl802154_send_wpan_phy(struct cfg802154_registered_device *rdev,
444 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx) ||
446 wpan_phy_name(&rdev->wpan_phy)) ||
458 rdev->wpan_phy.current_page) ||
460 rdev->wpan_phy.current_channel))
466 if (nl802154_send_wpan_phy_channels(rdev, msg))
470 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE) {
472 rdev->wpan_phy.cca.mode))
475 if (rdev->wpan_phy.cca.mode == NL802154_CCA_ENERGY_CARRIER) {
477 rdev->wpan_phy.cca.opt))
482 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER) {
484 rdev->wpan_phy.transmit_power))
488 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL) {
490 rdev->wpan_phy.cca_ed_level))
494 if (nl802154_put_capabilities(msg, rdev))
504 if (rdev->ops->op) { \
522 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER)
525 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL)
528 if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE)
562 struct cfg802154_registered_device *rdev;
569 rdev = wpan_phy_to_rdev(
571 state->filter_wpan_phy = rdev->wpan_phy_idx;
583 struct cfg802154_registered_device *rdev;
602 list_for_each_entry(rdev, &cfg802154_rdev_list, list) {
603 if (!net_eq(wpan_phy_net(&rdev->wpan_phy), sock_net(skb->sk)))
608 state->filter_wpan_phy != rdev->wpan_phy_idx)
611 ret = nl802154_send_wpan_phy(rdev,
644 struct cfg802154_registered_device *rdev = info->user_ptr[0];
650 if (nl802154_send_wpan_phy(rdev, NL802154_CMD_NEW_WPAN_PHY, msg,
738 struct cfg802154_registered_device *rdev,
745 ret = rdev_get_llsec_params(rdev, wpan_dev, ¶ms);
771 struct cfg802154_registered_device *rdev,
787 if (nla_put_u32(msg, NL802154_ATTR_WPAN_PHY, rdev->wpan_phy_idx) ||
792 rdev->devlist_generation ^
826 if (nl802154_get_llsec_params(msg, rdev, wpan_dev) < 0)
847 struct cfg802154_registered_device *rdev;
851 list_for_each_entry(rdev, &cfg802154_rdev_list, list) {
852 if (!net_eq(wpan_phy_net(&rdev->wpan_phy), sock_net(skb->sk)))
860 list_for_each_entry(wpan_dev, &rdev->wpan_dev_list, list) {
867 rdev, wpan_dev) < 0) {
887 struct cfg802154_registered_device *rdev = info->user_ptr[0];
895 rdev, wdev) < 0) {
905 struct cfg802154_registered_device *rdev = info->user_ptr[0];
919 !(rdev->wpan_phy.supported.iftypes & BIT(type)))
926 if (!rdev->ops->add_virtual_intf)
929 return rdev_add_virtual_intf(rdev,
936 struct cfg802154_registered_device *rdev = info->user_ptr[0];
939 if (!rdev->ops->del_virtual_intf)
951 return rdev_del_virtual_intf(rdev, wpan_dev);
956 struct cfg802154_registered_device *rdev = info->user_ptr[0];
968 !(rdev->wpan_phy.supported.channels[page] & BIT(channel)))
971 return rdev_set_channel(rdev, page, channel);
976 struct cfg802154_registered_device *rdev = info->user_ptr[0];
979 if (!(rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_MODE))
989 !(rdev->wpan_phy.supported.cca_modes & BIT(cca.mode)))
998 !(rdev->wpan_phy.supported.cca_opts & BIT(cca.opt)))
1002 return rdev_set_cca_mode(rdev, &cca);
1007 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1011 if (!(rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL))
1019 for (i = 0; i < rdev->wpan_phy.supported.cca_ed_levels_size; i++) {
1020 if (ed_level == rdev->wpan_phy.supported.cca_ed_levels[i])
1021 return rdev_set_cca_ed_level(rdev, ed_level);
1029 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1033 if (!(rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER))
1041 for (i = 0; i < rdev->wpan_phy.supported.tx_powers_size; i++) {
1042 if (power == rdev->wpan_phy.supported.tx_powers[i])
1043 return rdev_set_tx_power(rdev, power);
1051 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1082 return rdev_set_pan_id(rdev, wpan_dev, pan_id);
1087 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1123 return rdev_set_short_addr(rdev, wpan_dev, short_addr);
1129 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1146 if (min_be < rdev->wpan_phy.supported.min_minbe ||
1147 min_be > rdev->wpan_phy.supported.max_minbe ||
1148 max_be < rdev->wpan_phy.supported.min_maxbe ||
1149 max_be > rdev->wpan_phy.supported.max_maxbe ||
1153 return rdev_set_backoff_exponent(rdev, wpan_dev, min_be, max_be);
1159 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1175 if (max_csma_backoffs < rdev->wpan_phy.supported.min_csma_backoffs ||
1176 max_csma_backoffs > rdev->wpan_phy.supported.max_csma_backoffs)
1179 return rdev_set_max_csma_backoffs(rdev, wpan_dev, max_csma_backoffs);
1185 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1200 if (max_frame_retries < rdev->wpan_phy.supported.min_frame_retries ||
1201 max_frame_retries > rdev->wpan_phy.supported.max_frame_retries)
1204 return rdev_set_max_frame_retries(rdev, wpan_dev, max_frame_retries);
1209 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1225 if (!wpan_phy_supported_bool(mode, rdev->wpan_phy.supported.lbt))
1228 return rdev_set_lbt_mode(rdev, wpan_dev, mode);
1234 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1250 return rdev_set_ackreq_default(rdev, wpan_dev, ackreq);
1255 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1277 if (!net_eq(wpan_phy_net(&rdev->wpan_phy), net))
1278 err = cfg802154_switch_netns(rdev, net);
1386 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1429 return rdev_set_llsec_params(rdev, wpan_dev, ¶ms, changed);
1434 struct cfg802154_registered_device *rdev,
1492 struct cfg802154_registered_device *rdev = NULL;
1498 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
1512 rdev_lock_llsec_table(rdev, wpan_dev);
1513 rdev_get_llsec_table(rdev, wpan_dev, &table);
1523 rdev, wpan_dev->netdev, key) < 0) {
1526 rdev_unlock_llsec_table(rdev, wpan_dev);
1534 rdev_unlock_llsec_table(rdev, wpan_dev);
1537 nl802154_finish_wpan_dev_dump(rdev);
1553 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1602 return rdev_add_llsec_key(rdev, wpan_dev, &id, &key);
1607 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1623 return rdev_del_llsec_key(rdev, wpan_dev, &id);
1628 struct cfg802154_registered_device *rdev,
1671 struct cfg802154_registered_device *rdev = NULL;
1677 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
1691 rdev_lock_llsec_table(rdev, wpan_dev);
1692 rdev_get_llsec_table(rdev, wpan_dev, &table);
1702 rdev, wpan_dev->netdev, dev) < 0) {
1705 rdev_unlock_llsec_table(rdev, wpan_dev);
1713 rdev_unlock_llsec_table(rdev, wpan_dev);
1716 nl802154_finish_wpan_dev_dump(rdev);
1767 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1779 return rdev_add_device(rdev, wpan_dev, &dev_desc);
1784 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1801 return rdev_del_device(rdev, wpan_dev, extended_addr);
1806 struct cfg802154_registered_device *rdev,
1851 struct cfg802154_registered_device *rdev = NULL;
1858 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
1872 rdev_lock_llsec_table(rdev, wpan_dev);
1873 rdev_get_llsec_table(rdev, wpan_dev, &table);
1886 NLM_F_MULTI, rdev,
1892 rdev_unlock_llsec_table(rdev, wpan_dev);
1901 rdev_unlock_llsec_table(rdev, wpan_dev);
1904 nl802154_finish_wpan_dev_dump(rdev);
1917 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1946 return rdev_add_devkey(rdev, wpan_dev, extended_addr, &key);
1951 struct cfg802154_registered_device *rdev = info->user_ptr[0];
1977 return rdev_del_devkey(rdev, wpan_dev, extended_addr, &key);
1982 struct cfg802154_registered_device *rdev,
2025 struct cfg802154_registered_device *rdev = NULL;
2031 err = nl802154_prepare_wpan_dev_dump(skb, cb, &rdev, &wpan_dev);
2045 rdev_lock_llsec_table(rdev, wpan_dev);
2046 rdev_get_llsec_table(rdev, wpan_dev, &table);
2056 rdev, wpan_dev->netdev, sl) < 0) {
2059 rdev_unlock_llsec_table(rdev, wpan_dev);
2067 rdev_unlock_llsec_table(rdev, wpan_dev);
2070 nl802154_finish_wpan_dev_dump(rdev);
2119 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2131 return rdev_add_seclevel(rdev, wpan_dev, &sl);
2137 struct cfg802154_registered_device *rdev = info->user_ptr[0];
2150 return rdev_del_seclevel(rdev, wpan_dev, &sl);
2167 struct cfg802154_registered_device *rdev;
2176 rdev = cfg802154_get_dev_from_info(genl_info_net(info), info);
2177 if (IS_ERR(rdev)) {
2180 return PTR_ERR(rdev);
2182 info->user_ptr[0] = rdev;
2195 rdev = wpan_phy_to_rdev(wpan_dev->wpan_phy);
2220 info->user_ptr[0] = rdev;