xref: /openbmc/linux/net/ieee802154/rdev-ops.h (revision b96fc2f3)
1 #ifndef __CFG802154_RDEV_OPS
2 #define __CFG802154_RDEV_OPS
3 
4 #include <net/cfg802154.h>
5 
6 #include "core.h"
7 #include "trace.h"
8 
9 static inline struct net_device *
10 rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
11 				 const char *name,
12 				 unsigned char name_assign_type,
13 				 int type)
14 {
15 	return rdev->ops->add_virtual_intf_deprecated(&rdev->wpan_phy, name,
16 						      name_assign_type, type);
17 }
18 
19 static inline void
20 rdev_del_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
21 				 struct net_device *dev)
22 {
23 	rdev->ops->del_virtual_intf_deprecated(&rdev->wpan_phy, dev);
24 }
25 
26 static inline int
27 rdev_suspend(struct cfg802154_registered_device *rdev)
28 {
29 	int ret;
30 	trace_802154_rdev_suspend(&rdev->wpan_phy);
31 	ret = rdev->ops->suspend(&rdev->wpan_phy);
32 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
33 	return ret;
34 }
35 
36 static inline int
37 rdev_resume(struct cfg802154_registered_device *rdev)
38 {
39 	int ret;
40 	trace_802154_rdev_resume(&rdev->wpan_phy);
41 	ret = rdev->ops->resume(&rdev->wpan_phy);
42 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
43 	return ret;
44 }
45 
46 static inline int
47 rdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name,
48 		      unsigned char name_assign_type,
49 		      enum nl802154_iftype type, __le64 extended_addr)
50 {
51 	int ret;
52 
53 	trace_802154_rdev_add_virtual_intf(&rdev->wpan_phy, name, type,
54 					   extended_addr);
55 	ret = rdev->ops->add_virtual_intf(&rdev->wpan_phy, name,
56 					  name_assign_type, type,
57 					  extended_addr);
58 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
59 	return ret;
60 }
61 
62 static inline int
63 rdev_del_virtual_intf(struct cfg802154_registered_device *rdev,
64 		      struct wpan_dev *wpan_dev)
65 {
66 	int ret;
67 
68 	trace_802154_rdev_del_virtual_intf(&rdev->wpan_phy, wpan_dev);
69 	ret = rdev->ops->del_virtual_intf(&rdev->wpan_phy, wpan_dev);
70 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
71 	return ret;
72 }
73 
74 static inline int
75 rdev_set_channel(struct cfg802154_registered_device *rdev, u8 page, u8 channel)
76 {
77 	int ret;
78 
79 	trace_802154_rdev_set_channel(&rdev->wpan_phy, page, channel);
80 	ret = rdev->ops->set_channel(&rdev->wpan_phy, page, channel);
81 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
82 	return ret;
83 }
84 
85 static inline int
86 rdev_set_cca_mode(struct cfg802154_registered_device *rdev,
87 		  const struct wpan_phy_cca *cca)
88 {
89 	int ret;
90 
91 	trace_802154_rdev_set_cca_mode(&rdev->wpan_phy, cca);
92 	ret = rdev->ops->set_cca_mode(&rdev->wpan_phy, cca);
93 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
94 	return ret;
95 }
96 
97 static inline int
98 rdev_set_cca_ed_level(struct cfg802154_registered_device *rdev, s32 ed_level)
99 {
100 	int ret;
101 
102 	trace_802154_rdev_set_cca_ed_level(&rdev->wpan_phy, ed_level);
103 	ret = rdev->ops->set_cca_ed_level(&rdev->wpan_phy, ed_level);
104 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
105 	return ret;
106 }
107 
108 static inline int
109 rdev_set_tx_power(struct cfg802154_registered_device *rdev,
110 		  s32 power)
111 {
112 	int ret;
113 
114 	trace_802154_rdev_set_tx_power(&rdev->wpan_phy, power);
115 	ret = rdev->ops->set_tx_power(&rdev->wpan_phy, power);
116 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
117 	return ret;
118 }
119 
120 static inline int
121 rdev_set_pan_id(struct cfg802154_registered_device *rdev,
122 		struct wpan_dev *wpan_dev, __le16 pan_id)
123 {
124 	int ret;
125 
126 	trace_802154_rdev_set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
127 	ret = rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
128 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
129 	return ret;
130 }
131 
132 static inline int
133 rdev_set_short_addr(struct cfg802154_registered_device *rdev,
134 		    struct wpan_dev *wpan_dev, __le16 short_addr)
135 {
136 	int ret;
137 
138 	trace_802154_rdev_set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
139 	ret = rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
140 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
141 	return ret;
142 }
143 
144 static inline int
145 rdev_set_backoff_exponent(struct cfg802154_registered_device *rdev,
146 			  struct wpan_dev *wpan_dev, u8 min_be, u8 max_be)
147 {
148 	int ret;
149 
150 	trace_802154_rdev_set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
151 					       min_be, max_be);
152 	ret = rdev->ops->set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
153 					      min_be, max_be);
154 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
155 	return ret;
156 }
157 
158 static inline int
159 rdev_set_max_csma_backoffs(struct cfg802154_registered_device *rdev,
160 			   struct wpan_dev *wpan_dev, u8 max_csma_backoffs)
161 {
162 	int ret;
163 
164 	trace_802154_rdev_set_csma_backoffs(&rdev->wpan_phy, wpan_dev,
165 					    max_csma_backoffs);
166 	ret = rdev->ops->set_max_csma_backoffs(&rdev->wpan_phy, wpan_dev,
167 					       max_csma_backoffs);
168 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
169 	return ret;
170 }
171 
172 static inline int
173 rdev_set_max_frame_retries(struct cfg802154_registered_device *rdev,
174 			   struct wpan_dev *wpan_dev, s8 max_frame_retries)
175 {
176 	int ret;
177 
178 	trace_802154_rdev_set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
179 						max_frame_retries);
180 	ret = rdev->ops->set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
181 					       max_frame_retries);
182 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
183 	return ret;
184 }
185 
186 static inline int
187 rdev_set_lbt_mode(struct cfg802154_registered_device *rdev,
188 		  struct wpan_dev *wpan_dev, bool mode)
189 {
190 	int ret;
191 
192 	trace_802154_rdev_set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
193 	ret = rdev->ops->set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
194 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
195 	return ret;
196 }
197 
198 static inline int
199 rdev_set_ackreq_default(struct cfg802154_registered_device *rdev,
200 			struct wpan_dev *wpan_dev, bool ackreq)
201 {
202 	int ret;
203 
204 	trace_802154_rdev_set_ackreq_default(&rdev->wpan_phy, wpan_dev,
205 					     ackreq);
206 	ret = rdev->ops->set_ackreq_default(&rdev->wpan_phy, wpan_dev, ackreq);
207 	trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
208 	return ret;
209 }
210 
211 #endif /* __CFG802154_RDEV_OPS */
212