Hi Greg, Please consider applying 461e74377cfc (acer-wmi: No wifi rfkill on Lenovo machines, 2012-02-03) to the 3.2.y and 3.0.y trees. Ike Panhc wrote: > We have several reports which says acer-wmi is loaded on ideapads > and register rfkill for wifi which can not be unblocked. > > Since ideapad-laptop also register rfkill for wifi and it works > reliably, it will be fine acer-wmi is not going to register rfkill > for wifi once VPC2004 is found. > > Also put IBM0068/LEN0068 in the list. Though thinkpad_acpi has no > wifi rfkill capability, there are reports which says acer-wmi also > block wireless on Thinkpad E520/E420. > > Signed-off-by: Ike Panhc <ike.pan@xxxxxxxxxxxxx> The symptom was that that wifi just doesn't work on these machines until the acer-wmi driver is unloaded. Bug was present in 3.1.8 and Ubuntu's 3.0.0-12, possibly on some older kernels, too. Andrey (cc-ed) confirmed that applying the patch against 3.2.y gets wifi working again on his Ideapad Z570, so Tested-by: Andrey <andrey.k.p@xxxxxxxxx> # Ideapad Z570 References: http://bugs.debian.org/655941 http://launchpad.net/bugs/875659 https://bugzilla.redhat.com/show_bug.cgi?id=674353 Patch left unsnipped for reference. Thanks, Jonathan > --- > drivers/platform/x86/acer-wmi.c | 30 +++++++++++++++++++++++++++++- > 1 files changed, 29 insertions(+), 1 deletions(-) > > diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c > index b848277..1e5290b 100644 > --- a/drivers/platform/x86/acer-wmi.c > +++ b/drivers/platform/x86/acer-wmi.c > @@ -679,6 +679,32 @@ static acpi_status AMW0_find_mailled(void) > return AE_OK; > } > > +static int AMW0_set_cap_acpi_check_device_found; > + > +static acpi_status AMW0_set_cap_acpi_check_device_cb(acpi_handle handle, > + u32 level, void *context, void **retval) > +{ > + AMW0_set_cap_acpi_check_device_found = 1; > + return AE_OK; > +} > + > +static const struct acpi_device_id norfkill_ids[] = { > + { "VPC2004", 0}, > + { "IBM0068", 0}, > + { "LEN0068", 0}, > + { "", 0}, > +}; > + > +static int AMW0_set_cap_acpi_check_device(void) > +{ > + const struct acpi_device_id *id; > + > + for (id = norfkill_ids; id->id[0]; id++) > + acpi_get_devices(id->id, AMW0_set_cap_acpi_check_device_cb, > + NULL, NULL); > + return AMW0_set_cap_acpi_check_device_found; > +} > + > static acpi_status AMW0_set_capabilities(void) > { > struct wmab_args args; > @@ -692,7 +718,9 @@ static acpi_status AMW0_set_capabilities(void) > * work. > */ > if (wmi_has_guid(AMW0_GUID2)) { > - interface->capability |= ACER_CAP_WIRELESS; > + if ((quirks != &quirk_unknown) || > + !AMW0_set_cap_acpi_check_device()) > + interface->capability |= ACER_CAP_WIRELESS; > return AE_OK; > } > > -- > 1.7.5.4 > -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html