[PATCH 2/2] driver_nl80211: handle P2P scans correctly
Eliad Peller
eliad at wizery.com
Tue Jul 19 07:57:09 EDT 2011
On Mon, Jul 18, 2011 at 8:07 PM, Johannes Berg
<johannes at sipsolutions.net> wrote:
> From: Johannes Berg <johannes.berg at intel.com>
>
> To handle P2P scans, remove 11b rates from the list
> of supported rates if present. To do that, we need
> to build a list of supported rates first.
>
> Signed-off-by: Johannes Berg <johannes.berg at intel.com>
> ---
> Note: depends on new kernel patches and nl80211 API update
[...]
> struct phy_info_arg {
> + struct wpa_driver_nl80211_data *drv;
> u16 *num_modes;
> struct hostapd_hw_modes *modes;
> };
> @@ -3270,6 +3305,8 @@ static int phy_info_handler(struct nl_ms
> int rem_band, rem_freq, rem_rate;
> struct hostapd_hw_modes *mode;
> int idx, mode_is_set;
> + int rates_known = phy_info->drv->rates != NULL;
> + int num_bands = 0, band_idx = 0;
>
> nla_parse(tb_msg, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
> genlmsg_attrlen(gnlh, 0), NULL);
> @@ -3277,7 +3314,19 @@ static int phy_info_handler(struct nl_ms
> if (!tb_msg[NL80211_ATTR_WIPHY_BANDS])
> return NL_SKIP;
>
> + nla_for_each_nested(nl_band, tb_msg[NL80211_ATTR_WIPHY_BANDS], rem_band)
> + num_bands++;
> +
> + if (!rates_known) {
> + phy_info->drv->num_bands = num_bands;
> + phy_info->drv->rates = os_malloc(num_bands * sizeof(phy_info->drv->rates[0]));
> + if (!phy_info->drv->rates)
> + return NL_SKIP;
> + }
> +
there are missing cleanups for drv->rates (for both success and failure).
More information about the HostAP
mailing list