rdev-ops.h (9030B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __CFG802154_RDEV_OPS 3#define __CFG802154_RDEV_OPS 4 5#include <net/cfg802154.h> 6 7#include "core.h" 8#include "trace.h" 9 10static inline struct net_device * 11rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev, 12 const char *name, 13 unsigned char name_assign_type, 14 int type) 15{ 16 return rdev->ops->add_virtual_intf_deprecated(&rdev->wpan_phy, name, 17 name_assign_type, type); 18} 19 20static inline void 21rdev_del_virtual_intf_deprecated(struct cfg802154_registered_device *rdev, 22 struct net_device *dev) 23{ 24 rdev->ops->del_virtual_intf_deprecated(&rdev->wpan_phy, dev); 25} 26 27static inline int 28rdev_suspend(struct cfg802154_registered_device *rdev) 29{ 30 int ret; 31 trace_802154_rdev_suspend(&rdev->wpan_phy); 32 ret = rdev->ops->suspend(&rdev->wpan_phy); 33 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 34 return ret; 35} 36 37static inline int 38rdev_resume(struct cfg802154_registered_device *rdev) 39{ 40 int ret; 41 trace_802154_rdev_resume(&rdev->wpan_phy); 42 ret = rdev->ops->resume(&rdev->wpan_phy); 43 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 44 return ret; 45} 46 47static inline int 48rdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name, 49 unsigned char name_assign_type, 50 enum nl802154_iftype type, __le64 extended_addr) 51{ 52 int ret; 53 54 trace_802154_rdev_add_virtual_intf(&rdev->wpan_phy, name, type, 55 extended_addr); 56 ret = rdev->ops->add_virtual_intf(&rdev->wpan_phy, name, 57 name_assign_type, type, 58 extended_addr); 59 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 60 return ret; 61} 62 63static inline int 64rdev_del_virtual_intf(struct cfg802154_registered_device *rdev, 65 struct wpan_dev *wpan_dev) 66{ 67 int ret; 68 69 trace_802154_rdev_del_virtual_intf(&rdev->wpan_phy, wpan_dev); 70 ret = rdev->ops->del_virtual_intf(&rdev->wpan_phy, wpan_dev); 71 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 72 return ret; 73} 74 75static inline int 76rdev_set_channel(struct cfg802154_registered_device *rdev, u8 page, u8 channel) 77{ 78 int ret; 79 80 trace_802154_rdev_set_channel(&rdev->wpan_phy, page, channel); 81 ret = rdev->ops->set_channel(&rdev->wpan_phy, page, channel); 82 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 83 return ret; 84} 85 86static inline int 87rdev_set_cca_mode(struct cfg802154_registered_device *rdev, 88 const struct wpan_phy_cca *cca) 89{ 90 int ret; 91 92 trace_802154_rdev_set_cca_mode(&rdev->wpan_phy, cca); 93 ret = rdev->ops->set_cca_mode(&rdev->wpan_phy, cca); 94 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 95 return ret; 96} 97 98static inline int 99rdev_set_cca_ed_level(struct cfg802154_registered_device *rdev, s32 ed_level) 100{ 101 int ret; 102 103 trace_802154_rdev_set_cca_ed_level(&rdev->wpan_phy, ed_level); 104 ret = rdev->ops->set_cca_ed_level(&rdev->wpan_phy, ed_level); 105 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 106 return ret; 107} 108 109static inline int 110rdev_set_tx_power(struct cfg802154_registered_device *rdev, 111 s32 power) 112{ 113 int ret; 114 115 trace_802154_rdev_set_tx_power(&rdev->wpan_phy, power); 116 ret = rdev->ops->set_tx_power(&rdev->wpan_phy, power); 117 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 118 return ret; 119} 120 121static inline int 122rdev_set_pan_id(struct cfg802154_registered_device *rdev, 123 struct wpan_dev *wpan_dev, __le16 pan_id) 124{ 125 int ret; 126 127 trace_802154_rdev_set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id); 128 ret = rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id); 129 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 130 return ret; 131} 132 133static inline int 134rdev_set_short_addr(struct cfg802154_registered_device *rdev, 135 struct wpan_dev *wpan_dev, __le16 short_addr) 136{ 137 int ret; 138 139 trace_802154_rdev_set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr); 140 ret = rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr); 141 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 142 return ret; 143} 144 145static inline int 146rdev_set_backoff_exponent(struct cfg802154_registered_device *rdev, 147 struct wpan_dev *wpan_dev, u8 min_be, u8 max_be) 148{ 149 int ret; 150 151 trace_802154_rdev_set_backoff_exponent(&rdev->wpan_phy, wpan_dev, 152 min_be, max_be); 153 ret = rdev->ops->set_backoff_exponent(&rdev->wpan_phy, wpan_dev, 154 min_be, max_be); 155 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 156 return ret; 157} 158 159static inline int 160rdev_set_max_csma_backoffs(struct cfg802154_registered_device *rdev, 161 struct wpan_dev *wpan_dev, u8 max_csma_backoffs) 162{ 163 int ret; 164 165 trace_802154_rdev_set_csma_backoffs(&rdev->wpan_phy, wpan_dev, 166 max_csma_backoffs); 167 ret = rdev->ops->set_max_csma_backoffs(&rdev->wpan_phy, wpan_dev, 168 max_csma_backoffs); 169 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 170 return ret; 171} 172 173static inline int 174rdev_set_max_frame_retries(struct cfg802154_registered_device *rdev, 175 struct wpan_dev *wpan_dev, s8 max_frame_retries) 176{ 177 int ret; 178 179 trace_802154_rdev_set_max_frame_retries(&rdev->wpan_phy, wpan_dev, 180 max_frame_retries); 181 ret = rdev->ops->set_max_frame_retries(&rdev->wpan_phy, wpan_dev, 182 max_frame_retries); 183 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 184 return ret; 185} 186 187static inline int 188rdev_set_lbt_mode(struct cfg802154_registered_device *rdev, 189 struct wpan_dev *wpan_dev, bool mode) 190{ 191 int ret; 192 193 trace_802154_rdev_set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode); 194 ret = rdev->ops->set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode); 195 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 196 return ret; 197} 198 199static inline int 200rdev_set_ackreq_default(struct cfg802154_registered_device *rdev, 201 struct wpan_dev *wpan_dev, bool ackreq) 202{ 203 int ret; 204 205 trace_802154_rdev_set_ackreq_default(&rdev->wpan_phy, wpan_dev, 206 ackreq); 207 ret = rdev->ops->set_ackreq_default(&rdev->wpan_phy, wpan_dev, ackreq); 208 trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 209 return ret; 210} 211 212#ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 213/* TODO this is already a nl802154, so move into ieee802154 */ 214static inline void 215rdev_get_llsec_table(struct cfg802154_registered_device *rdev, 216 struct wpan_dev *wpan_dev, 217 struct ieee802154_llsec_table **table) 218{ 219 rdev->ops->get_llsec_table(&rdev->wpan_phy, wpan_dev, table); 220} 221 222static inline void 223rdev_lock_llsec_table(struct cfg802154_registered_device *rdev, 224 struct wpan_dev *wpan_dev) 225{ 226 rdev->ops->lock_llsec_table(&rdev->wpan_phy, wpan_dev); 227} 228 229static inline void 230rdev_unlock_llsec_table(struct cfg802154_registered_device *rdev, 231 struct wpan_dev *wpan_dev) 232{ 233 rdev->ops->unlock_llsec_table(&rdev->wpan_phy, wpan_dev); 234} 235 236static inline int 237rdev_get_llsec_params(struct cfg802154_registered_device *rdev, 238 struct wpan_dev *wpan_dev, 239 struct ieee802154_llsec_params *params) 240{ 241 return rdev->ops->get_llsec_params(&rdev->wpan_phy, wpan_dev, params); 242} 243 244static inline int 245rdev_set_llsec_params(struct cfg802154_registered_device *rdev, 246 struct wpan_dev *wpan_dev, 247 const struct ieee802154_llsec_params *params, 248 u32 changed) 249{ 250 return rdev->ops->set_llsec_params(&rdev->wpan_phy, wpan_dev, params, 251 changed); 252} 253 254static inline int 255rdev_add_llsec_key(struct cfg802154_registered_device *rdev, 256 struct wpan_dev *wpan_dev, 257 const struct ieee802154_llsec_key_id *id, 258 const struct ieee802154_llsec_key *key) 259{ 260 return rdev->ops->add_llsec_key(&rdev->wpan_phy, wpan_dev, id, key); 261} 262 263static inline int 264rdev_del_llsec_key(struct cfg802154_registered_device *rdev, 265 struct wpan_dev *wpan_dev, 266 const struct ieee802154_llsec_key_id *id) 267{ 268 return rdev->ops->del_llsec_key(&rdev->wpan_phy, wpan_dev, id); 269} 270 271static inline int 272rdev_add_seclevel(struct cfg802154_registered_device *rdev, 273 struct wpan_dev *wpan_dev, 274 const struct ieee802154_llsec_seclevel *sl) 275{ 276 return rdev->ops->add_seclevel(&rdev->wpan_phy, wpan_dev, sl); 277} 278 279static inline int 280rdev_del_seclevel(struct cfg802154_registered_device *rdev, 281 struct wpan_dev *wpan_dev, 282 const struct ieee802154_llsec_seclevel *sl) 283{ 284 return rdev->ops->del_seclevel(&rdev->wpan_phy, wpan_dev, sl); 285} 286 287static inline int 288rdev_add_device(struct cfg802154_registered_device *rdev, 289 struct wpan_dev *wpan_dev, 290 const struct ieee802154_llsec_device *dev_desc) 291{ 292 return rdev->ops->add_device(&rdev->wpan_phy, wpan_dev, dev_desc); 293} 294 295static inline int 296rdev_del_device(struct cfg802154_registered_device *rdev, 297 struct wpan_dev *wpan_dev, __le64 extended_addr) 298{ 299 return rdev->ops->del_device(&rdev->wpan_phy, wpan_dev, extended_addr); 300} 301 302static inline int 303rdev_add_devkey(struct cfg802154_registered_device *rdev, 304 struct wpan_dev *wpan_dev, __le64 extended_addr, 305 const struct ieee802154_llsec_device_key *devkey) 306{ 307 return rdev->ops->add_devkey(&rdev->wpan_phy, wpan_dev, extended_addr, 308 devkey); 309} 310 311static inline int 312rdev_del_devkey(struct cfg802154_registered_device *rdev, 313 struct wpan_dev *wpan_dev, __le64 extended_addr, 314 const struct ieee802154_llsec_device_key *devkey) 315{ 316 return rdev->ops->del_devkey(&rdev->wpan_phy, wpan_dev, extended_addr, 317 devkey); 318} 319#endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 320 321#endif /* __CFG802154_RDEV_OPS */