^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __CFG80211_RDEV_OPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __CFG80211_RDEV_OPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/rtnetlink.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <net/cfg80211.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include "core.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include "trace.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) static inline int rdev_suspend(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) struct cfg80211_wowlan *wowlan)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) trace_rdev_suspend(&rdev->wiphy, wowlan);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) ret = rdev->ops->suspend(&rdev->wiphy, wowlan);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) static inline int rdev_resume(struct cfg80211_registered_device *rdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) trace_rdev_resume(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) ret = rdev->ops->resume(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) static inline void rdev_set_wakeup(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) bool enabled)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) trace_rdev_set_wakeup(&rdev->wiphy, enabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) rdev->ops->set_wakeup(&rdev->wiphy, enabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) static inline struct wireless_dev
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) *rdev_add_virtual_intf(struct cfg80211_registered_device *rdev, char *name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) unsigned char name_assign_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) enum nl80211_iftype type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) struct vif_params *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) struct wireless_dev *ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) trace_rdev_add_virtual_intf(&rdev->wiphy, name, type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) ret = rdev->ops->add_virtual_intf(&rdev->wiphy, name, name_assign_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) type, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) trace_rdev_return_wdev(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) rdev_del_virtual_intf(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) struct wireless_dev *wdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) trace_rdev_del_virtual_intf(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) ret = rdev->ops->del_virtual_intf(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) rdev_change_virtual_intf(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) struct net_device *dev, enum nl80211_iftype type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) struct vif_params *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) trace_rdev_change_virtual_intf(&rdev->wiphy, dev, type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) ret = rdev->ops->change_virtual_intf(&rdev->wiphy, dev, type, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) static inline int rdev_add_key(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) struct net_device *netdev, u8 key_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) bool pairwise, const u8 *mac_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) struct key_params *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) trace_rdev_add_key(&rdev->wiphy, netdev, key_index, pairwise,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) mac_addr, params->mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) ret = rdev->ops->add_key(&rdev->wiphy, netdev, key_index, pairwise,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) mac_addr, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) rdev_get_key(struct cfg80211_registered_device *rdev, struct net_device *netdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) void (*callback)(void *cookie, struct key_params*))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) trace_rdev_get_key(&rdev->wiphy, netdev, key_index, pairwise, mac_addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) ret = rdev->ops->get_key(&rdev->wiphy, netdev, key_index, pairwise,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) mac_addr, cookie, callback);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) static inline int rdev_del_key(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) struct net_device *netdev, u8 key_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) bool pairwise, const u8 *mac_addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) trace_rdev_del_key(&rdev->wiphy, netdev, key_index, pairwise, mac_addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) ret = rdev->ops->del_key(&rdev->wiphy, netdev, key_index, pairwise,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) mac_addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) rdev_set_default_key(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) struct net_device *netdev, u8 key_index, bool unicast,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) bool multicast)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) trace_rdev_set_default_key(&rdev->wiphy, netdev, key_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) unicast, multicast);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) ret = rdev->ops->set_default_key(&rdev->wiphy, netdev, key_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) unicast, multicast);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) rdev_set_default_mgmt_key(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) struct net_device *netdev, u8 key_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) trace_rdev_set_default_mgmt_key(&rdev->wiphy, netdev, key_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) ret = rdev->ops->set_default_mgmt_key(&rdev->wiphy, netdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) key_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) rdev_set_default_beacon_key(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) struct net_device *netdev, u8 key_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) trace_rdev_set_default_beacon_key(&rdev->wiphy, netdev, key_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) ret = rdev->ops->set_default_beacon_key(&rdev->wiphy, netdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) key_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) static inline int rdev_start_ap(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) struct cfg80211_ap_settings *settings)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) trace_rdev_start_ap(&rdev->wiphy, dev, settings);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) ret = rdev->ops->start_ap(&rdev->wiphy, dev, settings);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) static inline int rdev_change_beacon(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) struct cfg80211_beacon_data *info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) trace_rdev_change_beacon(&rdev->wiphy, dev, info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) ret = rdev->ops->change_beacon(&rdev->wiphy, dev, info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) static inline int rdev_stop_ap(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) struct net_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) trace_rdev_stop_ap(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) ret = rdev->ops->stop_ap(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) static inline int rdev_add_station(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) struct net_device *dev, u8 *mac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) struct station_parameters *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) trace_rdev_add_station(&rdev->wiphy, dev, mac, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) ret = rdev->ops->add_station(&rdev->wiphy, dev, mac, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) static inline int rdev_del_station(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) struct station_del_parameters *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) trace_rdev_del_station(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) ret = rdev->ops->del_station(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) static inline int rdev_change_station(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) struct net_device *dev, u8 *mac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) struct station_parameters *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) trace_rdev_change_station(&rdev->wiphy, dev, mac, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) ret = rdev->ops->change_station(&rdev->wiphy, dev, mac, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) static inline int rdev_get_station(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) struct net_device *dev, const u8 *mac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) struct station_info *sinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) trace_rdev_get_station(&rdev->wiphy, dev, mac);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) ret = rdev->ops->get_station(&rdev->wiphy, dev, mac, sinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) trace_rdev_return_int_station_info(&rdev->wiphy, ret, sinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) static inline int rdev_dump_station(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) struct net_device *dev, int idx, u8 *mac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) struct station_info *sinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) trace_rdev_dump_station(&rdev->wiphy, dev, idx, mac);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) ret = rdev->ops->dump_station(&rdev->wiphy, dev, idx, mac, sinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) trace_rdev_return_int_station_info(&rdev->wiphy, ret, sinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) static inline int rdev_add_mpath(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) struct net_device *dev, u8 *dst, u8 *next_hop)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) trace_rdev_add_mpath(&rdev->wiphy, dev, dst, next_hop);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) ret = rdev->ops->add_mpath(&rdev->wiphy, dev, dst, next_hop);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) static inline int rdev_del_mpath(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) struct net_device *dev, u8 *dst)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) trace_rdev_del_mpath(&rdev->wiphy, dev, dst);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) ret = rdev->ops->del_mpath(&rdev->wiphy, dev, dst);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) static inline int rdev_change_mpath(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) struct net_device *dev, u8 *dst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) u8 *next_hop)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) trace_rdev_change_mpath(&rdev->wiphy, dev, dst, next_hop);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) ret = rdev->ops->change_mpath(&rdev->wiphy, dev, dst, next_hop);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) static inline int rdev_get_mpath(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) struct net_device *dev, u8 *dst, u8 *next_hop,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) struct mpath_info *pinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) trace_rdev_get_mpath(&rdev->wiphy, dev, dst, next_hop);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) ret = rdev->ops->get_mpath(&rdev->wiphy, dev, dst, next_hop, pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) static inline int rdev_get_mpp(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) struct net_device *dev, u8 *dst, u8 *mpp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) struct mpath_info *pinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) trace_rdev_get_mpp(&rdev->wiphy, dev, dst, mpp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) ret = rdev->ops->get_mpp(&rdev->wiphy, dev, dst, mpp, pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) static inline int rdev_dump_mpath(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) struct net_device *dev, int idx, u8 *dst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) u8 *next_hop, struct mpath_info *pinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) trace_rdev_dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) ret = rdev->ops->dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) static inline int rdev_dump_mpp(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) struct net_device *dev, int idx, u8 *dst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) u8 *mpp, struct mpath_info *pinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) trace_rdev_dump_mpp(&rdev->wiphy, dev, idx, dst, mpp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) ret = rdev->ops->dump_mpp(&rdev->wiphy, dev, idx, dst, mpp, pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) rdev_get_mesh_config(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) struct net_device *dev, struct mesh_config *conf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) trace_rdev_get_mesh_config(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) ret = rdev->ops->get_mesh_config(&rdev->wiphy, dev, conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) trace_rdev_return_int_mesh_config(&rdev->wiphy, ret, conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) rdev_update_mesh_config(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) struct net_device *dev, u32 mask,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) const struct mesh_config *nconf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) trace_rdev_update_mesh_config(&rdev->wiphy, dev, mask, nconf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) ret = rdev->ops->update_mesh_config(&rdev->wiphy, dev, mask, nconf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) static inline int rdev_join_mesh(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) const struct mesh_config *conf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) const struct mesh_setup *setup)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) trace_rdev_join_mesh(&rdev->wiphy, dev, conf, setup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) ret = rdev->ops->join_mesh(&rdev->wiphy, dev, conf, setup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) static inline int rdev_leave_mesh(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) struct net_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) trace_rdev_leave_mesh(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) ret = rdev->ops->leave_mesh(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) static inline int rdev_join_ocb(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) struct ocb_setup *setup)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) trace_rdev_join_ocb(&rdev->wiphy, dev, setup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) ret = rdev->ops->join_ocb(&rdev->wiphy, dev, setup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) static inline int rdev_leave_ocb(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) struct net_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) trace_rdev_leave_ocb(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) ret = rdev->ops->leave_ocb(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) static inline int rdev_change_bss(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) struct bss_parameters *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) trace_rdev_change_bss(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) ret = rdev->ops->change_bss(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) static inline int rdev_set_txq_params(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) struct ieee80211_txq_params *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) trace_rdev_set_txq_params(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) ret = rdev->ops->set_txq_params(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) rdev_libertas_set_mesh_channel(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) struct ieee80211_channel *chan)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) trace_rdev_libertas_set_mesh_channel(&rdev->wiphy, dev, chan);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) ret = rdev->ops->libertas_set_mesh_channel(&rdev->wiphy, dev, chan);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) rdev_set_monitor_channel(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) struct cfg80211_chan_def *chandef)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) trace_rdev_set_monitor_channel(&rdev->wiphy, chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) ret = rdev->ops->set_monitor_channel(&rdev->wiphy, chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) static inline int rdev_scan(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) struct cfg80211_scan_request *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) trace_rdev_scan(&rdev->wiphy, request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) ret = rdev->ops->scan(&rdev->wiphy, request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) static inline void rdev_abort_scan(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) struct wireless_dev *wdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) trace_rdev_abort_scan(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) rdev->ops->abort_scan(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) static inline int rdev_auth(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) struct cfg80211_auth_request *req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) trace_rdev_auth(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) ret = rdev->ops->auth(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) static inline int rdev_assoc(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) struct cfg80211_assoc_request *req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) trace_rdev_assoc(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) ret = rdev->ops->assoc(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) static inline int rdev_deauth(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) struct cfg80211_deauth_request *req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) trace_rdev_deauth(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) ret = rdev->ops->deauth(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) static inline int rdev_disassoc(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) struct cfg80211_disassoc_request *req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) trace_rdev_disassoc(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) ret = rdev->ops->disassoc(&rdev->wiphy, dev, req);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) static inline int rdev_connect(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) struct cfg80211_connect_params *sme)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) trace_rdev_connect(&rdev->wiphy, dev, sme);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) ret = rdev->ops->connect(&rdev->wiphy, dev, sme);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) rdev_update_connect_params(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) struct cfg80211_connect_params *sme, u32 changed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) trace_rdev_update_connect_params(&rdev->wiphy, dev, sme, changed);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) ret = rdev->ops->update_connect_params(&rdev->wiphy, dev, sme, changed);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) static inline int rdev_disconnect(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) struct net_device *dev, u16 reason_code)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) trace_rdev_disconnect(&rdev->wiphy, dev, reason_code);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) ret = rdev->ops->disconnect(&rdev->wiphy, dev, reason_code);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) static inline int rdev_join_ibss(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) struct cfg80211_ibss_params *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) trace_rdev_join_ibss(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) ret = rdev->ops->join_ibss(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) static inline int rdev_leave_ibss(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) struct net_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) trace_rdev_leave_ibss(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) ret = rdev->ops->leave_ibss(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) rdev_set_wiphy_params(struct cfg80211_registered_device *rdev, u32 changed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) if (!rdev->ops->set_wiphy_params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) return -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) trace_rdev_set_wiphy_params(&rdev->wiphy, changed);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) ret = rdev->ops->set_wiphy_params(&rdev->wiphy, changed);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) static inline int rdev_set_tx_power(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) enum nl80211_tx_power_setting type, int mbm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) trace_rdev_set_tx_power(&rdev->wiphy, wdev, type, mbm);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) ret = rdev->ops->set_tx_power(&rdev->wiphy, wdev, type, mbm);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) struct wireless_dev *wdev, int *dbm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) trace_rdev_get_tx_power(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) ret = rdev->ops->get_tx_power(&rdev->wiphy, wdev, dbm);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) trace_rdev_return_int_int(&rdev->wiphy, ret, *dbm);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) struct net_device *dev, const u8 *addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) trace_rdev_set_wds_peer(&rdev->wiphy, dev, addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) ret = rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) rdev_set_multicast_to_unicast(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) const bool enabled)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) trace_rdev_set_multicast_to_unicast(&rdev->wiphy, dev, enabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) ret = rdev->ops->set_multicast_to_unicast(&rdev->wiphy, dev, enabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) rdev_get_txq_stats(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) struct cfg80211_txq_stats *txqstats)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) trace_rdev_get_txq_stats(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) ret = rdev->ops->get_txq_stats(&rdev->wiphy, wdev, txqstats);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) trace_rdev_rfkill_poll(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) rdev->ops->rfkill_poll(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) #ifdef CONFIG_NL80211_TESTMODE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) static inline int rdev_testmode_cmd(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) void *data, int len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) trace_rdev_testmode_cmd(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) ret = rdev->ops->testmode_cmd(&rdev->wiphy, wdev, data, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) static inline int rdev_testmode_dump(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) struct sk_buff *skb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) struct netlink_callback *cb, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) int len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) trace_rdev_testmode_dump(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) ret = rdev->ops->testmode_dump(&rdev->wiphy, skb, cb, data, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) rdev_set_bitrate_mask(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) struct net_device *dev, const u8 *peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) const struct cfg80211_bitrate_mask *mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) trace_rdev_set_bitrate_mask(&rdev->wiphy, dev, peer, mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) ret = rdev->ops->set_bitrate_mask(&rdev->wiphy, dev, peer, mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) static inline int rdev_dump_survey(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) struct net_device *netdev, int idx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) struct survey_info *info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) trace_rdev_dump_survey(&rdev->wiphy, netdev, idx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) ret = rdev->ops->dump_survey(&rdev->wiphy, netdev, idx, info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) if (ret < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) trace_rdev_return_int_survey_info(&rdev->wiphy, ret, info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) static inline int rdev_set_pmksa(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) struct net_device *netdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) struct cfg80211_pmksa *pmksa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) trace_rdev_set_pmksa(&rdev->wiphy, netdev, pmksa);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) ret = rdev->ops->set_pmksa(&rdev->wiphy, netdev, pmksa);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) static inline int rdev_del_pmksa(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) struct net_device *netdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) struct cfg80211_pmksa *pmksa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) trace_rdev_del_pmksa(&rdev->wiphy, netdev, pmksa);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) ret = rdev->ops->del_pmksa(&rdev->wiphy, netdev, pmksa);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) static inline int rdev_flush_pmksa(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) struct net_device *netdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) trace_rdev_flush_pmksa(&rdev->wiphy, netdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) ret = rdev->ops->flush_pmksa(&rdev->wiphy, netdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) rdev_remain_on_channel(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) struct ieee80211_channel *chan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) unsigned int duration, u64 *cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) trace_rdev_remain_on_channel(&rdev->wiphy, wdev, chan, duration);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) ret = rdev->ops->remain_on_channel(&rdev->wiphy, wdev, chan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) duration, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) rdev_cancel_remain_on_channel(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) struct wireless_dev *wdev, u64 cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) trace_rdev_cancel_remain_on_channel(&rdev->wiphy, wdev, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) ret = rdev->ops->cancel_remain_on_channel(&rdev->wiphy, wdev, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) static inline int rdev_mgmt_tx(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) struct cfg80211_mgmt_tx_params *params,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) u64 *cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) trace_rdev_mgmt_tx(&rdev->wiphy, wdev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) ret = rdev->ops->mgmt_tx(&rdev->wiphy, wdev, params, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) static inline int rdev_tx_control_port(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) const void *buf, size_t len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) const u8 *dest, __be16 proto,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) const bool noencrypt, u64 *cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) trace_rdev_tx_control_port(&rdev->wiphy, dev, buf, len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) dest, proto, noencrypt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) ret = rdev->ops->tx_control_port(&rdev->wiphy, dev, buf, len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) dest, proto, noencrypt, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) if (cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) rdev_mgmt_tx_cancel_wait(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) struct wireless_dev *wdev, u64 cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) trace_rdev_mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) ret = rdev->ops->mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) static inline int rdev_set_power_mgmt(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) struct net_device *dev, bool enabled,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) int timeout)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) trace_rdev_set_power_mgmt(&rdev->wiphy, dev, enabled, timeout);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) ret = rdev->ops->set_power_mgmt(&rdev->wiphy, dev, enabled, timeout);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) rdev_set_cqm_rssi_config(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) struct net_device *dev, s32 rssi_thold, u32 rssi_hyst)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) trace_rdev_set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) rssi_hyst);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) ret = rdev->ops->set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) rssi_hyst);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) rdev_set_cqm_rssi_range_config(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) struct net_device *dev, s32 low, s32 high)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) trace_rdev_set_cqm_rssi_range_config(&rdev->wiphy, dev, low, high);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) ret = rdev->ops->set_cqm_rssi_range_config(&rdev->wiphy, dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) low, high);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) rdev_set_cqm_txe_config(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) struct net_device *dev, u32 rate, u32 pkts, u32 intvl)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) trace_rdev_set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts, intvl);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) ret = rdev->ops->set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) intvl);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) static inline void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) rdev_update_mgmt_frame_registrations(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) struct mgmt_frame_regs *upd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) might_sleep();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) trace_rdev_update_mgmt_frame_registrations(&rdev->wiphy, wdev, upd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) if (rdev->ops->update_mgmt_frame_registrations)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) rdev->ops->update_mgmt_frame_registrations(&rdev->wiphy, wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) upd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) static inline int rdev_set_antenna(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) u32 tx_ant, u32 rx_ant)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) trace_rdev_set_antenna(&rdev->wiphy, tx_ant, rx_ant);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) ret = rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) static inline int rdev_get_antenna(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) u32 *tx_ant, u32 *rx_ant)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) trace_rdev_get_antenna(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) ret = rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) trace_rdev_return_int_tx_rx(&rdev->wiphy, ret, *tx_ant,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) *rx_ant);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) rdev_sched_scan_start(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) struct cfg80211_sched_scan_request *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) trace_rdev_sched_scan_start(&rdev->wiphy, dev, request->reqid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) ret = rdev->ops->sched_scan_start(&rdev->wiphy, dev, request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) struct net_device *dev, u64 reqid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) trace_rdev_sched_scan_stop(&rdev->wiphy, dev, reqid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) ret = rdev->ops->sched_scan_stop(&rdev->wiphy, dev, reqid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) static inline int rdev_set_rekey_data(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) struct cfg80211_gtk_rekey_data *data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) trace_rdev_set_rekey_data(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) ret = rdev->ops->set_rekey_data(&rdev->wiphy, dev, data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) static inline int rdev_tdls_mgmt(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) struct net_device *dev, u8 *peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) u8 action_code, u8 dialog_token,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) u16 status_code, u32 peer_capability,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) bool initiator, const u8 *buf, size_t len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) trace_rdev_tdls_mgmt(&rdev->wiphy, dev, peer, action_code,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) dialog_token, status_code, peer_capability,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) initiator, buf, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) ret = rdev->ops->tdls_mgmt(&rdev->wiphy, dev, peer, action_code,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) dialog_token, status_code, peer_capability,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) initiator, buf, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) static inline int rdev_tdls_oper(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) struct net_device *dev, u8 *peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) enum nl80211_tdls_operation oper)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) trace_rdev_tdls_oper(&rdev->wiphy, dev, peer, oper);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) ret = rdev->ops->tdls_oper(&rdev->wiphy, dev, peer, oper);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) static inline int rdev_probe_client(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) struct net_device *dev, const u8 *peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) u64 *cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) trace_rdev_probe_client(&rdev->wiphy, dev, peer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) ret = rdev->ops->probe_client(&rdev->wiphy, dev, peer, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) static inline int rdev_set_noack_map(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) struct net_device *dev, u16 noack_map)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) trace_rdev_set_noack_map(&rdev->wiphy, dev, noack_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) ret = rdev->ops->set_noack_map(&rdev->wiphy, dev, noack_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) rdev_get_channel(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) struct cfg80211_chan_def *chandef)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) trace_rdev_get_channel(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) ret = rdev->ops->get_channel(&rdev->wiphy, wdev, chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) trace_rdev_return_chandef(&rdev->wiphy, ret, chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) static inline int rdev_start_p2p_device(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) struct wireless_dev *wdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) trace_rdev_start_p2p_device(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) ret = rdev->ops->start_p2p_device(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) static inline void rdev_stop_p2p_device(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) struct wireless_dev *wdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) trace_rdev_stop_p2p_device(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) rdev->ops->stop_p2p_device(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) static inline int rdev_start_nan(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) struct cfg80211_nan_conf *conf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) trace_rdev_start_nan(&rdev->wiphy, wdev, conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) ret = rdev->ops->start_nan(&rdev->wiphy, wdev, conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) static inline void rdev_stop_nan(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) struct wireless_dev *wdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) trace_rdev_stop_nan(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) rdev->ops->stop_nan(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) rdev_add_nan_func(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) struct cfg80211_nan_func *nan_func)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) trace_rdev_add_nan_func(&rdev->wiphy, wdev, nan_func);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) ret = rdev->ops->add_nan_func(&rdev->wiphy, wdev, nan_func);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) static inline void rdev_del_nan_func(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) struct wireless_dev *wdev, u64 cookie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) trace_rdev_del_nan_func(&rdev->wiphy, wdev, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) rdev->ops->del_nan_func(&rdev->wiphy, wdev, cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) rdev_nan_change_conf(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) struct cfg80211_nan_conf *conf, u32 changes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) trace_rdev_nan_change_conf(&rdev->wiphy, wdev, conf, changes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) if (rdev->ops->nan_change_conf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) ret = rdev->ops->nan_change_conf(&rdev->wiphy, wdev, conf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) changes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) ret = -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) static inline int rdev_set_mac_acl(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) struct cfg80211_acl_data *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) trace_rdev_set_mac_acl(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) ret = rdev->ops->set_mac_acl(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) static inline int rdev_update_ft_ies(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) struct cfg80211_update_ft_ies_params *ftie)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) trace_rdev_update_ft_ies(&rdev->wiphy, dev, ftie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) ret = rdev->ops->update_ft_ies(&rdev->wiphy, dev, ftie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) static inline int rdev_crit_proto_start(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) enum nl80211_crit_proto_id protocol,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) u16 duration)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) trace_rdev_crit_proto_start(&rdev->wiphy, wdev, protocol, duration);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) ret = rdev->ops->crit_proto_start(&rdev->wiphy, wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) protocol, duration);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) static inline void rdev_crit_proto_stop(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) struct wireless_dev *wdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) trace_rdev_crit_proto_stop(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) rdev->ops->crit_proto_stop(&rdev->wiphy, wdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) static inline int rdev_channel_switch(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) struct cfg80211_csa_settings *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) trace_rdev_channel_switch(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) ret = rdev->ops->channel_switch(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) static inline int rdev_set_qos_map(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) struct cfg80211_qos_map *qos_map)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) if (rdev->ops->set_qos_map) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) trace_rdev_set_qos_map(&rdev->wiphy, dev, qos_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) ret = rdev->ops->set_qos_map(&rdev->wiphy, dev, qos_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) rdev_set_ap_chanwidth(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) struct net_device *dev, struct cfg80211_chan_def *chandef)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) trace_rdev_set_ap_chanwidth(&rdev->wiphy, dev, chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) ret = rdev->ops->set_ap_chanwidth(&rdev->wiphy, dev, chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) rdev_add_tx_ts(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) struct net_device *dev, u8 tsid, const u8 *peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) u8 user_prio, u16 admitted_time)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) trace_rdev_add_tx_ts(&rdev->wiphy, dev, tsid, peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) user_prio, admitted_time);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) if (rdev->ops->add_tx_ts)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) ret = rdev->ops->add_tx_ts(&rdev->wiphy, dev, tsid, peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) user_prio, admitted_time);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) rdev_del_tx_ts(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) struct net_device *dev, u8 tsid, const u8 *peer)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) trace_rdev_del_tx_ts(&rdev->wiphy, dev, tsid, peer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) if (rdev->ops->del_tx_ts)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) ret = rdev->ops->del_tx_ts(&rdev->wiphy, dev, tsid, peer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) rdev_tdls_channel_switch(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) struct net_device *dev, const u8 *addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) u8 oper_class, struct cfg80211_chan_def *chandef)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) trace_rdev_tdls_channel_switch(&rdev->wiphy, dev, addr, oper_class,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) ret = rdev->ops->tdls_channel_switch(&rdev->wiphy, dev, addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) oper_class, chandef);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) static inline void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) rdev_tdls_cancel_channel_switch(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) struct net_device *dev, const u8 *addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) trace_rdev_tdls_cancel_channel_switch(&rdev->wiphy, dev, addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) rdev->ops->tdls_cancel_channel_switch(&rdev->wiphy, dev, addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) rdev_start_radar_detection(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) struct cfg80211_chan_def *chandef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) u32 cac_time_ms)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) int ret = -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) trace_rdev_start_radar_detection(&rdev->wiphy, dev, chandef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) cac_time_ms);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) if (rdev->ops->start_radar_detection)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) ret = rdev->ops->start_radar_detection(&rdev->wiphy, dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) chandef, cac_time_ms);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) static inline void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) rdev_end_cac(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) struct net_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) trace_rdev_end_cac(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) if (rdev->ops->end_cac)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) rdev->ops->end_cac(&rdev->wiphy, dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) rdev_set_mcast_rate(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) int mcast_rate[NUM_NL80211_BANDS])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) int ret = -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) trace_rdev_set_mcast_rate(&rdev->wiphy, dev, mcast_rate);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) if (rdev->ops->set_mcast_rate)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) ret = rdev->ops->set_mcast_rate(&rdev->wiphy, dev, mcast_rate);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) rdev_set_coalesce(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) struct cfg80211_coalesce *coalesce)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) int ret = -ENOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) trace_rdev_set_coalesce(&rdev->wiphy, coalesce);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) if (rdev->ops->set_coalesce)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) ret = rdev->ops->set_coalesce(&rdev->wiphy, coalesce);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) static inline int rdev_set_pmk(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) struct cfg80211_pmk_conf *pmk_conf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) trace_rdev_set_pmk(&rdev->wiphy, dev, pmk_conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) if (rdev->ops->set_pmk)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) ret = rdev->ops->set_pmk(&rdev->wiphy, dev, pmk_conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) static inline int rdev_del_pmk(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) struct net_device *dev, const u8 *aa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) trace_rdev_del_pmk(&rdev->wiphy, dev, aa);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) if (rdev->ops->del_pmk)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) ret = rdev->ops->del_pmk(&rdev->wiphy, dev, aa);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) rdev_external_auth(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) struct cfg80211_external_auth_params *params)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) trace_rdev_external_auth(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) if (rdev->ops->external_auth)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) ret = rdev->ops->external_auth(&rdev->wiphy, dev, params);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) rdev_get_ftm_responder_stats(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) struct cfg80211_ftm_responder_stats *ftm_stats)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) trace_rdev_get_ftm_responder_stats(&rdev->wiphy, dev, ftm_stats);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) if (rdev->ops->get_ftm_responder_stats)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) ret = rdev->ops->get_ftm_responder_stats(&rdev->wiphy, dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) ftm_stats);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) rdev_start_pmsr(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) struct cfg80211_pmsr_request *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) trace_rdev_start_pmsr(&rdev->wiphy, wdev, request->cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) if (rdev->ops->start_pmsr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) ret = rdev->ops->start_pmsr(&rdev->wiphy, wdev, request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) static inline void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) rdev_abort_pmsr(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) struct wireless_dev *wdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) struct cfg80211_pmsr_request *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) trace_rdev_abort_pmsr(&rdev->wiphy, wdev, request->cookie);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) if (rdev->ops->abort_pmsr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) rdev->ops->abort_pmsr(&rdev->wiphy, wdev, request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) trace_rdev_return_void(&rdev->wiphy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) static inline int rdev_update_owe_info(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) struct cfg80211_update_owe_info *oweinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) int ret = -EOPNOTSUPP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) trace_rdev_update_owe_info(&rdev->wiphy, dev, oweinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) if (rdev->ops->update_owe_info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) ret = rdev->ops->update_owe_info(&rdev->wiphy, dev, oweinfo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) static inline int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) rdev_probe_mesh_link(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) struct net_device *dev, const u8 *dest,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) const void *buf, size_t len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) trace_rdev_probe_mesh_link(&rdev->wiphy, dev, dest, buf, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) ret = rdev->ops->probe_mesh_link(&rdev->wiphy, dev, buf, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) static inline int rdev_set_tid_config(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) struct cfg80211_tid_config *tid_conf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) trace_rdev_set_tid_config(&rdev->wiphy, dev, tid_conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) ret = rdev->ops->set_tid_config(&rdev->wiphy, dev, tid_conf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) static inline int rdev_reset_tid_config(struct cfg80211_registered_device *rdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) struct net_device *dev, const u8 *peer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) u8 tids)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) trace_rdev_reset_tid_config(&rdev->wiphy, dev, peer, tids);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) ret = rdev->ops->reset_tid_config(&rdev->wiphy, dev, peer, tids);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) trace_rdev_return_int(&rdev->wiphy, ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) #endif /* __CFG80211_RDEV_OPS */