First of all, the subject doesn't make a lot of sense?
Secondly, for a fix the code is fine I guess, but:
> rate_ie = (void *)cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES,
> params->beacon.tail,
> params->beacon.tail_len);
consider removing struct ieee_types_header from your driver, and using
struct element from <linux/ieee80211.h> instead.
This also comes with cfg80211_find_elem() that returns a suitably typed
pointer, so you don't need any casts.
> if (vendor_ie) {
> wmm_ie = vendor_ie;
> + if (*(wmm_ie + 1) > sizeof(struct mwifiex_types_wmm_info))
> + return;
and using it here would be a whole lot easier to understand too :)
johannes