162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef __CFG802154_RDEV_OPS 362306a36Sopenharmony_ci#define __CFG802154_RDEV_OPS 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <net/cfg802154.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "core.h" 862306a36Sopenharmony_ci#include "trace.h" 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cistatic inline struct net_device * 1162306a36Sopenharmony_cirdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev, 1262306a36Sopenharmony_ci const char *name, 1362306a36Sopenharmony_ci unsigned char name_assign_type, 1462306a36Sopenharmony_ci int type) 1562306a36Sopenharmony_ci{ 1662306a36Sopenharmony_ci return rdev->ops->add_virtual_intf_deprecated(&rdev->wpan_phy, name, 1762306a36Sopenharmony_ci name_assign_type, type); 1862306a36Sopenharmony_ci} 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistatic inline void 2162306a36Sopenharmony_cirdev_del_virtual_intf_deprecated(struct cfg802154_registered_device *rdev, 2262306a36Sopenharmony_ci struct net_device *dev) 2362306a36Sopenharmony_ci{ 2462306a36Sopenharmony_ci rdev->ops->del_virtual_intf_deprecated(&rdev->wpan_phy, dev); 2562306a36Sopenharmony_ci} 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_cistatic inline int 2862306a36Sopenharmony_cirdev_suspend(struct cfg802154_registered_device *rdev) 2962306a36Sopenharmony_ci{ 3062306a36Sopenharmony_ci int ret; 3162306a36Sopenharmony_ci trace_802154_rdev_suspend(&rdev->wpan_phy); 3262306a36Sopenharmony_ci ret = rdev->ops->suspend(&rdev->wpan_phy); 3362306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 3462306a36Sopenharmony_ci return ret; 3562306a36Sopenharmony_ci} 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_cistatic inline int 3862306a36Sopenharmony_cirdev_resume(struct cfg802154_registered_device *rdev) 3962306a36Sopenharmony_ci{ 4062306a36Sopenharmony_ci int ret; 4162306a36Sopenharmony_ci trace_802154_rdev_resume(&rdev->wpan_phy); 4262306a36Sopenharmony_ci ret = rdev->ops->resume(&rdev->wpan_phy); 4362306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 4462306a36Sopenharmony_ci return ret; 4562306a36Sopenharmony_ci} 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistatic inline int 4862306a36Sopenharmony_cirdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name, 4962306a36Sopenharmony_ci unsigned char name_assign_type, 5062306a36Sopenharmony_ci enum nl802154_iftype type, __le64 extended_addr) 5162306a36Sopenharmony_ci{ 5262306a36Sopenharmony_ci int ret; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci trace_802154_rdev_add_virtual_intf(&rdev->wpan_phy, name, type, 5562306a36Sopenharmony_ci extended_addr); 5662306a36Sopenharmony_ci ret = rdev->ops->add_virtual_intf(&rdev->wpan_phy, name, 5762306a36Sopenharmony_ci name_assign_type, type, 5862306a36Sopenharmony_ci extended_addr); 5962306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 6062306a36Sopenharmony_ci return ret; 6162306a36Sopenharmony_ci} 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cistatic inline int 6462306a36Sopenharmony_cirdev_del_virtual_intf(struct cfg802154_registered_device *rdev, 6562306a36Sopenharmony_ci struct wpan_dev *wpan_dev) 6662306a36Sopenharmony_ci{ 6762306a36Sopenharmony_ci int ret; 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci trace_802154_rdev_del_virtual_intf(&rdev->wpan_phy, wpan_dev); 7062306a36Sopenharmony_ci ret = rdev->ops->del_virtual_intf(&rdev->wpan_phy, wpan_dev); 7162306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 7262306a36Sopenharmony_ci return ret; 7362306a36Sopenharmony_ci} 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_cistatic inline int 7662306a36Sopenharmony_cirdev_set_channel(struct cfg802154_registered_device *rdev, u8 page, u8 channel) 7762306a36Sopenharmony_ci{ 7862306a36Sopenharmony_ci int ret; 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci trace_802154_rdev_set_channel(&rdev->wpan_phy, page, channel); 8162306a36Sopenharmony_ci ret = rdev->ops->set_channel(&rdev->wpan_phy, page, channel); 8262306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 8362306a36Sopenharmony_ci return ret; 8462306a36Sopenharmony_ci} 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_cistatic inline int 8762306a36Sopenharmony_cirdev_set_cca_mode(struct cfg802154_registered_device *rdev, 8862306a36Sopenharmony_ci const struct wpan_phy_cca *cca) 8962306a36Sopenharmony_ci{ 9062306a36Sopenharmony_ci int ret; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci trace_802154_rdev_set_cca_mode(&rdev->wpan_phy, cca); 9362306a36Sopenharmony_ci ret = rdev->ops->set_cca_mode(&rdev->wpan_phy, cca); 9462306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 9562306a36Sopenharmony_ci return ret; 9662306a36Sopenharmony_ci} 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_cistatic inline int 9962306a36Sopenharmony_cirdev_set_cca_ed_level(struct cfg802154_registered_device *rdev, s32 ed_level) 10062306a36Sopenharmony_ci{ 10162306a36Sopenharmony_ci int ret; 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci trace_802154_rdev_set_cca_ed_level(&rdev->wpan_phy, ed_level); 10462306a36Sopenharmony_ci ret = rdev->ops->set_cca_ed_level(&rdev->wpan_phy, ed_level); 10562306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 10662306a36Sopenharmony_ci return ret; 10762306a36Sopenharmony_ci} 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_cistatic inline int 11062306a36Sopenharmony_cirdev_set_tx_power(struct cfg802154_registered_device *rdev, 11162306a36Sopenharmony_ci s32 power) 11262306a36Sopenharmony_ci{ 11362306a36Sopenharmony_ci int ret; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci trace_802154_rdev_set_tx_power(&rdev->wpan_phy, power); 11662306a36Sopenharmony_ci ret = rdev->ops->set_tx_power(&rdev->wpan_phy, power); 11762306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 11862306a36Sopenharmony_ci return ret; 11962306a36Sopenharmony_ci} 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_cistatic inline int 12262306a36Sopenharmony_cirdev_set_pan_id(struct cfg802154_registered_device *rdev, 12362306a36Sopenharmony_ci struct wpan_dev *wpan_dev, __le16 pan_id) 12462306a36Sopenharmony_ci{ 12562306a36Sopenharmony_ci int ret; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci trace_802154_rdev_set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id); 12862306a36Sopenharmony_ci ret = rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id); 12962306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 13062306a36Sopenharmony_ci return ret; 13162306a36Sopenharmony_ci} 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_cistatic inline int 13462306a36Sopenharmony_cirdev_set_short_addr(struct cfg802154_registered_device *rdev, 13562306a36Sopenharmony_ci struct wpan_dev *wpan_dev, __le16 short_addr) 13662306a36Sopenharmony_ci{ 13762306a36Sopenharmony_ci int ret; 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci trace_802154_rdev_set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr); 14062306a36Sopenharmony_ci ret = rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr); 14162306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 14262306a36Sopenharmony_ci return ret; 14362306a36Sopenharmony_ci} 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_cistatic inline int 14662306a36Sopenharmony_cirdev_set_backoff_exponent(struct cfg802154_registered_device *rdev, 14762306a36Sopenharmony_ci struct wpan_dev *wpan_dev, u8 min_be, u8 max_be) 14862306a36Sopenharmony_ci{ 14962306a36Sopenharmony_ci int ret; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci trace_802154_rdev_set_backoff_exponent(&rdev->wpan_phy, wpan_dev, 15262306a36Sopenharmony_ci min_be, max_be); 15362306a36Sopenharmony_ci ret = rdev->ops->set_backoff_exponent(&rdev->wpan_phy, wpan_dev, 15462306a36Sopenharmony_ci min_be, max_be); 15562306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 15662306a36Sopenharmony_ci return ret; 15762306a36Sopenharmony_ci} 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_cistatic inline int 16062306a36Sopenharmony_cirdev_set_max_csma_backoffs(struct cfg802154_registered_device *rdev, 16162306a36Sopenharmony_ci struct wpan_dev *wpan_dev, u8 max_csma_backoffs) 16262306a36Sopenharmony_ci{ 16362306a36Sopenharmony_ci int ret; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci trace_802154_rdev_set_csma_backoffs(&rdev->wpan_phy, wpan_dev, 16662306a36Sopenharmony_ci max_csma_backoffs); 16762306a36Sopenharmony_ci ret = rdev->ops->set_max_csma_backoffs(&rdev->wpan_phy, wpan_dev, 16862306a36Sopenharmony_ci max_csma_backoffs); 16962306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 17062306a36Sopenharmony_ci return ret; 17162306a36Sopenharmony_ci} 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_cistatic inline int 17462306a36Sopenharmony_cirdev_set_max_frame_retries(struct cfg802154_registered_device *rdev, 17562306a36Sopenharmony_ci struct wpan_dev *wpan_dev, s8 max_frame_retries) 17662306a36Sopenharmony_ci{ 17762306a36Sopenharmony_ci int ret; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci trace_802154_rdev_set_max_frame_retries(&rdev->wpan_phy, wpan_dev, 18062306a36Sopenharmony_ci max_frame_retries); 18162306a36Sopenharmony_ci ret = rdev->ops->set_max_frame_retries(&rdev->wpan_phy, wpan_dev, 18262306a36Sopenharmony_ci max_frame_retries); 18362306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 18462306a36Sopenharmony_ci return ret; 18562306a36Sopenharmony_ci} 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_cistatic inline int 18862306a36Sopenharmony_cirdev_set_lbt_mode(struct cfg802154_registered_device *rdev, 18962306a36Sopenharmony_ci struct wpan_dev *wpan_dev, bool mode) 19062306a36Sopenharmony_ci{ 19162306a36Sopenharmony_ci int ret; 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci trace_802154_rdev_set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode); 19462306a36Sopenharmony_ci ret = rdev->ops->set_lbt_mode(&rdev->wpan_phy, wpan_dev, mode); 19562306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 19662306a36Sopenharmony_ci return ret; 19762306a36Sopenharmony_ci} 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_cistatic inline int 20062306a36Sopenharmony_cirdev_set_ackreq_default(struct cfg802154_registered_device *rdev, 20162306a36Sopenharmony_ci struct wpan_dev *wpan_dev, bool ackreq) 20262306a36Sopenharmony_ci{ 20362306a36Sopenharmony_ci int ret; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci trace_802154_rdev_set_ackreq_default(&rdev->wpan_phy, wpan_dev, 20662306a36Sopenharmony_ci ackreq); 20762306a36Sopenharmony_ci ret = rdev->ops->set_ackreq_default(&rdev->wpan_phy, wpan_dev, ackreq); 20862306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 20962306a36Sopenharmony_ci return ret; 21062306a36Sopenharmony_ci} 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_cistatic inline int rdev_trigger_scan(struct cfg802154_registered_device *rdev, 21362306a36Sopenharmony_ci struct cfg802154_scan_request *request) 21462306a36Sopenharmony_ci{ 21562306a36Sopenharmony_ci int ret; 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ci if (!rdev->ops->trigger_scan) 21862306a36Sopenharmony_ci return -EOPNOTSUPP; 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci trace_802154_rdev_trigger_scan(&rdev->wpan_phy, request); 22162306a36Sopenharmony_ci ret = rdev->ops->trigger_scan(&rdev->wpan_phy, request); 22262306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 22362306a36Sopenharmony_ci return ret; 22462306a36Sopenharmony_ci} 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_cistatic inline int rdev_abort_scan(struct cfg802154_registered_device *rdev, 22762306a36Sopenharmony_ci struct wpan_dev *wpan_dev) 22862306a36Sopenharmony_ci{ 22962306a36Sopenharmony_ci int ret; 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci if (!rdev->ops->abort_scan) 23262306a36Sopenharmony_ci return -EOPNOTSUPP; 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci trace_802154_rdev_abort_scan(&rdev->wpan_phy, wpan_dev); 23562306a36Sopenharmony_ci ret = rdev->ops->abort_scan(&rdev->wpan_phy, wpan_dev); 23662306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 23762306a36Sopenharmony_ci return ret; 23862306a36Sopenharmony_ci} 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_cistatic inline int rdev_send_beacons(struct cfg802154_registered_device *rdev, 24162306a36Sopenharmony_ci struct cfg802154_beacon_request *request) 24262306a36Sopenharmony_ci{ 24362306a36Sopenharmony_ci int ret; 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ci if (!rdev->ops->send_beacons) 24662306a36Sopenharmony_ci return -EOPNOTSUPP; 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci trace_802154_rdev_send_beacons(&rdev->wpan_phy, request); 24962306a36Sopenharmony_ci ret = rdev->ops->send_beacons(&rdev->wpan_phy, request); 25062306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 25162306a36Sopenharmony_ci return ret; 25262306a36Sopenharmony_ci} 25362306a36Sopenharmony_ci 25462306a36Sopenharmony_cistatic inline int rdev_stop_beacons(struct cfg802154_registered_device *rdev, 25562306a36Sopenharmony_ci struct wpan_dev *wpan_dev) 25662306a36Sopenharmony_ci{ 25762306a36Sopenharmony_ci int ret; 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci if (!rdev->ops->stop_beacons) 26062306a36Sopenharmony_ci return -EOPNOTSUPP; 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci trace_802154_rdev_stop_beacons(&rdev->wpan_phy, wpan_dev); 26362306a36Sopenharmony_ci ret = rdev->ops->stop_beacons(&rdev->wpan_phy, wpan_dev); 26462306a36Sopenharmony_ci trace_802154_rdev_return_int(&rdev->wpan_phy, ret); 26562306a36Sopenharmony_ci return ret; 26662306a36Sopenharmony_ci} 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci#ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL 26962306a36Sopenharmony_ci/* TODO this is already a nl802154, so move into ieee802154 */ 27062306a36Sopenharmony_cistatic inline void 27162306a36Sopenharmony_cirdev_get_llsec_table(struct cfg802154_registered_device *rdev, 27262306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 27362306a36Sopenharmony_ci struct ieee802154_llsec_table **table) 27462306a36Sopenharmony_ci{ 27562306a36Sopenharmony_ci rdev->ops->get_llsec_table(&rdev->wpan_phy, wpan_dev, table); 27662306a36Sopenharmony_ci} 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_cistatic inline void 27962306a36Sopenharmony_cirdev_lock_llsec_table(struct cfg802154_registered_device *rdev, 28062306a36Sopenharmony_ci struct wpan_dev *wpan_dev) 28162306a36Sopenharmony_ci{ 28262306a36Sopenharmony_ci rdev->ops->lock_llsec_table(&rdev->wpan_phy, wpan_dev); 28362306a36Sopenharmony_ci} 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_cistatic inline void 28662306a36Sopenharmony_cirdev_unlock_llsec_table(struct cfg802154_registered_device *rdev, 28762306a36Sopenharmony_ci struct wpan_dev *wpan_dev) 28862306a36Sopenharmony_ci{ 28962306a36Sopenharmony_ci rdev->ops->unlock_llsec_table(&rdev->wpan_phy, wpan_dev); 29062306a36Sopenharmony_ci} 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_cistatic inline int 29362306a36Sopenharmony_cirdev_get_llsec_params(struct cfg802154_registered_device *rdev, 29462306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 29562306a36Sopenharmony_ci struct ieee802154_llsec_params *params) 29662306a36Sopenharmony_ci{ 29762306a36Sopenharmony_ci return rdev->ops->get_llsec_params(&rdev->wpan_phy, wpan_dev, params); 29862306a36Sopenharmony_ci} 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_cistatic inline int 30162306a36Sopenharmony_cirdev_set_llsec_params(struct cfg802154_registered_device *rdev, 30262306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 30362306a36Sopenharmony_ci const struct ieee802154_llsec_params *params, 30462306a36Sopenharmony_ci u32 changed) 30562306a36Sopenharmony_ci{ 30662306a36Sopenharmony_ci return rdev->ops->set_llsec_params(&rdev->wpan_phy, wpan_dev, params, 30762306a36Sopenharmony_ci changed); 30862306a36Sopenharmony_ci} 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_cistatic inline int 31162306a36Sopenharmony_cirdev_add_llsec_key(struct cfg802154_registered_device *rdev, 31262306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 31362306a36Sopenharmony_ci const struct ieee802154_llsec_key_id *id, 31462306a36Sopenharmony_ci const struct ieee802154_llsec_key *key) 31562306a36Sopenharmony_ci{ 31662306a36Sopenharmony_ci return rdev->ops->add_llsec_key(&rdev->wpan_phy, wpan_dev, id, key); 31762306a36Sopenharmony_ci} 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_cistatic inline int 32062306a36Sopenharmony_cirdev_del_llsec_key(struct cfg802154_registered_device *rdev, 32162306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 32262306a36Sopenharmony_ci const struct ieee802154_llsec_key_id *id) 32362306a36Sopenharmony_ci{ 32462306a36Sopenharmony_ci return rdev->ops->del_llsec_key(&rdev->wpan_phy, wpan_dev, id); 32562306a36Sopenharmony_ci} 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_cistatic inline int 32862306a36Sopenharmony_cirdev_add_seclevel(struct cfg802154_registered_device *rdev, 32962306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 33062306a36Sopenharmony_ci const struct ieee802154_llsec_seclevel *sl) 33162306a36Sopenharmony_ci{ 33262306a36Sopenharmony_ci return rdev->ops->add_seclevel(&rdev->wpan_phy, wpan_dev, sl); 33362306a36Sopenharmony_ci} 33462306a36Sopenharmony_ci 33562306a36Sopenharmony_cistatic inline int 33662306a36Sopenharmony_cirdev_del_seclevel(struct cfg802154_registered_device *rdev, 33762306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 33862306a36Sopenharmony_ci const struct ieee802154_llsec_seclevel *sl) 33962306a36Sopenharmony_ci{ 34062306a36Sopenharmony_ci return rdev->ops->del_seclevel(&rdev->wpan_phy, wpan_dev, sl); 34162306a36Sopenharmony_ci} 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_cistatic inline int 34462306a36Sopenharmony_cirdev_add_device(struct cfg802154_registered_device *rdev, 34562306a36Sopenharmony_ci struct wpan_dev *wpan_dev, 34662306a36Sopenharmony_ci const struct ieee802154_llsec_device *dev_desc) 34762306a36Sopenharmony_ci{ 34862306a36Sopenharmony_ci return rdev->ops->add_device(&rdev->wpan_phy, wpan_dev, dev_desc); 34962306a36Sopenharmony_ci} 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_cistatic inline int 35262306a36Sopenharmony_cirdev_del_device(struct cfg802154_registered_device *rdev, 35362306a36Sopenharmony_ci struct wpan_dev *wpan_dev, __le64 extended_addr) 35462306a36Sopenharmony_ci{ 35562306a36Sopenharmony_ci return rdev->ops->del_device(&rdev->wpan_phy, wpan_dev, extended_addr); 35662306a36Sopenharmony_ci} 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_cistatic inline int 35962306a36Sopenharmony_cirdev_add_devkey(struct cfg802154_registered_device *rdev, 36062306a36Sopenharmony_ci struct wpan_dev *wpan_dev, __le64 extended_addr, 36162306a36Sopenharmony_ci const struct ieee802154_llsec_device_key *devkey) 36262306a36Sopenharmony_ci{ 36362306a36Sopenharmony_ci return rdev->ops->add_devkey(&rdev->wpan_phy, wpan_dev, extended_addr, 36462306a36Sopenharmony_ci devkey); 36562306a36Sopenharmony_ci} 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_cistatic inline int 36862306a36Sopenharmony_cirdev_del_devkey(struct cfg802154_registered_device *rdev, 36962306a36Sopenharmony_ci struct wpan_dev *wpan_dev, __le64 extended_addr, 37062306a36Sopenharmony_ci const struct ieee802154_llsec_device_key *devkey) 37162306a36Sopenharmony_ci{ 37262306a36Sopenharmony_ci return rdev->ops->del_devkey(&rdev->wpan_phy, wpan_dev, extended_addr, 37362306a36Sopenharmony_ci devkey); 37462306a36Sopenharmony_ci} 37562306a36Sopenharmony_ci#endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_ci#endif /* __CFG802154_RDEV_OPS */ 378