xref: /openbmc/linux/net/ieee802154/rdev-ops.h (revision 9bc11450)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
24a9a816aSAlexander Aring #ifndef __CFG802154_RDEV_OPS
34a9a816aSAlexander Aring #define __CFG802154_RDEV_OPS
44a9a816aSAlexander Aring 
54a9a816aSAlexander Aring #include <net/cfg802154.h>
64a9a816aSAlexander Aring 
74a9a816aSAlexander Aring #include "core.h"
81cc800e7SGuido Günther #include "trace.h"
94a9a816aSAlexander Aring 
104a9a816aSAlexander Aring static inline struct net_device *
rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device * rdev,const char * name,unsigned char name_assign_type,int type)114a9a816aSAlexander Aring rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
125b4a1039SVarka Bhadram 				 const char *name,
135b4a1039SVarka Bhadram 				 unsigned char name_assign_type,
145b4a1039SVarka Bhadram 				 int type)
154a9a816aSAlexander Aring {
164a9a816aSAlexander Aring 	return rdev->ops->add_virtual_intf_deprecated(&rdev->wpan_phy, name,
175b4a1039SVarka Bhadram 						      name_assign_type, type);
184a9a816aSAlexander Aring }
194a9a816aSAlexander Aring 
204a9a816aSAlexander Aring static inline void
rdev_del_virtual_intf_deprecated(struct cfg802154_registered_device * rdev,struct net_device * dev)214a9a816aSAlexander Aring rdev_del_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
224a9a816aSAlexander Aring 				 struct net_device *dev)
234a9a816aSAlexander Aring {
244a9a816aSAlexander Aring 	rdev->ops->del_virtual_intf_deprecated(&rdev->wpan_phy, dev);
254a9a816aSAlexander Aring }
264a9a816aSAlexander Aring 
27ab0bd561SAlexander Aring static inline int
rdev_suspend(struct cfg802154_registered_device * rdev)28a6cb869bSVarka Bhadram rdev_suspend(struct cfg802154_registered_device *rdev)
29a6cb869bSVarka Bhadram {
30a6cb869bSVarka Bhadram 	int ret;
31a6cb869bSVarka Bhadram 	trace_802154_rdev_suspend(&rdev->wpan_phy);
32a6cb869bSVarka Bhadram 	ret = rdev->ops->suspend(&rdev->wpan_phy);
33a6cb869bSVarka Bhadram 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
34a6cb869bSVarka Bhadram 	return ret;
35a6cb869bSVarka Bhadram }
36a6cb869bSVarka Bhadram 
37a6cb869bSVarka Bhadram static inline int
rdev_resume(struct cfg802154_registered_device * rdev)38a6cb869bSVarka Bhadram rdev_resume(struct cfg802154_registered_device *rdev)
39a6cb869bSVarka Bhadram {
40a6cb869bSVarka Bhadram 	int ret;
41a6cb869bSVarka Bhadram 	trace_802154_rdev_resume(&rdev->wpan_phy);
42a6cb869bSVarka Bhadram 	ret = rdev->ops->resume(&rdev->wpan_phy);
43a6cb869bSVarka Bhadram 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
44a6cb869bSVarka Bhadram 	return ret;
45a6cb869bSVarka Bhadram }
46a6cb869bSVarka Bhadram 
47a6cb869bSVarka Bhadram static inline int
rdev_add_virtual_intf(struct cfg802154_registered_device * rdev,char * name,unsigned char name_assign_type,enum nl802154_iftype type,__le64 extended_addr)48f3ea5e44SAlexander Aring rdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name,
495b4a1039SVarka Bhadram 		      unsigned char name_assign_type,
500e57547eSAlexander Aring 		      enum nl802154_iftype type, __le64 extended_addr)
51f3ea5e44SAlexander Aring {
521cc800e7SGuido Günther 	int ret;
531cc800e7SGuido Günther 
541cc800e7SGuido Günther 	trace_802154_rdev_add_virtual_intf(&rdev->wpan_phy, name, type,
550e57547eSAlexander Aring 					   extended_addr);
565b4a1039SVarka Bhadram 	ret = rdev->ops->add_virtual_intf(&rdev->wpan_phy, name,
575b4a1039SVarka Bhadram 					  name_assign_type, type,
581cc800e7SGuido Günther 					  extended_addr);
591cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
601cc800e7SGuido Günther 	return ret;
61f3ea5e44SAlexander Aring }
62f3ea5e44SAlexander Aring 
63f3ea5e44SAlexander Aring static inline int
rdev_del_virtual_intf(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev)64b821ecd4SAlexander Aring rdev_del_virtual_intf(struct cfg802154_registered_device *rdev,
65b821ecd4SAlexander Aring 		      struct wpan_dev *wpan_dev)
66b821ecd4SAlexander Aring {
671cc800e7SGuido Günther 	int ret;
681cc800e7SGuido Günther 
691cc800e7SGuido Günther 	trace_802154_rdev_del_virtual_intf(&rdev->wpan_phy, wpan_dev);
701cc800e7SGuido Günther 	ret = rdev->ops->del_virtual_intf(&rdev->wpan_phy, wpan_dev);
711cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
721cc800e7SGuido Günther 	return ret;
73b821ecd4SAlexander Aring }
74b821ecd4SAlexander Aring 
75b821ecd4SAlexander Aring static inline int
rdev_set_channel(struct cfg802154_registered_device * rdev,u8 page,u8 channel)76628b1e11SAlexander Aring rdev_set_channel(struct cfg802154_registered_device *rdev, u8 page, u8 channel)
77ab0bd561SAlexander Aring {
781cc800e7SGuido Günther 	int ret;
791cc800e7SGuido Günther 
801cc800e7SGuido Günther 	trace_802154_rdev_set_channel(&rdev->wpan_phy, page, channel);
811cc800e7SGuido Günther 	ret = rdev->ops->set_channel(&rdev->wpan_phy, page, channel);
821cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
831cc800e7SGuido Günther 	return ret;
84ab0bd561SAlexander Aring }
85ab0bd561SAlexander Aring 
86702bf371SAlexander Aring static inline int
rdev_set_cca_mode(struct cfg802154_registered_device * rdev,const struct wpan_phy_cca * cca)87ba2a9506SAlexander Aring rdev_set_cca_mode(struct cfg802154_registered_device *rdev,
88ba2a9506SAlexander Aring 		  const struct wpan_phy_cca *cca)
89ba2a9506SAlexander Aring {
901cc800e7SGuido Günther 	int ret;
911cc800e7SGuido Günther 
921cc800e7SGuido Günther 	trace_802154_rdev_set_cca_mode(&rdev->wpan_phy, cca);
931cc800e7SGuido Günther 	ret = rdev->ops->set_cca_mode(&rdev->wpan_phy, cca);
941cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
951cc800e7SGuido Günther 	return ret;
96ba2a9506SAlexander Aring }
97ba2a9506SAlexander Aring 
98ba2a9506SAlexander Aring static inline int
rdev_set_cca_ed_level(struct cfg802154_registered_device * rdev,s32 ed_level)99b69644c1SAlexander Aring rdev_set_cca_ed_level(struct cfg802154_registered_device *rdev, s32 ed_level)
100b69644c1SAlexander Aring {
101b69644c1SAlexander Aring 	int ret;
102b69644c1SAlexander Aring 
103b69644c1SAlexander Aring 	trace_802154_rdev_set_cca_ed_level(&rdev->wpan_phy, ed_level);
104b69644c1SAlexander Aring 	ret = rdev->ops->set_cca_ed_level(&rdev->wpan_phy, ed_level);
105b69644c1SAlexander Aring 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
106b69644c1SAlexander Aring 	return ret;
107b69644c1SAlexander Aring }
108b69644c1SAlexander Aring 
109b69644c1SAlexander Aring static inline int
rdev_set_tx_power(struct cfg802154_registered_device * rdev,s32 power)1100f999b09SVarka Bhadram rdev_set_tx_power(struct cfg802154_registered_device *rdev,
1110f999b09SVarka Bhadram 		  s32 power)
1120f999b09SVarka Bhadram {
1130f999b09SVarka Bhadram 	int ret;
1140f999b09SVarka Bhadram 
1150f999b09SVarka Bhadram 	trace_802154_rdev_set_tx_power(&rdev->wpan_phy, power);
1160f999b09SVarka Bhadram 	ret = rdev->ops->set_tx_power(&rdev->wpan_phy, power);
1170f999b09SVarka Bhadram 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
1180f999b09SVarka Bhadram 	return ret;
1190f999b09SVarka Bhadram }
1200f999b09SVarka Bhadram 
1210f999b09SVarka Bhadram static inline int
rdev_set_pan_id(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,__le16 pan_id)122702bf371SAlexander Aring rdev_set_pan_id(struct cfg802154_registered_device *rdev,
123ee7b9053SAlexander Aring 		struct wpan_dev *wpan_dev, __le16 pan_id)
124702bf371SAlexander Aring {
1251cc800e7SGuido Günther 	int ret;
1261cc800e7SGuido Günther 
1271cc800e7SGuido Günther 	trace_802154_rdev_set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
1281cc800e7SGuido Günther 	ret = rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
1291cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
1301cc800e7SGuido Günther 	return ret;
131702bf371SAlexander Aring }
132702bf371SAlexander Aring 
1339830c62aSAlexander Aring static inline int
rdev_set_short_addr(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,__le16 short_addr)1349830c62aSAlexander Aring rdev_set_short_addr(struct cfg802154_registered_device *rdev,
135ee7b9053SAlexander Aring 		    struct wpan_dev *wpan_dev, __le16 short_addr)
1369830c62aSAlexander Aring {
1371cc800e7SGuido Günther 	int ret;
1381cc800e7SGuido Günther 
1391cc800e7SGuido Günther 	trace_802154_rdev_set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
1401cc800e7SGuido Günther 	ret = rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
1411cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
1421cc800e7SGuido Günther 	return ret;
1439830c62aSAlexander Aring }
1449830c62aSAlexander Aring 
145656a999eSAlexander Aring static inline int
rdev_set_backoff_exponent(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,u8 min_be,u8 max_be)146656a999eSAlexander Aring rdev_set_backoff_exponent(struct cfg802154_registered_device *rdev,
147628b1e11SAlexander Aring 			  struct wpan_dev *wpan_dev, u8 min_be, u8 max_be)
148656a999eSAlexander Aring {
1491cc800e7SGuido Günther 	int ret;
1501cc800e7SGuido Günther 
1511cc800e7SGuido Günther 	trace_802154_rdev_set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
152656a999eSAlexander Aring 					       min_be, max_be);
1531cc800e7SGuido Günther 	ret = rdev->ops->set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
1541cc800e7SGuido Günther 					      min_be, max_be);
1551cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
1561cc800e7SGuido Günther 	return ret;
157656a999eSAlexander Aring }
158656a999eSAlexander Aring 
159a01ba765SAlexander Aring static inline int
rdev_set_max_csma_backoffs(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,u8 max_csma_backoffs)160a01ba765SAlexander Aring rdev_set_max_csma_backoffs(struct cfg802154_registered_device *rdev,
161628b1e11SAlexander Aring 			   struct wpan_dev *wpan_dev, u8 max_csma_backoffs)
162a01ba765SAlexander Aring {
1631cc800e7SGuido Günther 	int ret;
1641cc800e7SGuido Günther 
1651cc800e7SGuido Günther 	trace_802154_rdev_set_csma_backoffs(&rdev->wpan_phy, wpan_dev,
166a01ba765SAlexander Aring 					    max_csma_backoffs);
1671cc800e7SGuido Günther 	ret = rdev->ops->set_max_csma_backoffs(&rdev->wpan_phy, wpan_dev,
1681cc800e7SGuido Günther 					       max_csma_backoffs);
1691cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
1701cc800e7SGuido Günther 	return ret;
171a01ba765SAlexander Aring }
172a01ba765SAlexander Aring 
17317a3a46bSAlexander Aring static inline int
rdev_set_max_frame_retries(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,s8 max_frame_retries)17417a3a46bSAlexander Aring rdev_set_max_frame_retries(struct cfg802154_registered_device *rdev,
175628b1e11SAlexander Aring 			   struct wpan_dev *wpan_dev, s8 max_frame_retries)
17617a3a46bSAlexander Aring {
1771cc800e7SGuido Günther 	int ret;
1781cc800e7SGuido Günther 
1791cc800e7SGuido Günther 	trace_802154_rdev_set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
18017a3a46bSAlexander Aring 						max_frame_retries);
1811cc800e7SGuido Günther 	ret = rdev->ops->set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
1821cc800e7SGuido Günther 					       max_frame_retries);
1831cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
1841cc800e7SGuido Günther 	return ret;
18517a3a46bSAlexander Aring }
18617a3a46bSAlexander Aring 
187c8937a1dSAlexander Aring static inline int
rdev_set_lbt_mode(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,bool mode)188c8937a1dSAlexander Aring rdev_set_lbt_mode(struct cfg802154_registered_device *rdev,
189628b1e11SAlexander Aring 		  struct wpan_dev *wpan_dev, bool mode)
190c8937a1dSAlexander Aring {
1911cc800e7SGuido Günther 	int ret;
1921cc800e7SGuido Günther 
1931cc800e7SGuido Günther 	trace_802154_rdev_set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
1941cc800e7SGuido Günther 	ret = rdev->ops->set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
1951cc800e7SGuido Günther 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
1961cc800e7SGuido Günther 	return ret;
197c8937a1dSAlexander Aring }
198c8937a1dSAlexander Aring 
199c91208d8SAlexander Aring static inline int
rdev_set_ackreq_default(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,bool ackreq)200c91208d8SAlexander Aring rdev_set_ackreq_default(struct cfg802154_registered_device *rdev,
201c91208d8SAlexander Aring 			struct wpan_dev *wpan_dev, bool ackreq)
202c91208d8SAlexander Aring {
203c91208d8SAlexander Aring 	int ret;
204c91208d8SAlexander Aring 
205c91208d8SAlexander Aring 	trace_802154_rdev_set_ackreq_default(&rdev->wpan_phy, wpan_dev,
206c91208d8SAlexander Aring 					     ackreq);
207c91208d8SAlexander Aring 	ret = rdev->ops->set_ackreq_default(&rdev->wpan_phy, wpan_dev, ackreq);
208c91208d8SAlexander Aring 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
209c91208d8SAlexander Aring 	return ret;
210c91208d8SAlexander Aring }
211c91208d8SAlexander Aring 
rdev_trigger_scan(struct cfg802154_registered_device * rdev,struct cfg802154_scan_request * request)212ed3557c9SMiquel Raynal static inline int rdev_trigger_scan(struct cfg802154_registered_device *rdev,
213ed3557c9SMiquel Raynal 				    struct cfg802154_scan_request *request)
214ed3557c9SMiquel Raynal {
215ed3557c9SMiquel Raynal 	int ret;
216ed3557c9SMiquel Raynal 
217ed3557c9SMiquel Raynal 	if (!rdev->ops->trigger_scan)
218ed3557c9SMiquel Raynal 		return -EOPNOTSUPP;
219ed3557c9SMiquel Raynal 
220ed3557c9SMiquel Raynal 	trace_802154_rdev_trigger_scan(&rdev->wpan_phy, request);
221ed3557c9SMiquel Raynal 	ret = rdev->ops->trigger_scan(&rdev->wpan_phy, request);
222ed3557c9SMiquel Raynal 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
223ed3557c9SMiquel Raynal 	return ret;
224ed3557c9SMiquel Raynal }
225ed3557c9SMiquel Raynal 
rdev_abort_scan(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev)226ed3557c9SMiquel Raynal static inline int rdev_abort_scan(struct cfg802154_registered_device *rdev,
227ed3557c9SMiquel Raynal 				  struct wpan_dev *wpan_dev)
228ed3557c9SMiquel Raynal {
229ed3557c9SMiquel Raynal 	int ret;
230ed3557c9SMiquel Raynal 
231ed3557c9SMiquel Raynal 	if (!rdev->ops->abort_scan)
232ed3557c9SMiquel Raynal 		return -EOPNOTSUPP;
233ed3557c9SMiquel Raynal 
234ed3557c9SMiquel Raynal 	trace_802154_rdev_abort_scan(&rdev->wpan_phy, wpan_dev);
235ed3557c9SMiquel Raynal 	ret = rdev->ops->abort_scan(&rdev->wpan_phy, wpan_dev);
236ed3557c9SMiquel Raynal 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
237ed3557c9SMiquel Raynal 	return ret;
238ed3557c9SMiquel Raynal }
239ed3557c9SMiquel Raynal 
rdev_send_beacons(struct cfg802154_registered_device * rdev,struct cfg802154_beacon_request * request)240*9bc11450SMiquel Raynal static inline int rdev_send_beacons(struct cfg802154_registered_device *rdev,
241*9bc11450SMiquel Raynal 				    struct cfg802154_beacon_request *request)
242*9bc11450SMiquel Raynal {
243*9bc11450SMiquel Raynal 	int ret;
244*9bc11450SMiquel Raynal 
245*9bc11450SMiquel Raynal 	if (!rdev->ops->send_beacons)
246*9bc11450SMiquel Raynal 		return -EOPNOTSUPP;
247*9bc11450SMiquel Raynal 
248*9bc11450SMiquel Raynal 	trace_802154_rdev_send_beacons(&rdev->wpan_phy, request);
249*9bc11450SMiquel Raynal 	ret = rdev->ops->send_beacons(&rdev->wpan_phy, request);
250*9bc11450SMiquel Raynal 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
251*9bc11450SMiquel Raynal 	return ret;
252*9bc11450SMiquel Raynal }
253*9bc11450SMiquel Raynal 
rdev_stop_beacons(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev)254*9bc11450SMiquel Raynal static inline int rdev_stop_beacons(struct cfg802154_registered_device *rdev,
255*9bc11450SMiquel Raynal 				    struct wpan_dev *wpan_dev)
256*9bc11450SMiquel Raynal {
257*9bc11450SMiquel Raynal 	int ret;
258*9bc11450SMiquel Raynal 
259*9bc11450SMiquel Raynal 	if (!rdev->ops->stop_beacons)
260*9bc11450SMiquel Raynal 		return -EOPNOTSUPP;
261*9bc11450SMiquel Raynal 
262*9bc11450SMiquel Raynal 	trace_802154_rdev_stop_beacons(&rdev->wpan_phy, wpan_dev);
263*9bc11450SMiquel Raynal 	ret = rdev->ops->stop_beacons(&rdev->wpan_phy, wpan_dev);
264*9bc11450SMiquel Raynal 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
265*9bc11450SMiquel Raynal 	return ret;
266*9bc11450SMiquel Raynal }
267*9bc11450SMiquel Raynal 
268a26c5fd7SAlexander Aring #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
269a26c5fd7SAlexander Aring /* TODO this is already a nl802154, so move into ieee802154 */
270a26c5fd7SAlexander Aring static inline void
rdev_get_llsec_table(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,struct ieee802154_llsec_table ** table)271a26c5fd7SAlexander Aring rdev_get_llsec_table(struct cfg802154_registered_device *rdev,
272a26c5fd7SAlexander Aring 		     struct wpan_dev *wpan_dev,
273a26c5fd7SAlexander Aring 		     struct ieee802154_llsec_table **table)
274a26c5fd7SAlexander Aring {
275a26c5fd7SAlexander Aring 	rdev->ops->get_llsec_table(&rdev->wpan_phy, wpan_dev, table);
276a26c5fd7SAlexander Aring }
277a26c5fd7SAlexander Aring 
278a26c5fd7SAlexander Aring static inline void
rdev_lock_llsec_table(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev)279a26c5fd7SAlexander Aring rdev_lock_llsec_table(struct cfg802154_registered_device *rdev,
280a26c5fd7SAlexander Aring 		      struct wpan_dev *wpan_dev)
281a26c5fd7SAlexander Aring {
282a26c5fd7SAlexander Aring 	rdev->ops->lock_llsec_table(&rdev->wpan_phy, wpan_dev);
283a26c5fd7SAlexander Aring }
284a26c5fd7SAlexander Aring 
285a26c5fd7SAlexander Aring static inline void
rdev_unlock_llsec_table(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev)286a26c5fd7SAlexander Aring rdev_unlock_llsec_table(struct cfg802154_registered_device *rdev,
287a26c5fd7SAlexander Aring 			struct wpan_dev *wpan_dev)
288a26c5fd7SAlexander Aring {
289a26c5fd7SAlexander Aring 	rdev->ops->unlock_llsec_table(&rdev->wpan_phy, wpan_dev);
290a26c5fd7SAlexander Aring }
291a26c5fd7SAlexander Aring 
292a26c5fd7SAlexander Aring static inline int
rdev_get_llsec_params(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,struct ieee802154_llsec_params * params)293a26c5fd7SAlexander Aring rdev_get_llsec_params(struct cfg802154_registered_device *rdev,
294a26c5fd7SAlexander Aring 		      struct wpan_dev *wpan_dev,
295a26c5fd7SAlexander Aring 		      struct ieee802154_llsec_params *params)
296a26c5fd7SAlexander Aring {
297a26c5fd7SAlexander Aring 	return rdev->ops->get_llsec_params(&rdev->wpan_phy, wpan_dev, params);
298a26c5fd7SAlexander Aring }
299a26c5fd7SAlexander Aring 
300a26c5fd7SAlexander Aring static inline int
rdev_set_llsec_params(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,const struct ieee802154_llsec_params * params,u32 changed)301a26c5fd7SAlexander Aring rdev_set_llsec_params(struct cfg802154_registered_device *rdev,
302a26c5fd7SAlexander Aring 		      struct wpan_dev *wpan_dev,
303a26c5fd7SAlexander Aring 		      const struct ieee802154_llsec_params *params,
304a26c5fd7SAlexander Aring 		      u32 changed)
305a26c5fd7SAlexander Aring {
306a26c5fd7SAlexander Aring 	return rdev->ops->set_llsec_params(&rdev->wpan_phy, wpan_dev, params,
307a26c5fd7SAlexander Aring 					   changed);
308a26c5fd7SAlexander Aring }
309a26c5fd7SAlexander Aring 
310a26c5fd7SAlexander Aring static inline int
rdev_add_llsec_key(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,const struct ieee802154_llsec_key_id * id,const struct ieee802154_llsec_key * key)311a26c5fd7SAlexander Aring rdev_add_llsec_key(struct cfg802154_registered_device *rdev,
312a26c5fd7SAlexander Aring 		   struct wpan_dev *wpan_dev,
313a26c5fd7SAlexander Aring 		   const struct ieee802154_llsec_key_id *id,
314a26c5fd7SAlexander Aring 		   const struct ieee802154_llsec_key *key)
315a26c5fd7SAlexander Aring {
316a26c5fd7SAlexander Aring 	return rdev->ops->add_llsec_key(&rdev->wpan_phy, wpan_dev, id, key);
317a26c5fd7SAlexander Aring }
318a26c5fd7SAlexander Aring 
319a26c5fd7SAlexander Aring static inline int
rdev_del_llsec_key(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,const struct ieee802154_llsec_key_id * id)320a26c5fd7SAlexander Aring rdev_del_llsec_key(struct cfg802154_registered_device *rdev,
321a26c5fd7SAlexander Aring 		   struct wpan_dev *wpan_dev,
322a26c5fd7SAlexander Aring 		   const struct ieee802154_llsec_key_id *id)
323a26c5fd7SAlexander Aring {
324a26c5fd7SAlexander Aring 	return rdev->ops->del_llsec_key(&rdev->wpan_phy, wpan_dev, id);
325a26c5fd7SAlexander Aring }
326a26c5fd7SAlexander Aring 
327a26c5fd7SAlexander Aring static inline int
rdev_add_seclevel(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,const struct ieee802154_llsec_seclevel * sl)328a26c5fd7SAlexander Aring rdev_add_seclevel(struct cfg802154_registered_device *rdev,
329a26c5fd7SAlexander Aring 		  struct wpan_dev *wpan_dev,
330a26c5fd7SAlexander Aring 		  const struct ieee802154_llsec_seclevel *sl)
331a26c5fd7SAlexander Aring {
332a26c5fd7SAlexander Aring 	return rdev->ops->add_seclevel(&rdev->wpan_phy, wpan_dev, sl);
333a26c5fd7SAlexander Aring }
334a26c5fd7SAlexander Aring 
335a26c5fd7SAlexander Aring static inline int
rdev_del_seclevel(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,const struct ieee802154_llsec_seclevel * sl)336a26c5fd7SAlexander Aring rdev_del_seclevel(struct cfg802154_registered_device *rdev,
337a26c5fd7SAlexander Aring 		  struct wpan_dev *wpan_dev,
338a26c5fd7SAlexander Aring 		  const struct ieee802154_llsec_seclevel *sl)
339a26c5fd7SAlexander Aring {
340a26c5fd7SAlexander Aring 	return rdev->ops->del_seclevel(&rdev->wpan_phy, wpan_dev, sl);
341a26c5fd7SAlexander Aring }
342a26c5fd7SAlexander Aring 
343a26c5fd7SAlexander Aring static inline int
rdev_add_device(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,const struct ieee802154_llsec_device * dev_desc)344a26c5fd7SAlexander Aring rdev_add_device(struct cfg802154_registered_device *rdev,
345a26c5fd7SAlexander Aring 		struct wpan_dev *wpan_dev,
346a26c5fd7SAlexander Aring 		const struct ieee802154_llsec_device *dev_desc)
347a26c5fd7SAlexander Aring {
348a26c5fd7SAlexander Aring 	return rdev->ops->add_device(&rdev->wpan_phy, wpan_dev, dev_desc);
349a26c5fd7SAlexander Aring }
350a26c5fd7SAlexander Aring 
351a26c5fd7SAlexander Aring static inline int
rdev_del_device(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,__le64 extended_addr)352a26c5fd7SAlexander Aring rdev_del_device(struct cfg802154_registered_device *rdev,
353a26c5fd7SAlexander Aring 		struct wpan_dev *wpan_dev, __le64 extended_addr)
354a26c5fd7SAlexander Aring {
355a26c5fd7SAlexander Aring 	return rdev->ops->del_device(&rdev->wpan_phy, wpan_dev, extended_addr);
356a26c5fd7SAlexander Aring }
357a26c5fd7SAlexander Aring 
358a26c5fd7SAlexander Aring static inline int
rdev_add_devkey(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,__le64 extended_addr,const struct ieee802154_llsec_device_key * devkey)359a26c5fd7SAlexander Aring rdev_add_devkey(struct cfg802154_registered_device *rdev,
360a26c5fd7SAlexander Aring 		struct wpan_dev *wpan_dev, __le64 extended_addr,
361a26c5fd7SAlexander Aring 		const struct ieee802154_llsec_device_key *devkey)
362a26c5fd7SAlexander Aring {
363a26c5fd7SAlexander Aring 	return rdev->ops->add_devkey(&rdev->wpan_phy, wpan_dev, extended_addr,
364a26c5fd7SAlexander Aring 				     devkey);
365a26c5fd7SAlexander Aring }
366a26c5fd7SAlexander Aring 
367a26c5fd7SAlexander Aring static inline int
rdev_del_devkey(struct cfg802154_registered_device * rdev,struct wpan_dev * wpan_dev,__le64 extended_addr,const struct ieee802154_llsec_device_key * devkey)368a26c5fd7SAlexander Aring rdev_del_devkey(struct cfg802154_registered_device *rdev,
369a26c5fd7SAlexander Aring 		struct wpan_dev *wpan_dev, __le64 extended_addr,
370a26c5fd7SAlexander Aring 		const struct ieee802154_llsec_device_key *devkey)
371a26c5fd7SAlexander Aring {
372a26c5fd7SAlexander Aring 	return rdev->ops->del_devkey(&rdev->wpan_phy, wpan_dev, extended_addr,
373a26c5fd7SAlexander Aring 				     devkey);
374a26c5fd7SAlexander Aring }
375a26c5fd7SAlexander Aring #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */
376a26c5fd7SAlexander Aring 
3774a9a816aSAlexander Aring #endif /* __CFG802154_RDEV_OPS */
378