|
@@ -313,23 +313,41 @@ static int mwifiex_cmd_rf_antenna(struct mwifiex_private *priv,
|
|
|
|
|
|
cmd->command = cpu_to_le16(HostCmd_CMD_RF_ANTENNA);
|
|
|
|
|
|
- if (cmd_action != HostCmd_ACT_GEN_SET)
|
|
|
- return 0;
|
|
|
-
|
|
|
- if (priv->adapter->hw_dev_mcs_support == HT_STREAM_2X2) {
|
|
|
- cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_rf_ant_mimo) +
|
|
|
- S_DS_GEN);
|
|
|
- ant_mimo->action_tx = cpu_to_le16(HostCmd_ACT_SET_TX);
|
|
|
- ant_mimo->tx_ant_mode = cpu_to_le16((u16)ant_cfg->tx_ant);
|
|
|
- ant_mimo->action_rx = cpu_to_le16(HostCmd_ACT_SET_RX);
|
|
|
- ant_mimo->rx_ant_mode = cpu_to_le16((u16)ant_cfg->rx_ant);
|
|
|
- } else {
|
|
|
- cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_rf_ant_siso) +
|
|
|
- S_DS_GEN);
|
|
|
- ant_siso->action = cpu_to_le16(HostCmd_ACT_SET_BOTH);
|
|
|
- ant_siso->ant_mode = cpu_to_le16((u16)ant_cfg->tx_ant);
|
|
|
+ switch (cmd_action) {
|
|
|
+ case HostCmd_ACT_GEN_SET:
|
|
|
+ if (priv->adapter->hw_dev_mcs_support == HT_STREAM_2X2) {
|
|
|
+ cmd->size = cpu_to_le16(sizeof(struct
|
|
|
+ host_cmd_ds_rf_ant_mimo)
|
|
|
+ + S_DS_GEN);
|
|
|
+ ant_mimo->action_tx = cpu_to_le16(HostCmd_ACT_SET_TX);
|
|
|
+ ant_mimo->tx_ant_mode = cpu_to_le16((u16)ant_cfg->
|
|
|
+ tx_ant);
|
|
|
+ ant_mimo->action_rx = cpu_to_le16(HostCmd_ACT_SET_RX);
|
|
|
+ ant_mimo->rx_ant_mode = cpu_to_le16((u16)ant_cfg->
|
|
|
+ rx_ant);
|
|
|
+ } else {
|
|
|
+ cmd->size = cpu_to_le16(sizeof(struct
|
|
|
+ host_cmd_ds_rf_ant_siso) +
|
|
|
+ S_DS_GEN);
|
|
|
+ ant_siso->action = cpu_to_le16(HostCmd_ACT_SET_BOTH);
|
|
|
+ ant_siso->ant_mode = cpu_to_le16((u16)ant_cfg->tx_ant);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case HostCmd_ACT_GEN_GET:
|
|
|
+ if (priv->adapter->hw_dev_mcs_support == HT_STREAM_2X2) {
|
|
|
+ cmd->size = cpu_to_le16(sizeof(struct
|
|
|
+ host_cmd_ds_rf_ant_mimo) +
|
|
|
+ S_DS_GEN);
|
|
|
+ ant_mimo->action_tx = cpu_to_le16(HostCmd_ACT_GET_TX);
|
|
|
+ ant_mimo->action_rx = cpu_to_le16(HostCmd_ACT_GET_RX);
|
|
|
+ } else {
|
|
|
+ cmd->size = cpu_to_le16(sizeof(struct
|
|
|
+ host_cmd_ds_rf_ant_siso) +
|
|
|
+ S_DS_GEN);
|
|
|
+ ant_siso->action = cpu_to_le16(HostCmd_ACT_GET_BOTH);
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|