// SPDX-License-Identifier: GPL-2.0-only /* * NXP Wireless LAN device driver: 802.11n * * Copyright 2011-2020 NXP */ #include "decl.h" #include "ioctl.h" #include "util.h" #include "fw.h" #include "main.h" #include "wmm.h" #include "11n.h" /* * Fills HT capability information field, AMPDU Parameters field, HT extended * capability field, and supported MCS set fields. * * HT capability information field, AMPDU Parameters field, supported MCS set * fields are retrieved from cfg80211 stack * * RD responder bit to set to clear in the extended capability header. */ int mwifiex_fill_cap_info(struct mwifiex_private *priv, u8 radio_type, struct ieee80211_ht_cap *ht_cap) { … } /* * This function returns the pointer to an entry in BA Stream * table which matches the requested BA status. */ static struct mwifiex_tx_ba_stream_tbl * mwifiex_get_ba_status(struct mwifiex_private *priv, enum mwifiex_ba_status ba_status) { … } /* * This function handles the command response of delete a block * ack request. * * The function checks the response success status and takes action * accordingly (send an add BA request in case of success, or recreate * the deleted stream in case of failure, if the add BA was also * initiated by us). */ int mwifiex_ret_11n_delba(struct mwifiex_private *priv, struct host_cmd_ds_command *resp) { … } /* * This function handles the command response of add a block * ack request. * * Handling includes changing the header fields to CPU formats, checking * the response success status and taking actions accordingly (delete the * BA stream table in case of failure). */ int mwifiex_ret_11n_addba_req(struct mwifiex_private *priv, struct host_cmd_ds_command *resp) { … } /* * This function prepares command of reconfigure Tx buffer. * * Preparation includes - * - Setting command ID, action and proper size * - Setting Tx buffer size (for SET only) * - Ensuring correct endian-ness */ int mwifiex_cmd_recfg_tx_buf(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, int cmd_action, u16 *buf_size) { … } /* * This function prepares command of AMSDU aggregation control. * * Preparation includes - * - Setting command ID, action and proper size * - Setting AMSDU control parameters (for SET only) * - Ensuring correct endian-ness */ int mwifiex_cmd_amsdu_aggr_ctrl(struct host_cmd_ds_command *cmd, int cmd_action, struct mwifiex_ds_11n_amsdu_aggr_ctrl *aa_ctrl) { … } /* * This function prepares 11n configuration command. * * Preparation includes - * - Setting command ID, action and proper size * - Setting HT Tx capability and HT Tx information fields * - Ensuring correct endian-ness */ int mwifiex_cmd_11n_cfg(struct mwifiex_private *priv, struct host_cmd_ds_command *cmd, u16 cmd_action, struct mwifiex_ds_11n_tx_cfg *txcfg) { … } /* * This function appends an 11n TLV to a buffer. * * Buffer allocation is responsibility of the calling * function. No size validation is made here. * * The function fills up the following sections, if applicable - * - HT capability IE * - HT information IE (with channel list) * - 20/40 BSS Coexistence IE * - HT Extended Capabilities IE */ int mwifiex_cmd_append_11n_tlv(struct mwifiex_private *priv, struct mwifiex_bssdescriptor *bss_desc, u8 **buffer) { … } /* * This function checks if the given pointer is valid entry of * Tx BA Stream table. */ static int mwifiex_is_tx_ba_stream_ptr_valid(struct mwifiex_private *priv, struct mwifiex_tx_ba_stream_tbl *tx_tbl_ptr) { … } /* * This function deletes the given entry in Tx BA Stream table. * * The function also performs a validity check on the supplied * pointer before trying to delete. */ void mwifiex_11n_delete_tx_ba_stream_tbl_entry(struct mwifiex_private *priv, struct mwifiex_tx_ba_stream_tbl *tx_ba_tsr_tbl) { … } /* * This function deletes all the entries in Tx BA Stream table. */ void mwifiex_11n_delete_all_tx_ba_stream_tbl(struct mwifiex_private *priv) { … } /* * This function returns the pointer to an entry in BA Stream * table which matches the given RA/TID pair. */ struct mwifiex_tx_ba_stream_tbl * mwifiex_get_ba_tbl(struct mwifiex_private *priv, int tid, u8 *ra) { … } /* * This function creates an entry in Tx BA stream table for the * given RA/TID pair. */ void mwifiex_create_ba_tbl(struct mwifiex_private *priv, u8 *ra, int tid, enum mwifiex_ba_status ba_status) { … } /* * This function sends an add BA request to the given TID/RA pair. */ int mwifiex_send_addba(struct mwifiex_private *priv, int tid, u8 *peer_mac) { … } /* * This function sends a delete BA request to the given TID/RA pair. */ int mwifiex_send_delba(struct mwifiex_private *priv, int tid, u8 *peer_mac, int initiator) { … } /* * This function sends delba to specific tid */ void mwifiex_11n_delba(struct mwifiex_private *priv, int tid) { … } /* * This function handles the command response of a delete BA request. */ void mwifiex_11n_delete_ba_stream(struct mwifiex_private *priv, u8 *del_ba) { … } /* * This function retrieves the Rx reordering table. */ int mwifiex_get_rx_reorder_tbl(struct mwifiex_private *priv, struct mwifiex_ds_rx_reorder_tbl *buf) { … } /* * This function retrieves the Tx BA stream table. */ int mwifiex_get_tx_ba_stream_tbl(struct mwifiex_private *priv, struct mwifiex_ds_tx_ba_stream_tbl *buf) { … } /* * This function retrieves the entry for specific tx BA stream table by RA and * deletes it. */ void mwifiex_del_tx_ba_stream_tbl_by_ra(struct mwifiex_private *priv, u8 *ra) { … } /* This function initializes the BlockACK setup information for given * mwifiex_private structure. */ void mwifiex_set_ba_params(struct mwifiex_private *priv) { … } u8 mwifiex_get_sec_chan_offset(int chan) { … } /* This function will send DELBA to entries in the priv's * Tx BA stream table */ static void mwifiex_send_delba_txbastream_tbl(struct mwifiex_private *priv, u8 tid) { … } /* This function updates all the tx_win_size */ void mwifiex_update_ampdu_txwinsize(struct mwifiex_adapter *adapter) { … }