[systemd-devel] udev breaks hostap linkage of raw/user interfaces, causing wpa_supplicant problems

Thomas Richter thor at math.tu-berlin.de
Mon Mar 16 02:34:06 PDT 2015


Am 16.03.2015 um 09:54 schrieb Greg KH:

>>
>> It's regular PCI based prism2, thank you. I'm not expecting *you* to fix
>> things in prism2, for sure. This is not the hostap mailing list.
> 
> Which exact kernel driver is this?  I don't see a prism2 PCI driver in
> the latest kernel source tree, but I'm probably looking in the wrong
> place.  Pointers to it would be appreciated so we can see exactly what
> is different about it's user/kernel interfaces that is causing problems
> here.

It's the hostap driver (also known as prism2/2.5/3), which is because
the wifi can also act as an access point with software available in the
kernel. To be precise, it is drivers/net/wireless/hostap/hostap_hw.c
and drivers/net/wireless/hostap/hostap_pci.c.

>> But look, if udev can take a working kernel driver (and prism2 surely
>> is), and breaks its interfaces, then apparently something changed in the
>> interface from back then when prism2 was written and working, to now,
>> where it no longer is.
> 
> When did things break?  What previous version of udev worked properly?

I highly doubt that this ever worked correctly with udev at all. The
things "broke" the time udev came into the show. As already said, the
trouble with the hostap adapter is that it has two network interfaces,
the wifiX and the wlanX, one is the raw radio (wifiX) and one is the
network interface that acts as an end-point once the connection is
established.

> What changed on your system that caused this problem to show up? 

I installed a hostap PCI adapter, quite simple. The problem is really
that: The laptop in question had a ipw2200 card installed, which was
configured by udev as wlan0 (obviously). This card got replaced
(basically, due to another bug in ipw2200 which is unrelated to udev),
and "obviously" udev picked a new name for the adapter, which now became
wlan1. Unfortunately, udev *did not* change the name of the raw radio
(wifi0), which should have become wifi1 to make wpa_supplicant happy.

> Did
> you upgrade the kernel? 

No.


> Whole system?

No.

> Something else? 

The wifi, from ipw2200 to a prism2 PCI card. Actually, mini-pci.

> What distro is
> this? 

Debian wheezy, as stated. Actually, I gave that information above, but
no matter, here we are again.

But that's not the debian kernel. Debian ships with a kernel that's *too
old* for this system (another story, i830GM graphics was broken and only
fixed in 3.18 lately). Thus, the machine runs with a custom 3.18.7. But
this kernel did not change in the process of exchanging the ipw2200 to
the hostap/prism chipset.

Actually, it is rather typical use case udev *should* handle, namely
replacement of hardware. The problem is really that udev is unaware of
the linkage between wifiX and wlanX (paired devices) hostap offers.

Greetings,
	Thomas



More information about the systemd-devel mailing list