Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7c45890 authored by David Woodhouse's avatar David Woodhouse Committed by David S. Miller
Browse files

libertas: convert RADIO_CONTROL to a direct command

parent 354eca98
Loading
Loading
Loading
Loading
+27 −49
Original line number Original line Diff line number Diff line
@@ -603,45 +603,6 @@ static int lbs_cmd_802_11_snmp_mib(struct lbs_private *priv,
	return 0;
	return 0;
}
}


static int lbs_cmd_802_11_radio_control(struct lbs_private *priv,
					 struct cmd_ds_command *cmd,
					 int cmd_action)
{
	struct cmd_ds_802_11_radio_control *pradiocontrol = &cmd->params.radio;

	lbs_deb_enter(LBS_DEB_CMD);

	cmd->size =
	    cpu_to_le16((sizeof(struct cmd_ds_802_11_radio_control)) +
			     S_DS_GEN);
	cmd->command = cpu_to_le16(CMD_802_11_RADIO_CONTROL);

	pradiocontrol->action = cpu_to_le16(cmd_action);

	switch (priv->preamble) {
	case CMD_TYPE_SHORT_PREAMBLE:
		pradiocontrol->control = cpu_to_le16(SET_SHORT_PREAMBLE);
		break;

	case CMD_TYPE_LONG_PREAMBLE:
		pradiocontrol->control = cpu_to_le16(SET_LONG_PREAMBLE);
		break;

	case CMD_TYPE_AUTO_PREAMBLE:
	default:
		pradiocontrol->control = cpu_to_le16(SET_AUTO_PREAMBLE);
		break;
	}

	if (priv->radioon)
		pradiocontrol->control |= cpu_to_le16(TURN_ON_RF);
	else
		pradiocontrol->control &= cpu_to_le16(~TURN_ON_RF);

	lbs_deb_leave(LBS_DEB_CMD);
	return 0;
}

static int lbs_cmd_802_11_rf_tx_power(struct lbs_private *priv,
static int lbs_cmd_802_11_rf_tx_power(struct lbs_private *priv,
				       struct cmd_ds_command *cmd,
				       struct cmd_ds_command *cmd,
				       u16 cmd_action, void *pdata_buf)
				       u16 cmd_action, void *pdata_buf)
@@ -1315,16 +1276,37 @@ void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
int lbs_set_radio_control(struct lbs_private *priv)
int lbs_set_radio_control(struct lbs_private *priv)
{
{
	int ret = 0;
	int ret = 0;
	struct cmd_ds_802_11_radio_control cmd;


	lbs_deb_enter(LBS_DEB_CMD);
	lbs_deb_enter(LBS_DEB_CMD);


	ret = lbs_prepare_and_send_command(priv,
	cmd.hdr.size = cpu_to_le16(sizeof(cmd));
				    CMD_802_11_RADIO_CONTROL,
	cmd.action = cpu_to_le16(CMD_ACT_SET);
				    CMD_ACT_SET,

				    CMD_OPTION_WAITFORRSP, 0, NULL);
	switch (priv->preamble) {
	case CMD_TYPE_SHORT_PREAMBLE:
		cmd.control = cpu_to_le16(SET_SHORT_PREAMBLE);
		break;

	case CMD_TYPE_LONG_PREAMBLE:
		cmd.control = cpu_to_le16(SET_LONG_PREAMBLE);
		break;

	case CMD_TYPE_AUTO_PREAMBLE:
	default:
		cmd.control = cpu_to_le16(SET_AUTO_PREAMBLE);
		break;
	}


	lbs_deb_cmd("RADIO_SET: radio %d, preamble %d\n",
	if (priv->radioon)
	       priv->radioon, priv->preamble);
		cmd.control |= cpu_to_le16(TURN_ON_RF);
	else
		cmd.control &= cpu_to_le16(~TURN_ON_RF);

	lbs_deb_cmd("RADIO_SET: radio %d, preamble %d\n", priv->radioon,
		    priv->preamble);

	ret = lbs_cmd_with_response(priv, CMD_802_11_RADIO_CONTROL, &cmd);


	lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret);
	lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret);
	return ret;
	return ret;
@@ -1467,10 +1449,6 @@ int lbs_prepare_and_send_command(struct lbs_private *priv,
						  cmd_action, pdata_buf);
						  cmd_action, pdata_buf);
		break;
		break;


	case CMD_802_11_RADIO_CONTROL:
		ret = lbs_cmd_802_11_radio_control(priv, cmdptr, cmd_action);
		break;

	case CMD_802_11_RATE_ADAPT_RATESET:
	case CMD_802_11_RATE_ADAPT_RATESET:
		ret = lbs_cmd_802_11_rate_adapt_rateset(priv,
		ret = lbs_cmd_802_11_rate_adapt_rateset(priv,
							 cmdptr, cmd_action);
							 cmdptr, cmd_action);
+0 −1
Original line number Original line Diff line number Diff line
@@ -516,7 +516,6 @@ static inline int handle_cmd_response(struct lbs_private *priv,
	case CMD_RET(CMD_802_11_SET_WEP):
	case CMD_RET(CMD_802_11_SET_WEP):
	case CMD_RET(CMD_802_11_RESET):
	case CMD_RET(CMD_802_11_RESET):
	case CMD_RET(CMD_802_11_AUTHENTICATE):
	case CMD_RET(CMD_802_11_AUTHENTICATE):
	case CMD_RET(CMD_802_11_RADIO_CONTROL):
	case CMD_RET(CMD_802_11_BEACON_STOP):
	case CMD_RET(CMD_802_11_BEACON_STOP):
		break;
		break;


+2 −2
Original line number Original line Diff line number Diff line
@@ -342,6 +342,8 @@ struct cmd_ds_rf_reg_access {
};
};


struct cmd_ds_802_11_radio_control {
struct cmd_ds_802_11_radio_control {
	struct cmd_header hdr;

	__le16 action;
	__le16 action;
	__le16 control;
	__le16 control;
};
};
@@ -697,8 +699,6 @@ struct cmd_ds_command {
		struct cmd_ds_802_11_rate_adapt_rateset rateset;
		struct cmd_ds_802_11_rate_adapt_rateset rateset;
		struct cmd_ds_mac_multicast_adr madr;
		struct cmd_ds_mac_multicast_adr madr;
		struct cmd_ds_802_11_ad_hoc_join adj;
		struct cmd_ds_802_11_ad_hoc_join adj;
		struct cmd_ds_802_11_radio_control radio;
		struct cmd_ds_802_11_rf_channel rfchannel;
		struct cmd_ds_802_11_rssi rssi;
		struct cmd_ds_802_11_rssi rssi;
		struct cmd_ds_802_11_rssi_rsp rssirsp;
		struct cmd_ds_802_11_rssi_rsp rssirsp;
		struct cmd_ds_802_11_disassociate dassociate;
		struct cmd_ds_802_11_disassociate dassociate;