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

Commit 2b06bdbe authored by Marc Yang's avatar Marc Yang Committed by John W. Linville
Browse files

mwifiex: cleanup power save related struct and macros



remove redundant structures and unused macros

Signed-off-by: default avatarMarc Yang <yangyang@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 4dd365fd
Loading
Loading
Loading
Loading
+19 −18
Original line number Original line Diff line number Diff line
@@ -275,14 +275,14 @@ static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter)
	}
	}
	if (GET_BSS_ROLE(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY))
	if (GET_BSS_ROLE(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY))
			== MWIFIEX_BSS_ROLE_STA) {
			== MWIFIEX_BSS_ROLE_STA) {
		if (!sleep_cfm_buf->ps_cfm_sleep.sleep_cfm.resp_ctrl)
		if (!sleep_cfm_buf->ps_cfm_sleep.resp_ctrl)
			/* Response is not needed for sleep
			/* Response is not needed for sleep
			   confirm command */
			   confirm command */
			adapter->ps_state = PS_STATE_SLEEP;
			adapter->ps_state = PS_STATE_SLEEP;
		else
		else
			adapter->ps_state = PS_STATE_SLEEP_CFM;
			adapter->ps_state = PS_STATE_SLEEP_CFM;


		if (!sleep_cfm_buf->ps_cfm_sleep.sleep_cfm.resp_ctrl
		if (!sleep_cfm_buf->ps_cfm_sleep.resp_ctrl
				&& (adapter->is_hs_configured
				&& (adapter->is_hs_configured
					&& !adapter->sleep_period.period)) {
					&& !adapter->sleep_period.period)) {
			adapter->pm_wakeup_card_req = true;
			adapter->pm_wakeup_card_req = true;
@@ -1211,15 +1211,18 @@ int mwifiex_cmd_enh_power_mode(struct mwifiex_private *priv,
	if (cmd_action == DIS_AUTO_PS) {
	if (cmd_action == DIS_AUTO_PS) {
		psmode_enh->action = cpu_to_le16(DIS_AUTO_PS);
		psmode_enh->action = cpu_to_le16(DIS_AUTO_PS);
		psmode_enh->params.ps_bitmap = cpu_to_le16(ps_bitmap);
		psmode_enh->params.ps_bitmap = cpu_to_le16(ps_bitmap);
		cmd->size = cpu_to_le16(S_DS_GEN + AUTO_PS_FIX_SIZE);
		cmd->size = cpu_to_le16(S_DS_GEN + sizeof(psmode_enh->action) +
				sizeof(psmode_enh->params.ps_bitmap));
	} else if (cmd_action == GET_PS) {
	} else if (cmd_action == GET_PS) {
		psmode_enh->action = cpu_to_le16(GET_PS);
		psmode_enh->action = cpu_to_le16(GET_PS);
		psmode_enh->params.ps_bitmap = cpu_to_le16(ps_bitmap);
		psmode_enh->params.ps_bitmap = cpu_to_le16(ps_bitmap);
		cmd->size = cpu_to_le16(S_DS_GEN + AUTO_PS_FIX_SIZE);
		cmd->size = cpu_to_le16(S_DS_GEN + sizeof(psmode_enh->action) +
				sizeof(psmode_enh->params.ps_bitmap));
	} else if (cmd_action == EN_AUTO_PS) {
	} else if (cmd_action == EN_AUTO_PS) {
		psmode_enh->action = cpu_to_le16(EN_AUTO_PS);
		psmode_enh->action = cpu_to_le16(EN_AUTO_PS);
		psmode_enh->params.auto_ps.ps_bitmap = cpu_to_le16(ps_bitmap);
		psmode_enh->params.ps_bitmap = cpu_to_le16(ps_bitmap);
		cmd_size = S_DS_GEN + AUTO_PS_FIX_SIZE;
		cmd_size = S_DS_GEN + sizeof(psmode_enh->action) +
				sizeof(psmode_enh->params.ps_bitmap);
		tlv = (u8 *) cmd + cmd_size;
		tlv = (u8 *) cmd + cmd_size;
		if (ps_bitmap & BITMAP_STA_PS) {
		if (ps_bitmap & BITMAP_STA_PS) {
			struct mwifiex_adapter *adapter = priv->adapter;
			struct mwifiex_adapter *adapter = priv->adapter;
@@ -1249,24 +1252,23 @@ int mwifiex_cmd_enh_power_mode(struct mwifiex_private *priv,


		}
		}
		if (ps_bitmap & BITMAP_AUTO_DS) {
		if (ps_bitmap & BITMAP_AUTO_DS) {
			struct mwifiex_ie_types_auto_ds_param *auto_ps_tlv =
			struct mwifiex_ie_types_auto_ds_param *auto_ds_tlv =
				(struct mwifiex_ie_types_auto_ds_param *) tlv;
				(struct mwifiex_ie_types_auto_ds_param *) tlv;
			struct mwifiex_auto_ds_param *auto_ds =
				&auto_ps_tlv->param;
			u16 idletime = 0;
			u16 idletime = 0;
			auto_ps_tlv->header.type =

			auto_ds_tlv->header.type =
				cpu_to_le16(TLV_TYPE_AUTO_DS_PARAM);
				cpu_to_le16(TLV_TYPE_AUTO_DS_PARAM);
			auto_ps_tlv->header.len =
			auto_ds_tlv->header.len =
				cpu_to_le16(sizeof(*auto_ps_tlv) -
				cpu_to_le16(sizeof(*auto_ds_tlv) -
					sizeof(struct mwifiex_ie_types_header));
					sizeof(struct mwifiex_ie_types_header));
			cmd_size += sizeof(*auto_ps_tlv);
			cmd_size += sizeof(*auto_ds_tlv);
			tlv += sizeof(*auto_ps_tlv);
			tlv += sizeof(*auto_ds_tlv);
			if (data_buf)
			if (data_buf)
				idletime = ((struct mwifiex_ds_auto_ds *)
				idletime = ((struct mwifiex_ds_auto_ds *)
					     data_buf)->idle_time;
					     data_buf)->idle_time;
			dev_dbg(priv->adapter->dev,
			dev_dbg(priv->adapter->dev,
					"cmd: PS Command: Enter Auto Deep Sleep\n");
					"cmd: PS Command: Enter Auto Deep Sleep\n");
			auto_ds->deep_sleep_timeout = cpu_to_le16(idletime);
			auto_ds_tlv->deep_sleep_timeout = cpu_to_le16(idletime);
		}
		}
		cmd->size = cpu_to_le16(cmd_size);
		cmd->size = cpu_to_le16(cmd_size);
	}
	}
@@ -1290,7 +1292,7 @@ int mwifiex_ret_enh_power_mode(struct mwifiex_private *priv,
	uint16_t action = le16_to_cpu(ps_mode->action);
	uint16_t action = le16_to_cpu(ps_mode->action);
	uint16_t ps_bitmap = le16_to_cpu(ps_mode->params.ps_bitmap);
	uint16_t ps_bitmap = le16_to_cpu(ps_mode->params.ps_bitmap);
	uint16_t auto_ps_bitmap =
	uint16_t auto_ps_bitmap =
		le16_to_cpu(ps_mode->params.auto_ps.ps_bitmap);
		le16_to_cpu(ps_mode->params.ps_bitmap);


	dev_dbg(adapter->dev, "info: %s: PS_MODE cmd reply result=%#x action=%#X\n",
	dev_dbg(adapter->dev, "info: %s: PS_MODE cmd reply result=%#x action=%#X\n",
					__func__, resp->result, action);
					__func__, resp->result, action);
@@ -1318,8 +1320,7 @@ int mwifiex_ret_enh_power_mode(struct mwifiex_private *priv,
			}
			}
		}
		}
	} else if (action == GET_PS) {
	} else if (action == GET_PS) {
		if (ps_bitmap & (BITMAP_STA_PS | BITMAP_UAP_INACT_PS
		if (ps_bitmap & BITMAP_STA_PS)
							| BITMAP_UAP_DTIM_PS))
			adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_PSP;
			adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_PSP;
		else
		else
			adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_CAM;
			adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_CAM;
+7 −34
Original line number Original line Diff line number Diff line
@@ -127,11 +127,14 @@ enum MWIFIEX_802_11_WEP_STATUS {
#define TLV_TYPE_WMMQSTATUS         (PROPRIETARY_TLV_BASE_ID + 16)
#define TLV_TYPE_WMMQSTATUS         (PROPRIETARY_TLV_BASE_ID + 16)
#define TLV_TYPE_WILDCARDSSID       (PROPRIETARY_TLV_BASE_ID + 18)
#define TLV_TYPE_WILDCARDSSID       (PROPRIETARY_TLV_BASE_ID + 18)
#define TLV_TYPE_TSFTIMESTAMP       (PROPRIETARY_TLV_BASE_ID + 19)
#define TLV_TYPE_TSFTIMESTAMP       (PROPRIETARY_TLV_BASE_ID + 19)

#define TLV_TYPE_AUTH_TYPE          (PROPRIETARY_TLV_BASE_ID + 31)
#define TLV_TYPE_AUTH_TYPE          (PROPRIETARY_TLV_BASE_ID + 31)

#define TLV_TYPE_CHANNELBANDLIST    (PROPRIETARY_TLV_BASE_ID + 42)
#define TLV_TYPE_CHANNELBANDLIST    (PROPRIETARY_TLV_BASE_ID + 42)
#define TLV_TYPE_RATE_DROP_CONTROL  (PROPRIETARY_TLV_BASE_ID + 82)
#define TLV_TYPE_RATE_SCOPE         (PROPRIETARY_TLV_BASE_ID + 83)
#define TLV_TYPE_POWER_GROUP        (PROPRIETARY_TLV_BASE_ID + 84)
#define TLV_TYPE_WAPI_IE            (PROPRIETARY_TLV_BASE_ID + 94)
#define TLV_TYPE_WAPI_IE            (PROPRIETARY_TLV_BASE_ID + 94)
#define TLV_TYPE_AUTO_DS_PARAM      (PROPRIETARY_TLV_BASE_ID + 113)
#define TLV_TYPE_PS_PARAM           (PROPRIETARY_TLV_BASE_ID + 114)


#define MWIFIEX_TX_DATA_BUF_SIZE_2K        2048
#define MWIFIEX_TX_DATA_BUF_SIZE_2K        2048


@@ -184,11 +187,6 @@ enum MWIFIEX_802_11_WEP_STATUS {


#define LLC_SNAP_LEN    8
#define LLC_SNAP_LEN    8


#define TLV_TYPE_RATE_DROP_CONTROL  (PROPRIETARY_TLV_BASE_ID + 82)
#define TLV_TYPE_RATE_SCOPE         (PROPRIETARY_TLV_BASE_ID + 83)

#define TLV_TYPE_POWER_GROUP        (PROPRIETARY_TLV_BASE_ID + 84)

#define MOD_CLASS_HR_DSSS       0x03
#define MOD_CLASS_HR_DSSS       0x03
#define MOD_CLASS_OFDM          0x07
#define MOD_CLASS_OFDM          0x07
#define MOD_CLASS_HT            0x08
#define MOD_CLASS_HT            0x08
@@ -553,34 +551,12 @@ struct mwifiex_ps_param {
	__le16 delay_to_ps;
	__le16 delay_to_ps;
};
};


struct mwifiex_auto_ds_param {
	__le16 deep_sleep_timeout;
};

struct sleep_confirm_param {
	__le16 resp_ctrl;
};

#define BITMAP_AUTO_DS         0x01
#define BITMAP_AUTO_DS         0x01
#define BITMAP_STA_PS          0x10
#define BITMAP_STA_PS          0x10
#define BITMAP_UAP_INACT_PS    0x100
#define BITMAP_UAP_DTIM_PS     0x200
struct auto_ps_param {
	__le16 ps_bitmap;
	/* auto deep sleep parameter,
	 * sta power save parameter
	 * uap inactivity parameter
	 * uap DTIM parameter */
};

#define AUTO_PS_FIX_SIZE    4

#define TLV_TYPE_AUTO_DS_PARAM        (PROPRIETARY_TLV_BASE_ID + 113)
#define TLV_TYPE_PS_PARAM             (PROPRIETARY_TLV_BASE_ID + 114)


struct mwifiex_ie_types_auto_ds_param {
struct mwifiex_ie_types_auto_ds_param {
	struct mwifiex_ie_types_header header;
	struct mwifiex_ie_types_header header;
	struct mwifiex_auto_ds_param param;
	__le16 deep_sleep_timeout;
} __packed;
} __packed;


struct mwifiex_ie_types_ps_param {
struct mwifiex_ie_types_ps_param {
@@ -593,10 +569,7 @@ struct host_cmd_ds_802_11_ps_mode_enh {


	union {
	union {
		struct mwifiex_ps_param opt_ps;
		struct mwifiex_ps_param opt_ps;
		struct mwifiex_auto_ds_param auto_ds;
		struct sleep_confirm_param sleep_cfm;
		__le16 ps_bitmap;
		__le16 ps_bitmap;
		struct auto_ps_param auto_ps;
	} params;
	} params;
} __packed;
} __packed;


@@ -1260,7 +1233,7 @@ struct mwifiex_opt_sleep_confirm {
	__le16 seq_num;
	__le16 seq_num;
	__le16 result;
	__le16 result;
	__le16 action;
	__le16 action;
	struct sleep_confirm_param sleep_cfm;
	__le16 resp_ctrl;
} __packed;
} __packed;


struct mwifiex_opt_sleep_confirm_buffer {
struct mwifiex_opt_sleep_confirm_buffer {
+1 −1
Original line number Original line Diff line number Diff line
@@ -280,7 +280,7 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter)
			cpu_to_le16(adapter->sleep_cfm->len);
			cpu_to_le16(adapter->sleep_cfm->len);
		sleep_cfm_buf->ps_cfm_sleep.result = 0;
		sleep_cfm_buf->ps_cfm_sleep.result = 0;
		sleep_cfm_buf->ps_cfm_sleep.action = cpu_to_le16(SLEEP_CONFIRM);
		sleep_cfm_buf->ps_cfm_sleep.action = cpu_to_le16(SLEEP_CONFIRM);
		sleep_cfm_buf->ps_cfm_sleep.sleep_cfm.resp_ctrl =
		sleep_cfm_buf->ps_cfm_sleep.resp_ctrl =
			cpu_to_le16(RESP_NEEDED);
			cpu_to_le16(RESP_NEEDED);
	}
	}
	memset(&adapter->sleep_params, 0, sizeof(adapter->sleep_params));
	memset(&adapter->sleep_params, 0, sizeof(adapter->sleep_params));
+10 −13
Original line number Original line Diff line number Diff line
@@ -46,6 +46,7 @@ mwifiex_process_cmdresp_error(struct mwifiex_private *priv,
{
{
	struct cmd_ctrl_node *cmd_node = NULL, *tmp_node = NULL;
	struct cmd_ctrl_node *cmd_node = NULL, *tmp_node = NULL;
	struct mwifiex_adapter *adapter = priv->adapter;
	struct mwifiex_adapter *adapter = priv->adapter;
	struct host_cmd_ds_802_11_ps_mode_enh *pm;
	unsigned long flags;
	unsigned long flags;


	dev_err(adapter->dev, "CMD_RESP: cmd %#x error, result=%#x\n",
	dev_err(adapter->dev, "CMD_RESP: cmd %#x error, result=%#x\n",
@@ -55,20 +56,16 @@ mwifiex_process_cmdresp_error(struct mwifiex_private *priv,


	switch (le16_to_cpu(resp->command)) {
	switch (le16_to_cpu(resp->command)) {
	case HostCmd_CMD_802_11_PS_MODE_ENH:
	case HostCmd_CMD_802_11_PS_MODE_ENH:
		{
		pm = &resp->params.psmode_enh;
			struct host_cmd_ds_802_11_ps_mode_enh *pm =
				&resp->params.psmode_enh;
		dev_err(adapter->dev, "PS_MODE_ENH cmd failed: "
		dev_err(adapter->dev, "PS_MODE_ENH cmd failed: "
					"result=0x%x action=0x%X\n",
					"result=0x%x action=0x%X\n",
				resp->result, le16_to_cpu(pm->action));
				resp->result, le16_to_cpu(pm->action));
		/* We do not re-try enter-ps command in ad-hoc mode. */
		/* We do not re-try enter-ps command in ad-hoc mode. */
		if (le16_to_cpu(pm->action) == EN_AUTO_PS &&
		if (le16_to_cpu(pm->action) == EN_AUTO_PS &&
				(le16_to_cpu(pm->params.auto_ps.ps_bitmap) &
			(le16_to_cpu(pm->params.ps_bitmap) & BITMAP_STA_PS) &&
				 BITMAP_STA_PS)
				priv->bss_mode == NL80211_IFTYPE_ADHOC)
				&& priv->bss_mode == NL80211_IFTYPE_ADHOC)
			adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_CAM;
				adapter->ps_mode =

					MWIFIEX_802_11_POWER_MODE_CAM;
		}
		break;
		break;
	case HostCmd_CMD_802_11_SCAN:
	case HostCmd_CMD_802_11_SCAN:
		/* Cancel all pending scan command */
		/* Cancel all pending scan command */