[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