[PATCH 1/2] Refactor nl80211 mode switch logic
Jouni Malinen
j
Sat Jun 28 00:49:06 PDT 2014
On Thu, Jun 26, 2014 at 01:13:06PM -0700, Christopher Wiley wrote:
> In preparation for another wrinkle around switching into IBSS mode,
> refactor existing mode switch logic for simplicity at the expense
> of some brevity.
> diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
> @@ -9071,24 +9072,24 @@ static int wpa_driver_nl80211_set_mode(struct i802_bss *bss,
> wpa_printf(MSG_DEBUG, "nl80211: Try mode change after setting "
> "interface down");
> for (i = 0; i < 10; i++) {
> + os_sleep(0, 100000);
> res = i802_set_iface_flags(bss, 0);
This part of moving the delay to happen unconditionally before the first
attempt at setting the interface down does not look desired. This would
block all wpa_supplicant operations for 100 ms in a case that is common
with number of drivers. I'm considering this patch with the delay moved
back to after the failure cases:
> - } else
> + if (res != 0) {
> wpa_printf(MSG_DEBUG, "nl80211: Failed to set "
> "interface down");
> - os_sleep(0, 100000);
> + continue;
> + }
i.e., just before the continue here
> + /* Try to set the mode again while the interface is down */
> + mode_switch_res = nl80211_set_mode(drv, drv->ifindex, nlmode);
> + if (mode_switch_res == -EBUSY) {
> + wpa_printf(MSG_DEBUG, "nl80211: Delaying mode set "
> + "while interface going down.");
> + continue;
> + }
and here
--
Jouni Malinen PGP id EFC895FA
More information about the Hostap
mailing list