forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/drivers/net/ieee802154/mac802154_hwsim.c
....@@ -1,17 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * HWSIM IEEE 802.15.4 interface
34 *
45 * (C) 2018 Mojatau, Alexander Aring <aring@mojatau.com>
56 * Copyright 2007-2012 Siemens AG
6
- *
7
- * This program is free software; you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License version 2
9
- * as published by the Free Software Foundation.
10
- *
11
- * This program is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- * GNU General Public License for more details.
157 *
168 * Based on fakelb, original Written by:
179 * Sergey Lapin <slapin@ossfans.org>
....@@ -36,8 +28,6 @@
3628
3729 static LIST_HEAD(hwsim_phys);
3830 static DEFINE_MUTEX(hwsim_phys_lock);
39
-
40
-static LIST_HEAD(hwsim_ifup_phys);
4131
4232 static struct platform_device *mac802154hwsim_dev;
4333
....@@ -85,7 +75,6 @@
8575 struct list_head edges;
8676
8777 struct list_head list;
88
- struct list_head list_ifup;
8978 };
9079
9180 static int hwsim_add_one(struct genl_info *info, struct device *dev,
....@@ -159,9 +148,6 @@
159148 struct hwsim_phy *phy = hw->priv;
160149
161150 phy->suspended = false;
162
- list_add_rcu(&phy->list_ifup, &hwsim_ifup_phys);
163
- synchronize_rcu();
164
-
165151 return 0;
166152 }
167153
....@@ -170,8 +156,6 @@
170156 struct hwsim_phy *phy = hw->priv;
171157
172158 phy->suspended = true;
173
- list_del_rcu(&phy->list_ifup);
174
- synchronize_rcu();
175159 }
176160
177161 static int
....@@ -235,14 +219,16 @@
235219 return 0;
236220 }
237221
238
- nl_edges = nla_nest_start(skb, MAC802154_HWSIM_ATTR_RADIO_EDGES);
222
+ nl_edges = nla_nest_start_noflag(skb,
223
+ MAC802154_HWSIM_ATTR_RADIO_EDGES);
239224 if (!nl_edges) {
240225 rcu_read_unlock();
241226 return -ENOBUFS;
242227 }
243228
244229 list_for_each_entry_rcu(e, &phy->edges, list) {
245
- nl_edge = nla_nest_start(skb, MAC802154_HWSIM_ATTR_RADIO_EDGE);
230
+ nl_edge = nla_nest_start_noflag(skb,
231
+ MAC802154_HWSIM_ATTR_RADIO_EDGE);
246232 if (!nl_edge) {
247233 rcu_read_unlock();
248234 nla_nest_cancel(skb, nl_edges);
....@@ -436,9 +422,7 @@
436422 !info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE])
437423 return -EINVAL;
438424
439
- if (nla_parse_nested(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX,
440
- info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE],
441
- hwsim_edge_policy, NULL))
425
+ if (nla_parse_nested_deprecated(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX, info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE], hwsim_edge_policy, NULL))
442426 return -EINVAL;
443427
444428 if (!edge_attrs[MAC802154_HWSIM_EDGE_ATTR_ENDPOINT_ID])
....@@ -500,9 +484,7 @@
500484 !info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE])
501485 return -EINVAL;
502486
503
- if (nla_parse_nested(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX,
504
- info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE],
505
- hwsim_edge_policy, NULL))
487
+ if (nla_parse_nested_deprecated(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX, info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE], hwsim_edge_policy, NULL))
506488 return -EINVAL;
507489
508490 if (!edge_attrs[MAC802154_HWSIM_EDGE_ATTR_ENDPOINT_ID])
....@@ -550,9 +532,7 @@
550532 !info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE])
551533 return -EINVAL;
552534
553
- if (nla_parse_nested(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX,
554
- info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE],
555
- hwsim_edge_policy, NULL))
535
+ if (nla_parse_nested_deprecated(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX, info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE], hwsim_edge_policy, NULL))
556536 return -EINVAL;
557537
558538 if (!edge_attrs[MAC802154_HWSIM_EDGE_ATTR_ENDPOINT_ID] ||
....@@ -603,40 +583,40 @@
603583 };
604584
605585 /* Generic Netlink operations array */
606
-static const struct genl_ops hwsim_nl_ops[] = {
586
+static const struct genl_small_ops hwsim_nl_ops[] = {
607587 {
608588 .cmd = MAC802154_HWSIM_CMD_NEW_RADIO,
609
- .policy = hwsim_genl_policy,
589
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
610590 .doit = hwsim_new_radio_nl,
611591 .flags = GENL_UNS_ADMIN_PERM,
612592 },
613593 {
614594 .cmd = MAC802154_HWSIM_CMD_DEL_RADIO,
615
- .policy = hwsim_genl_policy,
595
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
616596 .doit = hwsim_del_radio_nl,
617597 .flags = GENL_UNS_ADMIN_PERM,
618598 },
619599 {
620600 .cmd = MAC802154_HWSIM_CMD_GET_RADIO,
621
- .policy = hwsim_genl_policy,
601
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
622602 .doit = hwsim_get_radio_nl,
623603 .dumpit = hwsim_dump_radio_nl,
624604 },
625605 {
626606 .cmd = MAC802154_HWSIM_CMD_NEW_EDGE,
627
- .policy = hwsim_genl_policy,
607
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
628608 .doit = hwsim_new_edge_nl,
629609 .flags = GENL_UNS_ADMIN_PERM,
630610 },
631611 {
632612 .cmd = MAC802154_HWSIM_CMD_DEL_EDGE,
633
- .policy = hwsim_genl_policy,
613
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
634614 .doit = hwsim_del_edge_nl,
635615 .flags = GENL_UNS_ADMIN_PERM,
636616 },
637617 {
638618 .cmd = MAC802154_HWSIM_CMD_SET_EDGE,
639
- .policy = hwsim_genl_policy,
619
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
640620 .doit = hwsim_set_edge_lqi,
641621 .flags = GENL_UNS_ADMIN_PERM,
642622 },
....@@ -646,9 +626,10 @@
646626 .name = "MAC802154_HWSIM",
647627 .version = 1,
648628 .maxattr = MAC802154_HWSIM_ATTR_MAX,
629
+ .policy = hwsim_genl_policy,
649630 .module = THIS_MODULE,
650
- .ops = hwsim_nl_ops,
651
- .n_ops = ARRAY_SIZE(hwsim_nl_ops),
631
+ .small_ops = hwsim_nl_ops,
632
+ .n_small_ops = ARRAY_SIZE(hwsim_nl_ops),
652633 .mcgrps = hwsim_mcgrps,
653634 .n_mcgrps = ARRAY_SIZE(hwsim_mcgrps),
654635 };