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 #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 212 /* TODO this is already a nl802154, so move into ieee802154 */ 213 static inline void 214 rdev_get_llsec_table(struct cfg802154_registered_device *rdev, 215 struct wpan_dev *wpan_dev, 216 struct ieee802154_llsec_table **table) 217 { 218 rdev->ops->get_llsec_table(&rdev->wpan_phy, wpan_dev, table); 219 } 220 221 static inline void 222 rdev_lock_llsec_table(struct cfg802154_registered_device *rdev, 223 struct wpan_dev *wpan_dev) 224 { 225 rdev->ops->lock_llsec_table(&rdev->wpan_phy, wpan_dev); 226 } 227 228 static inline void 229 rdev_unlock_llsec_table(struct cfg802154_registered_device *rdev, 230 struct wpan_dev *wpan_dev) 231 { 232 rdev->ops->unlock_llsec_table(&rdev->wpan_phy, wpan_dev); 233 } 234 235 static inline int 236 rdev_get_llsec_params(struct cfg802154_registered_device *rdev, 237 struct wpan_dev *wpan_dev, 238 struct ieee802154_llsec_params *params) 239 { 240 return rdev->ops->get_llsec_params(&rdev->wpan_phy, wpan_dev, params); 241 } 242 243 static inline int 244 rdev_set_llsec_params(struct cfg802154_registered_device *rdev, 245 struct wpan_dev *wpan_dev, 246 const struct ieee802154_llsec_params *params, 247 u32 changed) 248 { 249 return rdev->ops->set_llsec_params(&rdev->wpan_phy, wpan_dev, params, 250 changed); 251 } 252 253 static inline int 254 rdev_add_llsec_key(struct cfg802154_registered_device *rdev, 255 struct wpan_dev *wpan_dev, 256 const struct ieee802154_llsec_key_id *id, 257 const struct ieee802154_llsec_key *key) 258 { 259 return rdev->ops->add_llsec_key(&rdev->wpan_phy, wpan_dev, id, key); 260 } 261 262 static inline int 263 rdev_del_llsec_key(struct cfg802154_registered_device *rdev, 264 struct wpan_dev *wpan_dev, 265 const struct ieee802154_llsec_key_id *id) 266 { 267 return rdev->ops->del_llsec_key(&rdev->wpan_phy, wpan_dev, id); 268 } 269 270 static inline int 271 rdev_add_seclevel(struct cfg802154_registered_device *rdev, 272 struct wpan_dev *wpan_dev, 273 const struct ieee802154_llsec_seclevel *sl) 274 { 275 return rdev->ops->add_seclevel(&rdev->wpan_phy, wpan_dev, sl); 276 } 277 278 static inline int 279 rdev_del_seclevel(struct cfg802154_registered_device *rdev, 280 struct wpan_dev *wpan_dev, 281 const struct ieee802154_llsec_seclevel *sl) 282 { 283 return rdev->ops->del_seclevel(&rdev->wpan_phy, wpan_dev, sl); 284 } 285 286 static inline int 287 rdev_add_device(struct cfg802154_registered_device *rdev, 288 struct wpan_dev *wpan_dev, 289 const struct ieee802154_llsec_device *dev_desc) 290 { 291 return rdev->ops->add_device(&rdev->wpan_phy, wpan_dev, dev_desc); 292 } 293 294 static inline int 295 rdev_del_device(struct cfg802154_registered_device *rdev, 296 struct wpan_dev *wpan_dev, __le64 extended_addr) 297 { 298 return rdev->ops->del_device(&rdev->wpan_phy, wpan_dev, extended_addr); 299 } 300 301 static inline int 302 rdev_add_devkey(struct cfg802154_registered_device *rdev, 303 struct wpan_dev *wpan_dev, __le64 extended_addr, 304 const struct ieee802154_llsec_device_key *devkey) 305 { 306 return rdev->ops->add_devkey(&rdev->wpan_phy, wpan_dev, extended_addr, 307 devkey); 308 } 309 310 static inline int 311 rdev_del_devkey(struct cfg802154_registered_device *rdev, 312 struct wpan_dev *wpan_dev, __le64 extended_addr, 313 const struct ieee802154_llsec_device_key *devkey) 314 { 315 return rdev->ops->del_devkey(&rdev->wpan_phy, wpan_dev, extended_addr, 316 devkey); 317 } 318 #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 319 320 #endif /* __CFG802154_RDEV_OPS */ 321