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

Commit 09d4fad6 authored by Holger Schurig's avatar Holger Schurig Committed by David S. Miller
Browse files

libertas: fix data packet size errors



I wondered about junk bytes at the end when using "lbsdebug +hex +host"
until I noticed that firmware for the CF card sends my extranous bytes.
It says "I have 20 bytes", I take 20 bytes, but the last 8 bytes of this
are just data junk.

Also, in the new lbs_cmd() where was a size miscalulation
that made itself clear after fixing this bug.

Signed-off-by: default avatarHolger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent abe3ed14
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -882,7 +882,7 @@ int lbs_process_rx_command(struct lbs_private *priv)

	if (adapter->cur_cmd->pdata_size) {
		struct cmd_ds_gen *r = (struct cmd_ds_gen *)resp;
		u16 sz = cpu_to_le16(resp->size);
		u16 sz = cpu_to_le16(resp->size) - S_DS_GEN;
		if (sz > *adapter->cur_cmd->pdata_size) {
			lbs_pr_err("response 0x%04x doesn't fit into "
				"buffer (%d > %d)\n", respcmd,
+3 −0
Original line number Diff line number Diff line
@@ -373,6 +373,9 @@ static int if_cs_receive_cmdres(struct lbs_private *priv, u8 *data, u32 *len)
	if (*len & 1)
		data[*len-1] = if_cs_read8(priv->card, IF_CS_C_CMD);

	/* This is a workaround for a firmware that reports too much
	 * bytes */
	*len -= 8;
	ret = 0;
out:
	lbs_deb_leave_args(LBS_DEB_CS, "ret %d, len %d", ret, *len);