linux/net/ieee802154/rdev-ops.h
<<
>>
Prefs
   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 */
 322