struct cfg80211_ops { int (* suspend) (struct wiphy *wiphy); int (* resume) (struct wiphy *wiphy); int (* add_virtual_intf) (struct wiphy *wiphy, char *name,enum nl80211_iftype type, u32 *flags,struct vif_params *params); int (* del_virtual_intf) (struct wiphy *wiphy, struct net_device *dev); int (* change_virtual_intf) (struct wiphy *wiphy,struct net_device *dev,enum nl80211_iftype type, u32 *flags,struct vif_params *params); int (* add_key) (struct wiphy *wiphy, struct net_device *netdev,u8 key_index, bool pairwise, const u8 *mac_addr,struct key_params *params); int (* get_key) (struct wiphy *wiphy, struct net_device *netdev,u8 key_index, bool pairwise, const u8 *mac_addr,void *cookie,void (*callback); int (* del_key) (struct wiphy *wiphy, struct net_device *netdev,u8 key_index, bool pairwise, const u8 *mac_addr); int (* set_default_key) (struct wiphy *wiphy,struct net_device *netdev,u8 key_index); int (* set_default_mgmt_key) (struct wiphy *wiphy,struct net_device *netdev,u8 key_index); int (* add_beacon) (struct wiphy *wiphy, struct net_device *dev,struct beacon_parameters *info); int (* set_beacon) (struct wiphy *wiphy, struct net_device *dev,struct beacon_parameters *info); int (* del_beacon) (struct wiphy *wiphy, struct net_device *dev); int (* add_station) (struct wiphy *wiphy, struct net_device *dev,u8 *mac, struct station_parameters *params); int (* del_station) (struct wiphy *wiphy, struct net_device *dev,u8 *mac); int (* change_station) (struct wiphy *wiphy, struct net_device *dev,u8 *mac, struct station_parameters *params); int (* get_station) (struct wiphy *wiphy, struct net_device *dev,u8 *mac, struct station_info *sinfo); int (* dump_station) (struct wiphy *wiphy, struct net_device *dev,int idx, u8 *mac, struct station_info *sinfo); int (* add_mpath) (struct wiphy *wiphy, struct net_device *dev,u8 *dst, u8 *next_hop); int (* del_mpath) (struct wiphy *wiphy, struct net_device *dev,u8 *dst); int (* change_mpath) (struct wiphy *wiphy, struct net_device *dev,u8 *dst, u8 *next_hop); int (* get_mpath) (struct wiphy *wiphy, struct net_device *dev,u8 *dst, u8 *next_hop,struct mpath_info *pinfo); int (* dump_mpath) (struct wiphy *wiphy, struct net_device *dev,int idx, u8 *dst, u8 *next_hop,struct mpath_info *pinfo); int (* get_mesh_params) (struct wiphy *wiphy,struct net_device *dev,struct mesh_config *conf); int (* set_mesh_params) (struct wiphy *wiphy,struct net_device *dev,const struct mesh_config *nconf, u32 mask); int (* change_bss) (struct wiphy *wiphy, struct net_device *dev,struct bss_parameters *params); int (* set_txq_params) (struct wiphy *wiphy,struct ieee80211_txq_params *params); int (* set_channel) (struct wiphy *wiphy, struct net_device *dev,struct ieee80211_channel *chan,enum nl80211_channel_type channel_type); int (* scan) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_scan_request *request); int (* auth) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_auth_request *req); int (* assoc) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_assoc_request *req); int (* deauth) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_deauth_request *req,void *cookie); int (* disassoc) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_disassoc_request *req,void *cookie); int (* connect) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_connect_params *sme); int (* disconnect) (struct wiphy *wiphy, struct net_device *dev,u16 reason_code); int (* join_ibss) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_ibss_params *params); int (* leave_ibss) (struct wiphy *wiphy, struct net_device *dev); int (* set_wiphy_params) (struct wiphy *wiphy, u32 changed); int (* set_tx_power) (struct wiphy *wiphy,enum nl80211_tx_power_setting type, int mbm); int (* get_tx_power) (struct wiphy *wiphy, int *dbm); int (* set_wds_peer) (struct wiphy *wiphy, struct net_device *dev,const u8 *addr); void (* rfkill_poll) (struct wiphy *wiphy); #ifdef CONFIG_NL80211_TESTMODE int (* testmode_cmd) (struct wiphy *wiphy, void *data, int len); #endif int (* set_bitrate_mask) (struct wiphy *wiphy,struct net_device *dev,const u8 *peer,const struct cfg80211_bitrate_mask *mask); int (* dump_survey) (struct wiphy *wiphy, struct net_device *netdev,int idx, struct survey_info *info); int (* set_pmksa) (struct wiphy *wiphy, struct net_device *netdev,struct cfg80211_pmksa *pmksa); int (* del_pmksa) (struct wiphy *wiphy, struct net_device *netdev,struct cfg80211_pmksa *pmksa); int (* flush_pmksa) (struct wiphy *wiphy, struct net_device *netdev); int (* remain_on_channel) (struct wiphy *wiphy,struct net_device *dev,struct ieee80211_channel *chan,enum nl80211_channel_type channel_type,unsigned int duration,u64 *cookie); int (* cancel_remain_on_channel) (struct wiphy *wiphy,struct net_device *dev,u64 cookie); int (* mgmt_tx) (struct wiphy *wiphy, struct net_device *dev,struct ieee80211_channel *chan,enum nl80211_channel_type channel_type,bool channel_type_valid,const u8 *buf, size_t len, u64 *cookie); int (* set_power_mgmt) (struct wiphy *wiphy, struct net_device *dev,bool enabled, int timeout); int (* set_cqm_rssi_config) (struct wiphy *wiphy,struct net_device *dev,s32 rssi_thold, u32 rssi_hyst); void (* mgmt_frame_register) (struct wiphy *wiphy,struct net_device *dev,u16 frame_type, bool reg); };
suspend
resume
add_virtual_intf
del_virtual_intf
change_virtual_intf
add_key
get_key
del_key
set_default_key
set_default_mgmt_key
add_beacon
set_beacon
del_beacon
add_station
del_station
change_station
get_station
dump_station
add_mpath
del_mpath
change_mpath
get_mpath
dump_mpath
get_mesh_params
set_mesh_params
change_bss
set_txq_params
set_channel
scan
auth
assoc
deauth
disassoc
connect
disconnect
join_ibss
leave_ibss
set_wiphy_params
set_tx_power
get_tx_power
set_wds_peer
rfkill_poll
testmode_cmd
set_bitrate_mask
dump_survey
set_pmksa
del_pmksa
flush_pmksa
remain_on_channel
cancel_remain_on_channel
mgmt_tx
set_power_mgmt
set_cqm_rssi_config
mgmt_frame_register
This struct is registered by fullmac card drivers and/or wireless stacks in order to handle configuration requests on their interfaces.
All callbacks except where otherwise noted should return 0 on success or a negative error code.
All operations are currently invoked under rtnl for consistency with the wireless extensions but this is subject to reevaluation as soon as this code is used more widely and we have a first user without wext.
Johannes Berg <johannes@sipsolutions.net>