0001
0002 #ifndef __CFG802154_RDEV_OPS
0003 #define __CFG802154_RDEV_OPS
0004
0005 #include <net/cfg802154.h>
0006
0007 #include "core.h"
0008 #include "trace.h"
0009
0010 static inline struct net_device *
0011 rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
0012 const char *name,
0013 unsigned char name_assign_type,
0014 int type)
0015 {
0016 return rdev->ops->add_virtual_intf_deprecated(&rdev->wpan_phy, name,
0017 name_assign_type, type);
0018 }
0019
0020 static inline void
0021 rdev_del_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
0022 struct net_device *dev)
0023 {
0024 rdev->ops->del_virtual_intf_deprecated(&rdev->wpan_phy, dev);
0025 }
0026
0027 static inline int
0028 rdev_suspend(struct cfg802154_registered_device *rdev)
0029 {
0030 int ret;
0031 trace_802154_rdev_suspend(&rdev->wpan_phy);
0032 ret = rdev->ops->suspend(&rdev->wpan_phy);
0033 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0034 return ret;
0035 }
0036
0037 static inline int
0038 rdev_resume(struct cfg802154_registered_device *rdev)
0039 {
0040 int ret;
0041 trace_802154_rdev_resume(&rdev->wpan_phy);
0042 ret = rdev->ops->resume(&rdev->wpan_phy);
0043 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0044 return ret;
0045 }
0046
0047 static inline int
0048 rdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name,
0049 unsigned char name_assign_type,
0050 enum nl802154_iftype type, __le64 extended_addr)
0051 {
0052 int ret;
0053
0054 trace_802154_rdev_add_virtual_intf(&rdev->wpan_phy, name, type,
0055 extended_addr);
0056 ret = rdev->ops->add_virtual_intf(&rdev->wpan_phy, name,
0057 name_assign_type, type,
0058 extended_addr);
0059 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0060 return ret;
0061 }
0062
0063 static inline int
0064 rdev_del_virtual_intf(struct cfg802154_registered_device *rdev,
0065 struct wpan_dev *wpan_dev)
0066 {
0067 int ret;
0068
0069 trace_802154_rdev_del_virtual_intf(&rdev->wpan_phy, wpan_dev);
0070 ret = rdev->ops->del_virtual_intf(&rdev->wpan_phy, wpan_dev);
0071 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0072 return ret;
0073 }
0074
0075 static inline int
0076 rdev_set_channel(struct cfg802154_registered_device *rdev, u8 page, u8 channel)
0077 {
0078 int ret;
0079
0080 trace_802154_rdev_set_channel(&rdev->wpan_phy, page, channel);
0081 ret = rdev->ops->set_channel(&rdev->wpan_phy, page, channel);
0082 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0083 return ret;
0084 }
0085
0086 static inline int
0087 rdev_set_cca_mode(struct cfg802154_registered_device *rdev,
0088 const struct wpan_phy_cca *cca)
0089 {
0090 int ret;
0091
0092 trace_802154_rdev_set_cca_mode(&rdev->wpan_phy, cca);
0093 ret = rdev->ops->set_cca_mode(&rdev->wpan_phy, cca);
0094 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0095 return ret;
0096 }
0097
0098 static inline int
0099 rdev_set_cca_ed_level(struct cfg802154_registered_device *rdev, s32 ed_level)
0100 {
0101 int ret;
0102
0103 trace_802154_rdev_set_cca_ed_level(&rdev->wpan_phy, ed_level);
0104 ret = rdev->ops->set_cca_ed_level(&rdev->wpan_phy, ed_level);
0105 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0106 return ret;
0107 }
0108
0109 static inline int
0110 rdev_set_tx_power(struct cfg802154_registered_device *rdev,
0111 s32 power)
0112 {
0113 int ret;
0114
0115 trace_802154_rdev_set_tx_power(&rdev->wpan_phy, power);
0116 ret = rdev->ops->set_tx_power(&rdev->wpan_phy, power);
0117 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0118 return ret;
0119 }
0120
0121 static inline int
0122 rdev_set_pan_id(struct cfg802154_registered_device *rdev,
0123 struct wpan_dev *wpan_dev, __le16 pan_id)
0124 {
0125 int ret;
0126
0127 trace_802154_rdev_set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
0128 ret = rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
0129 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0130 return ret;
0131 }
0132
0133 static inline int
0134 rdev_set_short_addr(struct cfg802154_registered_device *rdev,
0135 struct wpan_dev *wpan_dev, __le16 short_addr)
0136 {
0137 int ret;
0138
0139 trace_802154_rdev_set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
0140 ret = rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
0141 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0142 return ret;
0143 }
0144
0145 static inline int
0146 rdev_set_backoff_exponent(struct cfg802154_registered_device *rdev,
0147 struct wpan_dev *wpan_dev, u8 min_be, u8 max_be)
0148 {
0149 int ret;
0150
0151 trace_802154_rdev_set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
0152 min_be, max_be);
0153 ret = rdev->ops->set_backoff_exponent(&rdev->wpan_phy, wpan_dev,
0154 min_be, max_be);
0155 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0156 return ret;
0157 }
0158
0159 static inline int
0160 rdev_set_max_csma_backoffs(struct cfg802154_registered_device *rdev,
0161 struct wpan_dev *wpan_dev, u8 max_csma_backoffs)
0162 {
0163 int ret;
0164
0165 trace_802154_rdev_set_csma_backoffs(&rdev->wpan_phy, wpan_dev,
0166 max_csma_backoffs);
0167 ret = rdev->ops->set_max_csma_backoffs(&rdev->wpan_phy, wpan_dev,
0168 max_csma_backoffs);
0169 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0170 return ret;
0171 }
0172
0173 static inline int
0174 rdev_set_max_frame_retries(struct cfg802154_registered_device *rdev,
0175 struct wpan_dev *wpan_dev, s8 max_frame_retries)
0176 {
0177 int ret;
0178
0179 trace_802154_rdev_set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
0180 max_frame_retries);
0181 ret = rdev->ops->set_max_frame_retries(&rdev->wpan_phy, wpan_dev,
0182 max_frame_retries);
0183 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0184 return ret;
0185 }
0186
0187 static inline int
0188 rdev_set_lbt_mode(struct cfg802154_registered_device *rdev,
0189 struct wpan_dev *wpan_dev, bool mode)
0190 {
0191 int ret;
0192
0193 trace_802154_rdev_set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
0194 ret = rdev->ops->set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode);
0195 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0196 return ret;
0197 }
0198
0199 static inline int
0200 rdev_set_ackreq_default(struct cfg802154_registered_device *rdev,
0201 struct wpan_dev *wpan_dev, bool ackreq)
0202 {
0203 int ret;
0204
0205 trace_802154_rdev_set_ackreq_default(&rdev->wpan_phy, wpan_dev,
0206 ackreq);
0207 ret = rdev->ops->set_ackreq_default(&rdev->wpan_phy, wpan_dev, ackreq);
0208 trace_802154_rdev_return_int(&rdev->wpan_phy, ret);
0209 return ret;
0210 }
0211
0212 #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
0213
0214 static inline void
0215 rdev_get_llsec_table(struct cfg802154_registered_device *rdev,
0216 struct wpan_dev *wpan_dev,
0217 struct ieee802154_llsec_table **table)
0218 {
0219 rdev->ops->get_llsec_table(&rdev->wpan_phy, wpan_dev, table);
0220 }
0221
0222 static inline void
0223 rdev_lock_llsec_table(struct cfg802154_registered_device *rdev,
0224 struct wpan_dev *wpan_dev)
0225 {
0226 rdev->ops->lock_llsec_table(&rdev->wpan_phy, wpan_dev);
0227 }
0228
0229 static inline void
0230 rdev_unlock_llsec_table(struct cfg802154_registered_device *rdev,
0231 struct wpan_dev *wpan_dev)
0232 {
0233 rdev->ops->unlock_llsec_table(&rdev->wpan_phy, wpan_dev);
0234 }
0235
0236 static inline int
0237 rdev_get_llsec_params(struct cfg802154_registered_device *rdev,
0238 struct wpan_dev *wpan_dev,
0239 struct ieee802154_llsec_params *params)
0240 {
0241 return rdev->ops->get_llsec_params(&rdev->wpan_phy, wpan_dev, params);
0242 }
0243
0244 static inline int
0245 rdev_set_llsec_params(struct cfg802154_registered_device *rdev,
0246 struct wpan_dev *wpan_dev,
0247 const struct ieee802154_llsec_params *params,
0248 u32 changed)
0249 {
0250 return rdev->ops->set_llsec_params(&rdev->wpan_phy, wpan_dev, params,
0251 changed);
0252 }
0253
0254 static inline int
0255 rdev_add_llsec_key(struct cfg802154_registered_device *rdev,
0256 struct wpan_dev *wpan_dev,
0257 const struct ieee802154_llsec_key_id *id,
0258 const struct ieee802154_llsec_key *key)
0259 {
0260 return rdev->ops->add_llsec_key(&rdev->wpan_phy, wpan_dev, id, key);
0261 }
0262
0263 static inline int
0264 rdev_del_llsec_key(struct cfg802154_registered_device *rdev,
0265 struct wpan_dev *wpan_dev,
0266 const struct ieee802154_llsec_key_id *id)
0267 {
0268 return rdev->ops->del_llsec_key(&rdev->wpan_phy, wpan_dev, id);
0269 }
0270
0271 static inline int
0272 rdev_add_seclevel(struct cfg802154_registered_device *rdev,
0273 struct wpan_dev *wpan_dev,
0274 const struct ieee802154_llsec_seclevel *sl)
0275 {
0276 return rdev->ops->add_seclevel(&rdev->wpan_phy, wpan_dev, sl);
0277 }
0278
0279 static inline int
0280 rdev_del_seclevel(struct cfg802154_registered_device *rdev,
0281 struct wpan_dev *wpan_dev,
0282 const struct ieee802154_llsec_seclevel *sl)
0283 {
0284 return rdev->ops->del_seclevel(&rdev->wpan_phy, wpan_dev, sl);
0285 }
0286
0287 static inline int
0288 rdev_add_device(struct cfg802154_registered_device *rdev,
0289 struct wpan_dev *wpan_dev,
0290 const struct ieee802154_llsec_device *dev_desc)
0291 {
0292 return rdev->ops->add_device(&rdev->wpan_phy, wpan_dev, dev_desc);
0293 }
0294
0295 static inline int
0296 rdev_del_device(struct cfg802154_registered_device *rdev,
0297 struct wpan_dev *wpan_dev, __le64 extended_addr)
0298 {
0299 return rdev->ops->del_device(&rdev->wpan_phy, wpan_dev, extended_addr);
0300 }
0301
0302 static inline int
0303 rdev_add_devkey(struct cfg802154_registered_device *rdev,
0304 struct wpan_dev *wpan_dev, __le64 extended_addr,
0305 const struct ieee802154_llsec_device_key *devkey)
0306 {
0307 return rdev->ops->add_devkey(&rdev->wpan_phy, wpan_dev, extended_addr,
0308 devkey);
0309 }
0310
0311 static inline int
0312 rdev_del_devkey(struct cfg802154_registered_device *rdev,
0313 struct wpan_dev *wpan_dev, __le64 extended_addr,
0314 const struct ieee802154_llsec_device_key *devkey)
0315 {
0316 return rdev->ops->del_devkey(&rdev->wpan_phy, wpan_dev, extended_addr,
0317 devkey);
0318 }
0319 #endif
0320
0321 #endif