Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
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 /* TODO this is already a nl802154, so move into ieee802154 */
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 /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */
0320 
0321 #endif /* __CFG802154_RDEV_OPS */