Commit 030fe797 authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville

mwifiex: fix bug in mwifiex_save_curr_bcn()

Since timestamp in beacon buffer keeps changing all the time,
the memcmp check in mwifiex_save_curr_bcn() is redundant.
Remove that memcmp check and also avoid freeing and allocation
of buffer if required beacon buffer size is same as previous one.
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a46b7b5c
...@@ -2990,32 +2990,28 @@ mwifiex_save_curr_bcn(struct mwifiex_private *priv) ...@@ -2990,32 +2990,28 @@ mwifiex_save_curr_bcn(struct mwifiex_private *priv)
struct mwifiex_bssdescriptor *curr_bss = struct mwifiex_bssdescriptor *curr_bss =
&priv->curr_bss_params.bss_descriptor; &priv->curr_bss_params.bss_descriptor;
/* save the beacon buffer if it is not saved or updated */ if (!curr_bss->beacon_buf_size)
if ((priv->curr_bcn_buf == NULL) || return;
(priv->curr_bcn_size != curr_bss->beacon_buf_size) ||
(memcmp(priv->curr_bcn_buf, curr_bss->beacon_buf,
curr_bss->beacon_buf_size))) {
kfree(priv->curr_bcn_buf);
priv->curr_bcn_buf = NULL;
/* allocate beacon buffer at 1st time; or if it's size has changed */
if (!priv->curr_bcn_buf ||
priv->curr_bcn_size != curr_bss->beacon_buf_size) {
priv->curr_bcn_size = curr_bss->beacon_buf_size; priv->curr_bcn_size = curr_bss->beacon_buf_size;
if (!priv->curr_bcn_size)
return;
kfree(priv->curr_bcn_buf);
priv->curr_bcn_buf = kzalloc(curr_bss->beacon_buf_size, priv->curr_bcn_buf = kzalloc(curr_bss->beacon_buf_size,
GFP_KERNEL); GFP_KERNEL);
if (!priv->curr_bcn_buf) { if (!priv->curr_bcn_buf) {
dev_err(priv->adapter->dev, dev_err(priv->adapter->dev,
"failed to alloc curr_bcn_buf\n"); "failed to alloc curr_bcn_buf\n");
} else { return;
}
}
memcpy(priv->curr_bcn_buf, curr_bss->beacon_buf, memcpy(priv->curr_bcn_buf, curr_bss->beacon_buf,
curr_bss->beacon_buf_size); curr_bss->beacon_buf_size);
dev_dbg(priv->adapter->dev, dev_dbg(priv->adapter->dev, "info: current beacon saved %d\n",
"info: current beacon saved %d\n",
priv->curr_bcn_size); priv->curr_bcn_size);
}
}
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment