[LEDE-DEV] [PATCH V4] netifd: track when wdev setup fails

Eduardo Abinader eduardoabinader at gmail.com
Thu Aug 11 23:49:22 PDT 2016


On Thu, Aug 11, 2016 at 7:27 PM, Felix Fietkau <nbd at nbd.name> wrote:
> On 2016-08-11 17:22, Eduardo Abinader wrote:
>> When netifd failed to load a valid configuration, after an invalid one,
>> it was not possible to setup the wireless device. This patch
>> aims to track this situation and behave acordingly, by keeping
>> track of failed setup without affecting autostart behavior. Also
>> block the restart of the wdev, when not applied.
>>
>> Signed-off-by: Eduardo Abinader <eduardoabinader at gmail.com>
>> ---
>>  wireless.c | 19 ++++++++++++++++---
>>  wireless.h |  1 +
>>  2 files changed, 17 insertions(+), 3 deletions(-)
>>
>> diff --git a/wireless.c b/wireless.c
>> index 34dd328..67c87f6 100644
>> --- a/wireless.c
>> +++ b/wireless.c
>> @@ -388,6 +394,10 @@ wireless_device_mark_up(struct wireless_device *wdev)
>>
>>       D(WIRELESS, "Wireless device '%s' is now up\n", wdev->name);
>>       wdev->state = IFS_UP;
>> +
>> +     if (wdev->retry_setup_failed)
>> +             wdev->retry_setup_failed = false;
>> +
>>       vlist_for_each_element(&wdev->interfaces, vif, node)
>>               wireless_interface_handle_link(vif, true);
>>  }
> wdev->retry_setup_failed = false needs to be moved to
> wdev_change_config(). You can also make it unconditional, testing if
> it's true before clearing it is unnecessary.
>

it is already, but I am taking this chunk out.

Thanks.

>> @@ -681,6 +692,7 @@ wireless_device_create(struct wireless_driver *drv, const char *name, struct blo
>>       wdev->config_state = IFC_NORMAL;
>>       wdev->name = strcpy(name_buf, name);
>>       wdev->config = data;
>> +     wdev->retry_setup_failed = false;
>>       wdev->config_autostart = true;
>>       wdev->autostart = wdev->config_autostart;
>>       INIT_LIST_HEAD(&wdev->script_proc);
>> @@ -993,4 +1005,5 @@ wireless_start_pending(void)
>>       vlist_for_each_element(&wireless_devices, wdev, node)
>>               if (wdev->autostart)
>>                       __wireless_device_set_up(wdev);
>> +
>>  }
> Please remove this empty line. You can also get rid of the
> wdev->autostart check here, since you moved it to __wireless_device_set_up.
>
> - Felix



More information about the Lede-dev mailing list