1*e35e4d28SHila Gonen #ifndef __CFG80211_RDEV_OPS 2*e35e4d28SHila Gonen #define __CFG80211_RDEV_OPS 3*e35e4d28SHila Gonen 4*e35e4d28SHila Gonen #include <linux/rtnetlink.h> 5*e35e4d28SHila Gonen #include <net/cfg80211.h> 6*e35e4d28SHila Gonen #include "core.h" 7*e35e4d28SHila Gonen 8*e35e4d28SHila Gonen static inline int rdev_suspend(struct cfg80211_registered_device *rdev) 9*e35e4d28SHila Gonen { 10*e35e4d28SHila Gonen return rdev->ops->suspend(&rdev->wiphy, rdev->wowlan); 11*e35e4d28SHila Gonen } 12*e35e4d28SHila Gonen 13*e35e4d28SHila Gonen static inline int rdev_resume(struct cfg80211_registered_device *rdev) 14*e35e4d28SHila Gonen { 15*e35e4d28SHila Gonen return rdev->ops->resume(&rdev->wiphy); 16*e35e4d28SHila Gonen } 17*e35e4d28SHila Gonen 18*e35e4d28SHila Gonen static inline void rdev_set_wakeup(struct cfg80211_registered_device *rdev, 19*e35e4d28SHila Gonen bool enabled) 20*e35e4d28SHila Gonen { 21*e35e4d28SHila Gonen rdev->ops->set_wakeup(&rdev->wiphy, enabled); 22*e35e4d28SHila Gonen } 23*e35e4d28SHila Gonen 24*e35e4d28SHila Gonen static inline struct wireless_dev 25*e35e4d28SHila Gonen *rdev_add_virtual_intf(struct cfg80211_registered_device *rdev, char *name, 26*e35e4d28SHila Gonen enum nl80211_iftype type, u32 *flags, 27*e35e4d28SHila Gonen struct vif_params *params) 28*e35e4d28SHila Gonen { 29*e35e4d28SHila Gonen return rdev->ops->add_virtual_intf(&rdev->wiphy, name, type, flags, 30*e35e4d28SHila Gonen params); 31*e35e4d28SHila Gonen } 32*e35e4d28SHila Gonen 33*e35e4d28SHila Gonen static inline int 34*e35e4d28SHila Gonen rdev_del_virtual_intf(struct cfg80211_registered_device *rdev, 35*e35e4d28SHila Gonen struct wireless_dev *wdev) 36*e35e4d28SHila Gonen { 37*e35e4d28SHila Gonen return rdev->ops->del_virtual_intf(&rdev->wiphy, wdev); 38*e35e4d28SHila Gonen } 39*e35e4d28SHila Gonen 40*e35e4d28SHila Gonen static inline int 41*e35e4d28SHila Gonen rdev_change_virtual_intf(struct cfg80211_registered_device *rdev, 42*e35e4d28SHila Gonen struct net_device *dev, enum nl80211_iftype type, 43*e35e4d28SHila Gonen u32 *flags, struct vif_params *params) 44*e35e4d28SHila Gonen { 45*e35e4d28SHila Gonen return rdev->ops->change_virtual_intf(&rdev->wiphy, dev, type, flags, 46*e35e4d28SHila Gonen params); 47*e35e4d28SHila Gonen } 48*e35e4d28SHila Gonen 49*e35e4d28SHila Gonen static inline int rdev_add_key(struct cfg80211_registered_device *rdev, 50*e35e4d28SHila Gonen struct net_device *netdev, u8 key_index, 51*e35e4d28SHila Gonen bool pairwise, const u8 *mac_addr, 52*e35e4d28SHila Gonen struct key_params *params) 53*e35e4d28SHila Gonen { 54*e35e4d28SHila Gonen return rdev->ops->add_key(&rdev->wiphy, netdev, key_index, pairwise, 55*e35e4d28SHila Gonen mac_addr, params); 56*e35e4d28SHila Gonen } 57*e35e4d28SHila Gonen 58*e35e4d28SHila Gonen static inline int 59*e35e4d28SHila Gonen rdev_get_key(struct cfg80211_registered_device *rdev, struct net_device *netdev, 60*e35e4d28SHila Gonen u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie, 61*e35e4d28SHila Gonen void (*callback)(void *cookie, struct key_params*)) 62*e35e4d28SHila Gonen { 63*e35e4d28SHila Gonen return rdev->ops->get_key(&rdev->wiphy, netdev, key_index, pairwise, 64*e35e4d28SHila Gonen mac_addr, cookie, callback); 65*e35e4d28SHila Gonen } 66*e35e4d28SHila Gonen 67*e35e4d28SHila Gonen static inline int rdev_del_key(struct cfg80211_registered_device *rdev, 68*e35e4d28SHila Gonen struct net_device *netdev, u8 key_index, 69*e35e4d28SHila Gonen bool pairwise, const u8 *mac_addr) 70*e35e4d28SHila Gonen { 71*e35e4d28SHila Gonen return rdev->ops->del_key(&rdev->wiphy, netdev, key_index, pairwise, 72*e35e4d28SHila Gonen mac_addr); 73*e35e4d28SHila Gonen } 74*e35e4d28SHila Gonen 75*e35e4d28SHila Gonen static inline int 76*e35e4d28SHila Gonen rdev_set_default_key(struct cfg80211_registered_device *rdev, 77*e35e4d28SHila Gonen struct net_device *netdev, u8 key_index, bool unicast, 78*e35e4d28SHila Gonen bool multicast) 79*e35e4d28SHila Gonen { 80*e35e4d28SHila Gonen return rdev->ops->set_default_key(&rdev->wiphy, netdev, key_index, 81*e35e4d28SHila Gonen unicast, multicast); 82*e35e4d28SHila Gonen } 83*e35e4d28SHila Gonen 84*e35e4d28SHila Gonen static inline int 85*e35e4d28SHila Gonen rdev_set_default_mgmt_key(struct cfg80211_registered_device *rdev, 86*e35e4d28SHila Gonen struct net_device *netdev, u8 key_index) 87*e35e4d28SHila Gonen { 88*e35e4d28SHila Gonen return rdev->ops->set_default_mgmt_key(&rdev->wiphy, netdev, 89*e35e4d28SHila Gonen key_index); 90*e35e4d28SHila Gonen } 91*e35e4d28SHila Gonen 92*e35e4d28SHila Gonen static inline int rdev_start_ap(struct cfg80211_registered_device *rdev, 93*e35e4d28SHila Gonen struct net_device *dev, 94*e35e4d28SHila Gonen struct cfg80211_ap_settings *settings) 95*e35e4d28SHila Gonen { 96*e35e4d28SHila Gonen return rdev->ops->start_ap(&rdev->wiphy, dev, settings); 97*e35e4d28SHila Gonen } 98*e35e4d28SHila Gonen 99*e35e4d28SHila Gonen static inline int rdev_change_beacon(struct cfg80211_registered_device *rdev, 100*e35e4d28SHila Gonen struct net_device *dev, 101*e35e4d28SHila Gonen struct cfg80211_beacon_data *info) 102*e35e4d28SHila Gonen { 103*e35e4d28SHila Gonen return rdev->ops->change_beacon(&rdev->wiphy, dev, info); 104*e35e4d28SHila Gonen } 105*e35e4d28SHila Gonen 106*e35e4d28SHila Gonen static inline int rdev_stop_ap(struct cfg80211_registered_device *rdev, 107*e35e4d28SHila Gonen struct net_device *dev) 108*e35e4d28SHila Gonen { 109*e35e4d28SHila Gonen return rdev->ops->stop_ap(&rdev->wiphy, dev); 110*e35e4d28SHila Gonen } 111*e35e4d28SHila Gonen 112*e35e4d28SHila Gonen static inline int rdev_add_station(struct cfg80211_registered_device *rdev, 113*e35e4d28SHila Gonen struct net_device *dev, u8 *mac, 114*e35e4d28SHila Gonen struct station_parameters *params) 115*e35e4d28SHila Gonen { 116*e35e4d28SHila Gonen return rdev->ops->add_station(&rdev->wiphy, dev, mac, params); 117*e35e4d28SHila Gonen } 118*e35e4d28SHila Gonen 119*e35e4d28SHila Gonen static inline int rdev_del_station(struct cfg80211_registered_device *rdev, 120*e35e4d28SHila Gonen struct net_device *dev, u8 *mac) 121*e35e4d28SHila Gonen { 122*e35e4d28SHila Gonen return rdev->ops->del_station(&rdev->wiphy, dev, mac); 123*e35e4d28SHila Gonen } 124*e35e4d28SHila Gonen 125*e35e4d28SHila Gonen static inline int rdev_change_station(struct cfg80211_registered_device *rdev, 126*e35e4d28SHila Gonen struct net_device *dev, u8 *mac, 127*e35e4d28SHila Gonen struct station_parameters *params) 128*e35e4d28SHila Gonen { 129*e35e4d28SHila Gonen return rdev->ops->change_station(&rdev->wiphy, dev, mac, params); 130*e35e4d28SHila Gonen } 131*e35e4d28SHila Gonen 132*e35e4d28SHila Gonen static inline int rdev_get_station(struct cfg80211_registered_device *rdev, 133*e35e4d28SHila Gonen struct net_device *dev, u8 *mac, 134*e35e4d28SHila Gonen struct station_info *sinfo) 135*e35e4d28SHila Gonen { 136*e35e4d28SHila Gonen return rdev->ops->get_station(&rdev->wiphy, dev, mac, sinfo); 137*e35e4d28SHila Gonen } 138*e35e4d28SHila Gonen 139*e35e4d28SHila Gonen static inline int rdev_dump_station(struct cfg80211_registered_device *rdev, 140*e35e4d28SHila Gonen struct net_device *dev, int idx, u8 *mac, 141*e35e4d28SHila Gonen struct station_info *sinfo) 142*e35e4d28SHila Gonen { 143*e35e4d28SHila Gonen return rdev->ops->dump_station(&rdev->wiphy, dev, idx, mac, sinfo); 144*e35e4d28SHila Gonen } 145*e35e4d28SHila Gonen 146*e35e4d28SHila Gonen static inline int rdev_add_mpath(struct cfg80211_registered_device *rdev, 147*e35e4d28SHila Gonen struct net_device *dev, u8 *dst, u8 *next_hop) 148*e35e4d28SHila Gonen { 149*e35e4d28SHila Gonen return rdev->ops->add_mpath(&rdev->wiphy, dev, dst, next_hop); 150*e35e4d28SHila Gonen } 151*e35e4d28SHila Gonen 152*e35e4d28SHila Gonen static inline int rdev_del_mpath(struct cfg80211_registered_device *rdev, 153*e35e4d28SHila Gonen struct net_device *dev, u8 *dst) 154*e35e4d28SHila Gonen { 155*e35e4d28SHila Gonen return rdev->ops->del_mpath(&rdev->wiphy, dev, dst); 156*e35e4d28SHila Gonen } 157*e35e4d28SHila Gonen 158*e35e4d28SHila Gonen static inline int rdev_change_mpath(struct cfg80211_registered_device *rdev, 159*e35e4d28SHila Gonen struct net_device *dev, u8 *dst, 160*e35e4d28SHila Gonen u8 *next_hop) 161*e35e4d28SHila Gonen { 162*e35e4d28SHila Gonen return rdev->ops->change_mpath(&rdev->wiphy, dev, dst, next_hop); 163*e35e4d28SHila Gonen } 164*e35e4d28SHila Gonen 165*e35e4d28SHila Gonen static inline int rdev_get_mpath(struct cfg80211_registered_device *rdev, 166*e35e4d28SHila Gonen struct net_device *dev, u8 *dst, u8 *next_hop, 167*e35e4d28SHila Gonen struct mpath_info *pinfo) 168*e35e4d28SHila Gonen { 169*e35e4d28SHila Gonen return rdev->ops->get_mpath(&rdev->wiphy, dev, dst, next_hop, pinfo); 170*e35e4d28SHila Gonen } 171*e35e4d28SHila Gonen 172*e35e4d28SHila Gonen static inline int rdev_dump_mpath(struct cfg80211_registered_device *rdev, 173*e35e4d28SHila Gonen struct net_device *dev, int idx, u8 *dst, 174*e35e4d28SHila Gonen u8 *next_hop, struct mpath_info *pinfo) 175*e35e4d28SHila Gonen 176*e35e4d28SHila Gonen { 177*e35e4d28SHila Gonen return rdev->ops->dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop, 178*e35e4d28SHila Gonen pinfo); 179*e35e4d28SHila Gonen } 180*e35e4d28SHila Gonen 181*e35e4d28SHila Gonen static inline int 182*e35e4d28SHila Gonen rdev_get_mesh_config(struct cfg80211_registered_device *rdev, 183*e35e4d28SHila Gonen struct net_device *dev, struct mesh_config *conf) 184*e35e4d28SHila Gonen { 185*e35e4d28SHila Gonen return rdev->ops->get_mesh_config(&rdev->wiphy, dev, conf); 186*e35e4d28SHila Gonen } 187*e35e4d28SHila Gonen 188*e35e4d28SHila Gonen static inline int 189*e35e4d28SHila Gonen rdev_update_mesh_config(struct cfg80211_registered_device *rdev, 190*e35e4d28SHila Gonen struct net_device *dev, u32 mask, 191*e35e4d28SHila Gonen const struct mesh_config *nconf) 192*e35e4d28SHila Gonen { 193*e35e4d28SHila Gonen return rdev->ops->update_mesh_config(&rdev->wiphy, dev, mask, nconf); 194*e35e4d28SHila Gonen } 195*e35e4d28SHila Gonen 196*e35e4d28SHila Gonen static inline int rdev_join_mesh(struct cfg80211_registered_device *rdev, 197*e35e4d28SHila Gonen struct net_device *dev, 198*e35e4d28SHila Gonen const struct mesh_config *conf, 199*e35e4d28SHila Gonen const struct mesh_setup *setup) 200*e35e4d28SHila Gonen { 201*e35e4d28SHila Gonen return rdev->ops->join_mesh(&rdev->wiphy, dev, conf, setup); 202*e35e4d28SHila Gonen } 203*e35e4d28SHila Gonen 204*e35e4d28SHila Gonen 205*e35e4d28SHila Gonen static inline int rdev_leave_mesh(struct cfg80211_registered_device *rdev, 206*e35e4d28SHila Gonen struct net_device *dev) 207*e35e4d28SHila Gonen { 208*e35e4d28SHila Gonen return rdev->ops->leave_mesh(&rdev->wiphy, dev); 209*e35e4d28SHila Gonen } 210*e35e4d28SHila Gonen 211*e35e4d28SHila Gonen static inline int rdev_change_bss(struct cfg80211_registered_device *rdev, 212*e35e4d28SHila Gonen struct net_device *dev, 213*e35e4d28SHila Gonen struct bss_parameters *params) 214*e35e4d28SHila Gonen 215*e35e4d28SHila Gonen { 216*e35e4d28SHila Gonen return rdev->ops->change_bss(&rdev->wiphy, dev, params); 217*e35e4d28SHila Gonen } 218*e35e4d28SHila Gonen 219*e35e4d28SHila Gonen static inline int rdev_set_txq_params(struct cfg80211_registered_device *rdev, 220*e35e4d28SHila Gonen struct net_device *dev, 221*e35e4d28SHila Gonen struct ieee80211_txq_params *params) 222*e35e4d28SHila Gonen 223*e35e4d28SHila Gonen { 224*e35e4d28SHila Gonen return rdev->ops->set_txq_params(&rdev->wiphy, dev, params); 225*e35e4d28SHila Gonen } 226*e35e4d28SHila Gonen 227*e35e4d28SHila Gonen static inline int 228*e35e4d28SHila Gonen rdev_libertas_set_mesh_channel(struct cfg80211_registered_device *rdev, 229*e35e4d28SHila Gonen struct net_device *dev, 230*e35e4d28SHila Gonen struct ieee80211_channel *chan) 231*e35e4d28SHila Gonen { 232*e35e4d28SHila Gonen return rdev->ops->libertas_set_mesh_channel(&rdev->wiphy, dev, chan); 233*e35e4d28SHila Gonen } 234*e35e4d28SHila Gonen 235*e35e4d28SHila Gonen static inline int 236*e35e4d28SHila Gonen rdev_set_monitor_channel(struct cfg80211_registered_device *rdev, 237*e35e4d28SHila Gonen struct ieee80211_channel *chan, 238*e35e4d28SHila Gonen enum nl80211_channel_type channel_type) 239*e35e4d28SHila Gonen { 240*e35e4d28SHila Gonen return rdev->ops->set_monitor_channel(&rdev->wiphy, chan, 241*e35e4d28SHila Gonen channel_type); 242*e35e4d28SHila Gonen } 243*e35e4d28SHila Gonen 244*e35e4d28SHila Gonen static inline int rdev_scan(struct cfg80211_registered_device *rdev, 245*e35e4d28SHila Gonen struct cfg80211_scan_request *request) 246*e35e4d28SHila Gonen { 247*e35e4d28SHila Gonen return rdev->ops->scan(&rdev->wiphy, request); 248*e35e4d28SHila Gonen } 249*e35e4d28SHila Gonen 250*e35e4d28SHila Gonen static inline int rdev_auth(struct cfg80211_registered_device *rdev, 251*e35e4d28SHila Gonen struct net_device *dev, 252*e35e4d28SHila Gonen struct cfg80211_auth_request *req) 253*e35e4d28SHila Gonen { 254*e35e4d28SHila Gonen return rdev->ops->auth(&rdev->wiphy, dev, req); 255*e35e4d28SHila Gonen } 256*e35e4d28SHila Gonen 257*e35e4d28SHila Gonen static inline int rdev_assoc(struct cfg80211_registered_device *rdev, 258*e35e4d28SHila Gonen struct net_device *dev, 259*e35e4d28SHila Gonen struct cfg80211_assoc_request *req) 260*e35e4d28SHila Gonen { 261*e35e4d28SHila Gonen return rdev->ops->assoc(&rdev->wiphy, dev, req); 262*e35e4d28SHila Gonen } 263*e35e4d28SHila Gonen 264*e35e4d28SHila Gonen static inline int rdev_deauth(struct cfg80211_registered_device *rdev, 265*e35e4d28SHila Gonen struct net_device *dev, 266*e35e4d28SHila Gonen struct cfg80211_deauth_request *req) 267*e35e4d28SHila Gonen { 268*e35e4d28SHila Gonen return rdev->ops->deauth(&rdev->wiphy, dev, req); 269*e35e4d28SHila Gonen } 270*e35e4d28SHila Gonen 271*e35e4d28SHila Gonen static inline int rdev_disassoc(struct cfg80211_registered_device *rdev, 272*e35e4d28SHila Gonen struct net_device *dev, 273*e35e4d28SHila Gonen struct cfg80211_disassoc_request *req) 274*e35e4d28SHila Gonen { 275*e35e4d28SHila Gonen return rdev->ops->disassoc(&rdev->wiphy, dev, req); 276*e35e4d28SHila Gonen } 277*e35e4d28SHila Gonen 278*e35e4d28SHila Gonen static inline int rdev_connect(struct cfg80211_registered_device *rdev, 279*e35e4d28SHila Gonen struct net_device *dev, 280*e35e4d28SHila Gonen struct cfg80211_connect_params *sme) 281*e35e4d28SHila Gonen { 282*e35e4d28SHila Gonen return rdev->ops->connect(&rdev->wiphy, dev, sme); 283*e35e4d28SHila Gonen } 284*e35e4d28SHila Gonen 285*e35e4d28SHila Gonen static inline int rdev_disconnect(struct cfg80211_registered_device *rdev, 286*e35e4d28SHila Gonen struct net_device *dev, u16 reason_code) 287*e35e4d28SHila Gonen { 288*e35e4d28SHila Gonen return rdev->ops->disconnect(&rdev->wiphy, dev, reason_code); 289*e35e4d28SHila Gonen } 290*e35e4d28SHila Gonen 291*e35e4d28SHila Gonen static inline int rdev_join_ibss(struct cfg80211_registered_device *rdev, 292*e35e4d28SHila Gonen struct net_device *dev, 293*e35e4d28SHila Gonen struct cfg80211_ibss_params *params) 294*e35e4d28SHila Gonen { 295*e35e4d28SHila Gonen return rdev->ops->join_ibss(&rdev->wiphy, dev, params); 296*e35e4d28SHila Gonen } 297*e35e4d28SHila Gonen 298*e35e4d28SHila Gonen static inline int rdev_leave_ibss(struct cfg80211_registered_device *rdev, 299*e35e4d28SHila Gonen struct net_device *dev) 300*e35e4d28SHila Gonen { 301*e35e4d28SHila Gonen return rdev->ops->leave_ibss(&rdev->wiphy, dev); 302*e35e4d28SHila Gonen } 303*e35e4d28SHila Gonen 304*e35e4d28SHila Gonen static inline int 305*e35e4d28SHila Gonen rdev_set_wiphy_params(struct cfg80211_registered_device *rdev, u32 changed) 306*e35e4d28SHila Gonen { 307*e35e4d28SHila Gonen return rdev->ops->set_wiphy_params(&rdev->wiphy, changed); 308*e35e4d28SHila Gonen } 309*e35e4d28SHila Gonen 310*e35e4d28SHila Gonen static inline int rdev_set_tx_power(struct cfg80211_registered_device *rdev, 311*e35e4d28SHila Gonen enum nl80211_tx_power_setting type, int mbm) 312*e35e4d28SHila Gonen { 313*e35e4d28SHila Gonen return rdev->ops->set_tx_power(&rdev->wiphy, type, mbm); 314*e35e4d28SHila Gonen } 315*e35e4d28SHila Gonen 316*e35e4d28SHila Gonen static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev, 317*e35e4d28SHila Gonen int *dbm) 318*e35e4d28SHila Gonen { 319*e35e4d28SHila Gonen return rdev->ops->get_tx_power(&rdev->wiphy, dbm); 320*e35e4d28SHila Gonen } 321*e35e4d28SHila Gonen 322*e35e4d28SHila Gonen static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev, 323*e35e4d28SHila Gonen struct net_device *dev, const u8 *addr) 324*e35e4d28SHila Gonen { 325*e35e4d28SHila Gonen return rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr); 326*e35e4d28SHila Gonen } 327*e35e4d28SHila Gonen 328*e35e4d28SHila Gonen static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev) 329*e35e4d28SHila Gonen { 330*e35e4d28SHila Gonen rdev->ops->rfkill_poll(&rdev->wiphy); 331*e35e4d28SHila Gonen } 332*e35e4d28SHila Gonen 333*e35e4d28SHila Gonen 334*e35e4d28SHila Gonen #ifdef CONFIG_NL80211_TESTMODE 335*e35e4d28SHila Gonen static inline int rdev_testmode_cmd(struct cfg80211_registered_device *rdev, 336*e35e4d28SHila Gonen void *data, int len) 337*e35e4d28SHila Gonen { 338*e35e4d28SHila Gonen return rdev->ops->testmode_cmd(&rdev->wiphy, data, len); 339*e35e4d28SHila Gonen } 340*e35e4d28SHila Gonen 341*e35e4d28SHila Gonen static inline int rdev_testmode_dump(struct cfg80211_registered_device *rdev, 342*e35e4d28SHila Gonen struct sk_buff *skb, 343*e35e4d28SHila Gonen struct netlink_callback *cb, void *data, 344*e35e4d28SHila Gonen int len) 345*e35e4d28SHila Gonen { 346*e35e4d28SHila Gonen return rdev->ops->testmode_dump(&rdev->wiphy, skb, cb, data, 347*e35e4d28SHila Gonen len); 348*e35e4d28SHila Gonen } 349*e35e4d28SHila Gonen #endif 350*e35e4d28SHila Gonen 351*e35e4d28SHila Gonen static inline int 352*e35e4d28SHila Gonen rdev_set_bitrate_mask(struct cfg80211_registered_device *rdev, 353*e35e4d28SHila Gonen struct net_device *dev, const u8 *peer, 354*e35e4d28SHila Gonen const struct cfg80211_bitrate_mask *mask) 355*e35e4d28SHila Gonen { 356*e35e4d28SHila Gonen return rdev->ops->set_bitrate_mask(&rdev->wiphy, dev, peer, mask); 357*e35e4d28SHila Gonen } 358*e35e4d28SHila Gonen 359*e35e4d28SHila Gonen static inline int rdev_dump_survey(struct cfg80211_registered_device *rdev, 360*e35e4d28SHila Gonen struct net_device *netdev, int idx, 361*e35e4d28SHila Gonen struct survey_info *info) 362*e35e4d28SHila Gonen { 363*e35e4d28SHila Gonen return rdev->ops->dump_survey(&rdev->wiphy, netdev, idx, info); 364*e35e4d28SHila Gonen } 365*e35e4d28SHila Gonen 366*e35e4d28SHila Gonen static inline int rdev_set_pmksa(struct cfg80211_registered_device *rdev, 367*e35e4d28SHila Gonen struct net_device *netdev, 368*e35e4d28SHila Gonen struct cfg80211_pmksa *pmksa) 369*e35e4d28SHila Gonen { 370*e35e4d28SHila Gonen return rdev->ops->set_pmksa(&rdev->wiphy, netdev, pmksa); 371*e35e4d28SHila Gonen } 372*e35e4d28SHila Gonen 373*e35e4d28SHila Gonen static inline int rdev_del_pmksa(struct cfg80211_registered_device *rdev, 374*e35e4d28SHila Gonen struct net_device *netdev, 375*e35e4d28SHila Gonen struct cfg80211_pmksa *pmksa) 376*e35e4d28SHila Gonen { 377*e35e4d28SHila Gonen return rdev->ops->del_pmksa(&rdev->wiphy, netdev, pmksa); 378*e35e4d28SHila Gonen } 379*e35e4d28SHila Gonen 380*e35e4d28SHila Gonen static inline int rdev_flush_pmksa(struct cfg80211_registered_device *rdev, 381*e35e4d28SHila Gonen struct net_device *netdev) 382*e35e4d28SHila Gonen { 383*e35e4d28SHila Gonen return rdev->ops->flush_pmksa(&rdev->wiphy, netdev); 384*e35e4d28SHila Gonen } 385*e35e4d28SHila Gonen 386*e35e4d28SHila Gonen static inline int 387*e35e4d28SHila Gonen rdev_remain_on_channel(struct cfg80211_registered_device *rdev, 388*e35e4d28SHila Gonen struct wireless_dev *wdev, 389*e35e4d28SHila Gonen struct ieee80211_channel *chan, 390*e35e4d28SHila Gonen enum nl80211_channel_type channel_type, 391*e35e4d28SHila Gonen unsigned int duration, u64 *cookie) 392*e35e4d28SHila Gonen { 393*e35e4d28SHila Gonen return rdev->ops->remain_on_channel(&rdev->wiphy, wdev, chan, 394*e35e4d28SHila Gonen channel_type, duration, cookie); 395*e35e4d28SHila Gonen } 396*e35e4d28SHila Gonen 397*e35e4d28SHila Gonen static inline int 398*e35e4d28SHila Gonen rdev_cancel_remain_on_channel(struct cfg80211_registered_device *rdev, 399*e35e4d28SHila Gonen struct wireless_dev *wdev, u64 cookie) 400*e35e4d28SHila Gonen { 401*e35e4d28SHila Gonen return rdev->ops->cancel_remain_on_channel(&rdev->wiphy, wdev, cookie); 402*e35e4d28SHila Gonen } 403*e35e4d28SHila Gonen 404*e35e4d28SHila Gonen static inline int rdev_mgmt_tx(struct cfg80211_registered_device *rdev, 405*e35e4d28SHila Gonen struct wireless_dev *wdev, 406*e35e4d28SHila Gonen struct ieee80211_channel *chan, bool offchan, 407*e35e4d28SHila Gonen enum nl80211_channel_type channel_type, 408*e35e4d28SHila Gonen bool channel_type_valid, unsigned int wait, 409*e35e4d28SHila Gonen const u8 *buf, size_t len, bool no_cck, 410*e35e4d28SHila Gonen bool dont_wait_for_ack, u64 *cookie) 411*e35e4d28SHila Gonen { 412*e35e4d28SHila Gonen return rdev->ops->mgmt_tx(&rdev->wiphy, wdev, chan, offchan, 413*e35e4d28SHila Gonen channel_type, channel_type_valid, wait, buf, 414*e35e4d28SHila Gonen len, no_cck, dont_wait_for_ack, cookie); 415*e35e4d28SHila Gonen } 416*e35e4d28SHila Gonen 417*e35e4d28SHila Gonen static inline int 418*e35e4d28SHila Gonen rdev_mgmt_tx_cancel_wait(struct cfg80211_registered_device *rdev, 419*e35e4d28SHila Gonen struct wireless_dev *wdev, u64 cookie) 420*e35e4d28SHila Gonen { 421*e35e4d28SHila Gonen return rdev->ops->mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie); 422*e35e4d28SHila Gonen } 423*e35e4d28SHila Gonen 424*e35e4d28SHila Gonen static inline int rdev_set_power_mgmt(struct cfg80211_registered_device *rdev, 425*e35e4d28SHila Gonen struct net_device *dev, bool enabled, 426*e35e4d28SHila Gonen int timeout) 427*e35e4d28SHila Gonen { 428*e35e4d28SHila Gonen return rdev->ops->set_power_mgmt(&rdev->wiphy, dev, enabled, timeout); 429*e35e4d28SHila Gonen } 430*e35e4d28SHila Gonen 431*e35e4d28SHila Gonen static inline int 432*e35e4d28SHila Gonen rdev_set_cqm_rssi_config(struct cfg80211_registered_device *rdev, 433*e35e4d28SHila Gonen struct net_device *dev, s32 rssi_thold, u32 rssi_hyst) 434*e35e4d28SHila Gonen { 435*e35e4d28SHila Gonen return rdev->ops->set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold, 436*e35e4d28SHila Gonen rssi_hyst); 437*e35e4d28SHila Gonen } 438*e35e4d28SHila Gonen 439*e35e4d28SHila Gonen static inline int 440*e35e4d28SHila Gonen rdev_set_cqm_txe_config(struct cfg80211_registered_device *rdev, 441*e35e4d28SHila Gonen struct net_device *dev, u32 rate, u32 pkts, u32 intvl) 442*e35e4d28SHila Gonen { 443*e35e4d28SHila Gonen return rdev->ops->set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts, 444*e35e4d28SHila Gonen intvl); 445*e35e4d28SHila Gonen } 446*e35e4d28SHila Gonen 447*e35e4d28SHila Gonen static inline void 448*e35e4d28SHila Gonen rdev_mgmt_frame_register(struct cfg80211_registered_device *rdev, 449*e35e4d28SHila Gonen struct wireless_dev *wdev, u16 frame_type, bool reg) 450*e35e4d28SHila Gonen { 451*e35e4d28SHila Gonen rdev->ops->mgmt_frame_register(&rdev->wiphy, wdev , frame_type, 452*e35e4d28SHila Gonen reg); 453*e35e4d28SHila Gonen } 454*e35e4d28SHila Gonen 455*e35e4d28SHila Gonen static inline int rdev_set_antenna(struct cfg80211_registered_device *rdev, 456*e35e4d28SHila Gonen u32 tx_ant, u32 rx_ant) 457*e35e4d28SHila Gonen { 458*e35e4d28SHila Gonen return rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant); 459*e35e4d28SHila Gonen } 460*e35e4d28SHila Gonen 461*e35e4d28SHila Gonen static inline int rdev_get_antenna(struct cfg80211_registered_device *rdev, 462*e35e4d28SHila Gonen u32 *tx_ant, u32 *rx_ant) 463*e35e4d28SHila Gonen { 464*e35e4d28SHila Gonen return rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant); 465*e35e4d28SHila Gonen } 466*e35e4d28SHila Gonen 467*e35e4d28SHila Gonen static inline int rdev_set_ringparam(struct cfg80211_registered_device *rdev, 468*e35e4d28SHila Gonen u32 tx, u32 rx) 469*e35e4d28SHila Gonen { 470*e35e4d28SHila Gonen return rdev->ops->set_ringparam(&rdev->wiphy, tx, rx); 471*e35e4d28SHila Gonen } 472*e35e4d28SHila Gonen 473*e35e4d28SHila Gonen static inline void rdev_get_ringparam(struct cfg80211_registered_device *rdev, 474*e35e4d28SHila Gonen u32 *tx, u32 *tx_max, u32 *rx, 475*e35e4d28SHila Gonen u32 *rx_max) 476*e35e4d28SHila Gonen { 477*e35e4d28SHila Gonen rdev->ops->get_ringparam(&rdev->wiphy, tx, tx_max, rx, rx_max); 478*e35e4d28SHila Gonen } 479*e35e4d28SHila Gonen 480*e35e4d28SHila Gonen static inline int 481*e35e4d28SHila Gonen rdev_sched_scan_start(struct cfg80211_registered_device *rdev, 482*e35e4d28SHila Gonen struct net_device *dev, 483*e35e4d28SHila Gonen struct cfg80211_sched_scan_request *request) 484*e35e4d28SHila Gonen { 485*e35e4d28SHila Gonen return rdev->ops->sched_scan_start(&rdev->wiphy, dev, request); 486*e35e4d28SHila Gonen } 487*e35e4d28SHila Gonen 488*e35e4d28SHila Gonen static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev, 489*e35e4d28SHila Gonen struct net_device *dev) 490*e35e4d28SHila Gonen { 491*e35e4d28SHila Gonen return rdev->ops->sched_scan_stop(&rdev->wiphy, dev); 492*e35e4d28SHila Gonen } 493*e35e4d28SHila Gonen 494*e35e4d28SHila Gonen static inline int rdev_set_rekey_data(struct cfg80211_registered_device *rdev, 495*e35e4d28SHila Gonen struct net_device *dev, 496*e35e4d28SHila Gonen struct cfg80211_gtk_rekey_data *data) 497*e35e4d28SHila Gonen { 498*e35e4d28SHila Gonen return rdev->ops->set_rekey_data(&rdev->wiphy, dev, data); 499*e35e4d28SHila Gonen } 500*e35e4d28SHila Gonen 501*e35e4d28SHila Gonen static inline int rdev_tdls_mgmt(struct cfg80211_registered_device *rdev, 502*e35e4d28SHila Gonen struct net_device *dev, u8 *peer, 503*e35e4d28SHila Gonen u8 action_code, u8 dialog_token, 504*e35e4d28SHila Gonen u16 status_code, const u8 *buf, size_t len) 505*e35e4d28SHila Gonen { 506*e35e4d28SHila Gonen return rdev->ops->tdls_mgmt(&rdev->wiphy, dev, peer, action_code, 507*e35e4d28SHila Gonen dialog_token, status_code, buf, len); 508*e35e4d28SHila Gonen } 509*e35e4d28SHila Gonen 510*e35e4d28SHila Gonen static inline int rdev_tdls_oper(struct cfg80211_registered_device *rdev, 511*e35e4d28SHila Gonen struct net_device *dev, u8 *peer, 512*e35e4d28SHila Gonen enum nl80211_tdls_operation oper) 513*e35e4d28SHila Gonen { 514*e35e4d28SHila Gonen return rdev->ops->tdls_oper(&rdev->wiphy, dev, peer, oper); 515*e35e4d28SHila Gonen } 516*e35e4d28SHila Gonen 517*e35e4d28SHila Gonen static inline int rdev_probe_client(struct cfg80211_registered_device *rdev, 518*e35e4d28SHila Gonen struct net_device *dev, const u8 *peer, 519*e35e4d28SHila Gonen u64 *cookie) 520*e35e4d28SHila Gonen { 521*e35e4d28SHila Gonen return rdev->ops->probe_client(&rdev->wiphy, dev, peer, cookie); 522*e35e4d28SHila Gonen } 523*e35e4d28SHila Gonen 524*e35e4d28SHila Gonen static inline int rdev_set_noack_map(struct cfg80211_registered_device *rdev, 525*e35e4d28SHila Gonen struct net_device *dev, u16 noack_map) 526*e35e4d28SHila Gonen { 527*e35e4d28SHila Gonen return rdev->ops->set_noack_map(&rdev->wiphy, dev, noack_map); 528*e35e4d28SHila Gonen } 529*e35e4d28SHila Gonen 530*e35e4d28SHila Gonen static inline int 531*e35e4d28SHila Gonen rdev_get_et_sset_count(struct cfg80211_registered_device *rdev, 532*e35e4d28SHila Gonen struct net_device *dev, int sset) 533*e35e4d28SHila Gonen { 534*e35e4d28SHila Gonen return rdev->ops->get_et_sset_count(&rdev->wiphy, dev, sset); 535*e35e4d28SHila Gonen } 536*e35e4d28SHila Gonen 537*e35e4d28SHila Gonen static inline void rdev_get_et_stats(struct cfg80211_registered_device *rdev, 538*e35e4d28SHila Gonen struct net_device *dev, 539*e35e4d28SHila Gonen struct ethtool_stats *stats, u64 *data) 540*e35e4d28SHila Gonen { 541*e35e4d28SHila Gonen rdev->ops->get_et_stats(&rdev->wiphy, dev, stats, data); 542*e35e4d28SHila Gonen } 543*e35e4d28SHila Gonen 544*e35e4d28SHila Gonen static inline void rdev_get_et_strings(struct cfg80211_registered_device *rdev, 545*e35e4d28SHila Gonen struct net_device *dev, u32 sset, 546*e35e4d28SHila Gonen u8 *data) 547*e35e4d28SHila Gonen { 548*e35e4d28SHila Gonen rdev->ops->get_et_strings(&rdev->wiphy, dev, sset, data); 549*e35e4d28SHila Gonen } 550*e35e4d28SHila Gonen 551*e35e4d28SHila Gonen static inline struct ieee80211_channel 552*e35e4d28SHila Gonen *rdev_get_channel(struct cfg80211_registered_device *rdev, 553*e35e4d28SHila Gonen struct wireless_dev *wdev, enum nl80211_channel_type *type) 554*e35e4d28SHila Gonen { 555*e35e4d28SHila Gonen return rdev->ops->get_channel(&rdev->wiphy, wdev, type); 556*e35e4d28SHila Gonen } 557*e35e4d28SHila Gonen 558*e35e4d28SHila Gonen #endif /* __CFG80211_RDEV_OPS */ 559