1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2eb4f98d5SKalle Valo #ifndef HOSTAP_H
3eb4f98d5SKalle Valo #define HOSTAP_H
4eb4f98d5SKalle Valo 
5eb4f98d5SKalle Valo #include <linux/ethtool.h>
6eb4f98d5SKalle Valo #include <linux/kernel.h>
7eb4f98d5SKalle Valo 
8eb4f98d5SKalle Valo #include "hostap_wlan.h"
9eb4f98d5SKalle Valo #include "hostap_ap.h"
10eb4f98d5SKalle Valo 
11eb4f98d5SKalle Valo static const long freq_list[] = { 2412, 2417, 2422, 2427, 2432, 2437, 2442,
12eb4f98d5SKalle Valo 				  2447, 2452, 2457, 2462, 2467, 2472, 2484 };
13eb4f98d5SKalle Valo #define FREQ_COUNT ARRAY_SIZE(freq_list)
14eb4f98d5SKalle Valo 
15eb4f98d5SKalle Valo /* hostap.c */
16eb4f98d5SKalle Valo 
17eb4f98d5SKalle Valo extern struct proc_dir_entry *hostap_proc;
18eb4f98d5SKalle Valo 
19eb4f98d5SKalle Valo u16 hostap_tx_callback_register(local_info_t *local,
20eb4f98d5SKalle Valo 				void (*func)(struct sk_buff *, int ok, void *),
21eb4f98d5SKalle Valo 				void *data);
22eb4f98d5SKalle Valo int hostap_tx_callback_unregister(local_info_t *local, u16 idx);
23eb4f98d5SKalle Valo int hostap_set_word(struct net_device *dev, int rid, u16 val);
24eb4f98d5SKalle Valo int hostap_set_string(struct net_device *dev, int rid, const char *val);
25eb4f98d5SKalle Valo u16 hostap_get_porttype(local_info_t *local);
26eb4f98d5SKalle Valo int hostap_set_encryption(local_info_t *local);
27eb4f98d5SKalle Valo int hostap_set_antsel(local_info_t *local);
28eb4f98d5SKalle Valo int hostap_set_roaming(local_info_t *local);
29eb4f98d5SKalle Valo int hostap_set_auth_algs(local_info_t *local);
30eb4f98d5SKalle Valo void hostap_dump_rx_header(const char *name,
31eb4f98d5SKalle Valo 			   const struct hfa384x_rx_frame *rx);
32eb4f98d5SKalle Valo void hostap_dump_tx_header(const char *name,
33eb4f98d5SKalle Valo 			   const struct hfa384x_tx_frame *tx);
34eb4f98d5SKalle Valo extern const struct header_ops hostap_80211_ops;
35eb4f98d5SKalle Valo int hostap_80211_get_hdrlen(__le16 fc);
36eb4f98d5SKalle Valo struct net_device_stats *hostap_get_stats(struct net_device *dev);
37eb4f98d5SKalle Valo void hostap_setup_dev(struct net_device *dev, local_info_t *local,
38eb4f98d5SKalle Valo 		      int type);
39eb4f98d5SKalle Valo void hostap_set_multicast_list_queue(struct work_struct *work);
40eb4f98d5SKalle Valo int hostap_set_hostapd(local_info_t *local, int val, int rtnl_locked);
41eb4f98d5SKalle Valo int hostap_set_hostapd_sta(local_info_t *local, int val, int rtnl_locked);
42eb4f98d5SKalle Valo void hostap_cleanup(local_info_t *local);
43eb4f98d5SKalle Valo void hostap_cleanup_handler(void *data);
44eb4f98d5SKalle Valo struct net_device * hostap_add_interface(struct local_info *local,
45eb4f98d5SKalle Valo 					 int type, int rtnl_locked,
46eb4f98d5SKalle Valo 					 const char *prefix, const char *name);
47eb4f98d5SKalle Valo void hostap_remove_interface(struct net_device *dev, int rtnl_locked,
48eb4f98d5SKalle Valo 			     int remove_from_list);
49eb4f98d5SKalle Valo int prism2_update_comms_qual(struct net_device *dev);
50eb4f98d5SKalle Valo int prism2_sta_send_mgmt(local_info_t *local, u8 *dst, u16 stype,
51eb4f98d5SKalle Valo 			 u8 *body, size_t bodylen);
52eb4f98d5SKalle Valo int prism2_sta_deauth(local_info_t *local, u16 reason);
53eb4f98d5SKalle Valo int prism2_wds_add(local_info_t *local, u8 *remote_addr,
54eb4f98d5SKalle Valo 		   int rtnl_locked);
55eb4f98d5SKalle Valo int prism2_wds_del(local_info_t *local, u8 *remote_addr,
56eb4f98d5SKalle Valo 		   int rtnl_locked, int do_not_remove);
57eb4f98d5SKalle Valo 
58eb4f98d5SKalle Valo 
59eb4f98d5SKalle Valo /* hostap_ap.c */
60eb4f98d5SKalle Valo 
61eb4f98d5SKalle Valo int ap_control_add_mac(struct mac_restrictions *mac_restrictions, u8 *mac);
62eb4f98d5SKalle Valo int ap_control_del_mac(struct mac_restrictions *mac_restrictions, u8 *mac);
63eb4f98d5SKalle Valo void ap_control_flush_macs(struct mac_restrictions *mac_restrictions);
64eb4f98d5SKalle Valo int ap_control_kick_mac(struct ap_data *ap, struct net_device *dev, u8 *mac);
65eb4f98d5SKalle Valo void ap_control_kickall(struct ap_data *ap);
66eb4f98d5SKalle Valo void * ap_crypt_get_ptrs(struct ap_data *ap, u8 *addr, int permanent,
67eb4f98d5SKalle Valo 			 struct lib80211_crypt_data ***crypt);
68eb4f98d5SKalle Valo int prism2_ap_get_sta_qual(local_info_t *local, struct sockaddr addr[],
69eb4f98d5SKalle Valo 			   struct iw_quality qual[], int buf_size,
70eb4f98d5SKalle Valo 			   int aplist);
71eb4f98d5SKalle Valo int prism2_ap_translate_scan(struct net_device *dev,
72eb4f98d5SKalle Valo 			     struct iw_request_info *info, char *buffer);
73eb4f98d5SKalle Valo int prism2_hostapd(struct ap_data *ap, struct prism2_hostapd_param *param);
74eb4f98d5SKalle Valo 
75eb4f98d5SKalle Valo 
76eb4f98d5SKalle Valo /* hostap_proc.c */
77eb4f98d5SKalle Valo 
78eb4f98d5SKalle Valo void hostap_init_proc(local_info_t *local);
79eb4f98d5SKalle Valo void hostap_remove_proc(local_info_t *local);
80eb4f98d5SKalle Valo 
81eb4f98d5SKalle Valo 
82eb4f98d5SKalle Valo /* hostap_info.c */
83eb4f98d5SKalle Valo 
84eb4f98d5SKalle Valo void hostap_info_init(local_info_t *local);
85eb4f98d5SKalle Valo void hostap_info_process(local_info_t *local, struct sk_buff *skb);
86eb4f98d5SKalle Valo 
87eb4f98d5SKalle Valo 
88eb4f98d5SKalle Valo /* hostap_ioctl.c */
89eb4f98d5SKalle Valo 
90eb4f98d5SKalle Valo extern const struct iw_handler_def hostap_iw_handler_def;
91eb4f98d5SKalle Valo extern const struct ethtool_ops prism2_ethtool_ops;
92eb4f98d5SKalle Valo 
93eb4f98d5SKalle Valo int hostap_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
94eb4f98d5SKalle Valo 
95eb4f98d5SKalle Valo 
96eb4f98d5SKalle Valo #endif /* HOSTAP_H */
97