[PATCH 5/5] staging: r8712u: Merging Realtek's latest (v2.6.6). Various fixes.
Ali Bahar
ali at internetdog.org
Tue Aug 30 06:54:41 UTC 2011
Larry,
this is just an FYI that the following, below, will not be in the
coming patch set.
On Tue, Aug 23, 2011 at 01:53:41PM +0800, Ali Bahar wrote:
> Merged the changes from Realtek's v2.6.6.0.20110401 release.
> Its Release Notes listed the fixes, though not all may have been
> merged into this commit. They include:
>
> Rename the version rule to v6.0
> Fixed the IOT connection issue with Netgear 3700
> Fixed the potential crash issue when connecting to the Linksys 350N.
>
> Driver will use the bg mode to connect to the WEP mode AP.
>
> Updated the mechanism to compute the link quality.
> Use the percentage format for signal strength and link quality display.
>
> Fixed the connection problem when the adhoc SSID is the same as the existing
> AP’s SSID.
> The firmware will send the de-authentication to AP if the WiFi dongle
> thinks the AP had disappeared.
> The firmware will send more NULL data packet to check the current
> network (AP) is alive or not.
>
> Fixed the BitRate information when using the iwconfig.
> Added the Realtek GPL license.
>
> Updated VID/PID table
>
> Use stack instead of heap for usbctrl_vendorreq's buffer use
> Fix the Android private wifi ioctl SCAN-ACTIVE, SCAN-PASSIVE
>
> Fixed the compile error on kernel 2.6.37.
> Added the WPS cancel function.
> Added the channel plan.
>
> Signed-off-by: Ali Bahar <ali at internetDog.org>
> ---
> diff --git a/drivers/staging/rtl8712/rtl871x_mlme.c b/drivers/staging/rtl8712/rtl871x_mlme.c
> index 866554d..f01f540 100644
> --- a/drivers/staging/rtl8712/rtl871x_mlme.c
> +++ b/drivers/staging/rtl8712/rtl871x_mlme.c
> @@ -711,18 +721,10 @@ void r8712_joinbss_event_callback(struct _adapter *adapter, u8 *pbuf)
> struct sta_info *ptarget_sta = NULL, *pcur_sta = NULL;
> struct sta_priv *pstapriv = &adapter->stapriv;
> struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
> + struct wlan_network *pnetwork = (struct wlan_network *)pbuf;
> struct wlan_network *cur_network = &pmlmepriv->cur_network;
> struct wlan_network *pcur_wlan = NULL, *ptarget_wlan = NULL;
> unsigned int the_same_macaddr = false;
> - struct wlan_network *pnetwork;
> -
> - if (sizeof(struct list_head) == 4 * sizeof(u32)) {
> - pnetwork = (struct wlan_network *)
> - _malloc(sizeof(struct wlan_network));
> - memcpy((u8 *)pnetwork+16, (u8 *)pbuf + 8,
> - sizeof(struct wlan_network) - 16);
> - } else
> - pnetwork = (struct wlan_network *)pbuf;
The removed block ought to have been kept! It is necessary for 64-bit
operation! Without it, association fails.
Why did it work last week? It depends on what was in pbuf. Certainly,
in the current test, it did not result in a positive
pnetwork->join_res, and so the association failed.
>
> #ifdef __BIG_ENDIAN
> /* endian_convert */
> @@ -914,8 +916,6 @@ void r8712_joinbss_event_callback(struct _adapter *adapter, u8 *pbuf)
> }
> ignore_joinbss_callback:
> spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
> - if (sizeof(struct list_head) == 4 * sizeof(u32))
> - kfree((u8 *)pnetwork);
> }
And this kfree is tied to the above.
regards,
ali
More information about the devel
mailing list