/* * This function handles the command response of get Tx rate query. * * Handling includes changing the header fields into CPU format * and saving the Tx rate and HT information parameters in driver. * * Both rate configuration and current data rate can be retrieved * with this request. */ static int mwifiex_ret_802_11_tx_rate_query(struct mwifiex_private *priv, struct host_cmd_ds_command *resp) { priv->tx_rate = resp->params.tx_rate.tx_rate; priv->tx_htinfo = resp->params.tx_rate.ht_info; if (!priv->is_data_rate_auto) priv->data_rate = mwifiex_index_to_data_rate(priv, priv->tx_rate, priv->tx_htinfo); return 0; }
/* * Sends IOCTL request to get the data rate. * * This function allocates the IOCTL request buffer, fills it * with requisite parameters and calls the IOCTL handler. */ int mwifiex_drv_get_data_rate(struct mwifiex_private *priv, u32 *rate) { int ret; ret = mwifiex_send_cmd(priv, HostCmd_CMD_802_11_TX_RATE_QUERY, HostCmd_ACT_GEN_GET, 0, NULL, true); if (!ret) { if (priv->is_data_rate_auto) *rate = mwifiex_index_to_data_rate(priv, priv->tx_rate, priv->tx_htinfo); else *rate = priv->data_rate; } return ret; }
/* * Sends IOCTL request to get the data rate. * * This function allocates the IOCTL request buffer, fills it * with requisite parameters and calls the IOCTL handler. */ int mwifiex_drv_get_data_rate(struct mwifiex_private *priv, struct mwifiex_rate_cfg *rate) { int ret; memset(rate, 0, sizeof(struct mwifiex_rate_cfg)); rate->action = HostCmd_ACT_GEN_GET; ret = mwifiex_rate_ioctl_cfg(priv, rate); if (!ret) { if (rate && rate->is_rate_auto) rate->rate = mwifiex_index_to_data_rate(priv->tx_rate, priv->tx_htinfo); else if (rate) rate->rate = priv->data_rate; } else { ret = -1; } return ret; }