]>
Commit | Line | Data |
---|---|---|
4f8b7fab JP |
1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* | |
3 | * Implementation of host-to-chip commands (aka request/confirmation) of WFxxx | |
4 | * Split Mac (WSM) API. | |
5 | * | |
6 | * Copyright (c) 2017-2019, Silicon Laboratories, Inc. | |
7 | * Copyright (c) 2010, ST-Ericsson | |
8 | * Copyright (C) 2010, ST-Ericsson SA | |
9 | */ | |
10 | #ifndef WFX_HIF_TX_H | |
11 | #define WFX_HIF_TX_H | |
12 | ||
13 | #include "hif_api_cmd.h" | |
14 | ||
09779276 JP |
15 | struct ieee80211_channel; |
16 | struct ieee80211_bss_conf; | |
871341db | 17 | struct ieee80211_tx_queue_params; |
945ce30a | 18 | struct cfg80211_scan_request; |
4f8b7fab JP |
19 | struct wfx_dev; |
20 | struct wfx_vif; | |
21 | ||
22 | struct wfx_hif_cmd { | |
23 | struct mutex lock; | |
846239f6 | 24 | struct mutex key_renew_lock; |
4f8b7fab JP |
25 | struct completion ready; |
26 | struct completion done; | |
27 | bool async; | |
28 | struct hif_msg *buf_send; | |
29 | void *buf_recv; | |
30 | size_t len_recv; | |
31 | int ret; | |
32 | }; | |
33 | ||
34 | void wfx_init_hif_cmd(struct wfx_hif_cmd *wfx_hif_cmd); | |
35 | int wfx_cmd_send(struct wfx_dev *wdev, struct hif_msg *request, | |
36 | void *reply, size_t reply_len, bool async); | |
37 | ||
f95a29d4 JP |
38 | int hif_shutdown(struct wfx_dev *wdev); |
39 | int hif_configuration(struct wfx_dev *wdev, const u8 *conf, size_t len); | |
40 | int hif_reset(struct wfx_vif *wvif, bool reset_stat); | |
41 | int hif_read_mib(struct wfx_dev *wdev, int vif_id, u16 mib_id, | |
42 | void *buf, size_t buf_size); | |
43 | int hif_write_mib(struct wfx_dev *wdev, int vif_id, u16 mib_id, | |
44 | void *buf, size_t buf_size); | |
945ce30a JP |
45 | int hif_scan(struct wfx_vif *wvif, struct cfg80211_scan_request *req80211, |
46 | int chan_start, int chan_num); | |
f95a29d4 | 47 | int hif_stop_scan(struct wfx_vif *wvif); |
9ced9b59 JP |
48 | int hif_join(struct wfx_vif *wvif, const struct ieee80211_bss_conf *conf, |
49 | const struct ieee80211_channel *channel, const u8 *ssidie); | |
adc90758 | 50 | int hif_set_pm(struct wfx_vif *wvif, bool ps, int dynamic_ps_timeout); |
f95a29d4 JP |
51 | int hif_set_bss_params(struct wfx_vif *wvif, |
52 | const struct hif_req_set_bss_params *arg); | |
53 | int hif_add_key(struct wfx_dev *wdev, const struct hif_req_add_key *arg); | |
54 | int hif_remove_key(struct wfx_dev *wdev, int idx); | |
871341db JP |
55 | int hif_set_edca_queue_params(struct wfx_vif *wvif, u16 queue, |
56 | const struct ieee80211_tx_queue_params *arg); | |
09779276 JP |
57 | int hif_start(struct wfx_vif *wvif, const struct ieee80211_bss_conf *conf, |
58 | const struct ieee80211_channel *channel); | |
f95a29d4 JP |
59 | int hif_beacon_transmit(struct wfx_vif *wvif, bool enable); |
60 | int hif_map_link(struct wfx_vif *wvif, u8 *mac_addr, int flags, int sta_id); | |
a09343fc | 61 | int hif_update_ie_beacon(struct wfx_vif *wvif, const u8 *ies, size_t ies_len); |
5cd382b2 JI |
62 | int hif_sl_set_mac_key(struct wfx_dev *wdev, const u8 *slk_key, |
63 | int destination); | |
f95a29d4 JP |
64 | int hif_sl_config(struct wfx_dev *wdev, const unsigned long *bitmap); |
65 | int hif_sl_send_pub_keys(struct wfx_dev *wdev, | |
5cd382b2 | 66 | const u8 *pubkey, const u8 *pubkey_hmac); |
f95a29d4 | 67 | |
4f8b7fab | 68 | #endif |