Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pc: update wlan driver #4455

Closed
cnuke opened this issue Mar 25, 2022 · 19 comments
Closed

pc: update wlan driver #4455

cnuke opened this issue Mar 25, 2022 · 19 comments

Comments

@cnuke
Copy link
Member

cnuke commented Mar 25, 2022

The following commits series introduces a new WLAN driver for the PC platform based on the Linux 5.14.2 sources that features support for Intel wireless AX (WIFI-6) devices. It is still WIP as it lacks rfkill support and the management front end integration is not yet properly done. The included wlan-test.run may be executed to test the new driver (so far it was only tested it with a 7265D and AX201 device).

cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
In case where the ported driver or protocol stack is executed from
an already managed environment, e.g. the libc, the execution
of the static constructors will be performed at the appropriate
time.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
Prevent '<warning unsupported format specifier>' when encountering
'%hu'.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
Needed by the WLAN driver on x86_32.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
Those members are access via static inline functions in the network
core code and from certain protocols, e.g. AF_NETLINK.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
The location of the used 'source.list' file is hard-coded and will not
work when the ported driver is implemented as a shared library. For
this use-case provide means to set the location differently.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
Not needed and breaks 'pc_wlan_drv'.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
Various libraries, like libnl and wpa_driver_nl80211, used hardcoded
values for the interface index (ifindex) and name (ifname).
To accomdate the legacy as well as the upcoming new driver we add
functions to query these information where at least the index differs.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
Move 'linux-firmware' portion from 'dde_linux' into its own port,
while it is used by the upcoming new WLAN driver keep it in place
for the legacy one.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
The driver falls in line with the previous 'wifi_drv' component where
the ported wireless LAN stack and device driver is encapsulated in a
library. This library in return is used by the 'Libc::Component'
providing the necessary environment for the 'wpa_supplicant'.

In constrast to the old driver a 'wlan' VFS plugin is in charge of
initalizing the 'Lx_kit::Env' prior to executing any static
constructors.

Fixes genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 25, 2022
@cnuke
Copy link
Member Author

cnuke commented Mar 25, 2022

Sculpt integration will follow next week (the pc_wlan_drv recipe is already available). Since I have not yet tested if rejoining or roaming works, I'll expect one or the other rough edge.

cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
In case where the ported driver or protocol stack is executed from
an already managed environment, e.g. the libc, the execution
of the static constructors will be performed at the appropriate
time.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
Prevent '<warning unsupported format specifier>' when encountering
'%hu'.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
Needed by the WLAN driver on x86_32.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
Those members are access via static inline functions in the network
core code and from certain protocols, e.g. AF_NETLINK.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
The location of the used 'source.list' file is hard-coded and will not
work when the ported driver is implemented as a shared library. For
this use-case provide means to set the location differently.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
Not needed and breaks 'pc_wlan_drv'.

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Mar 28, 2022
Various libraries, like libnl and wpa_driver_nl80211, used hardcoded
values for the interface index (ifindex) and name (ifname).
To accomdate the legacy as well as the upcoming new driver we add
functions to query these information where at least the index differs.

Issue genodelabs#4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
In case where the ported driver or protocol stack is executed from
an already managed environment, e.g. the libc, the execution
of the static constructors will be performed at the appropriate
time.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
Prevent '<warning unsupported format specifier>' when encountering
'%hu'.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
Needed by the WLAN driver on x86_32.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
Those members are access via static inline functions in the network
core code and from certain protocols, e.g. AF_NETLINK.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
The location of the used 'source.list' file is hard-coded and will not
work when the ported driver is implemented as a shared library. For
this use-case provide means to set the location differently.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
Not needed and breaks 'pc_wlan_drv'.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
Various libraries, like libnl and wpa_driver_nl80211, used hardcoded
values for the interface index (ifindex) and name (ifname).
To accomdate the legacy as well as the upcoming new driver we add
functions to query these information where at least the index differs.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
This is needed because now 'kobject_uevent.c' pulls netlink related
code in.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
Move 'linux-firmware' portion from 'dde_linux' into its own port,
while it is used by the upcoming new WLAN driver keep it in place
for the legacy one.

Issue #4455.
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth pushed a commit that referenced this issue Apr 13, 2022
chelmuth added a commit that referenced this issue Apr 13, 2022
Both runtimes were broken due to missing requirement for "Uplink"
service and thus unused.

Issue #4455
chelmuth pushed a commit that referenced this issue Apr 13, 2022
@cnuke
Copy link
Member Author

cnuke commented Apr 19, 2022

@chelmuth please see answers below:

Do we have any chance to trigger such reauth requests regularly in our testing environment?

Yes, we could use the ubus interface via ssh on an OpenWrt AP to force de-/reauthentication.

How does Linux WPA Supplicant play with these?

I did not check how it fares but I guess it will cope with the situation. AFAICT the problems mainly arise from how we interact with the supplicant. My commit accab77 addresses this by ignoring it on our side, which leads to the supplicant doing its thing and rejoining the network.

I vaguely remember As documented in #4083 @nfeske having some issue in the past where he could not rejoin a network after he got disconnected. This is probably due to disabling the network (I changed that to removing the network in my debug commit 9069335) in case we get disconnected. Since it never gets re-enabled from our side the supplicant will not join the network again.

All in all we should spend some time to rework the wifi management state-machine.

cnuke added a commit to cnuke/genode that referenced this issue Apr 21, 2022
(Hopefully it plays well with wpa_supplicant's AP auto-select…)

Issue genodelabs#4455.
cnuke added a commit to cnuke/genode that referenced this issue Apr 22, 2022
(Hopefully it plays well with wpa_supplicant's AP auto-select…)

Issue genodelabs#4455.
chelmuth pushed a commit that referenced this issue Apr 25, 2022
chelmuth pushed a commit that referenced this issue Apr 28, 2022
nfeske added a commit to genodelabs/genode-allwinner that referenced this issue May 6, 2022
Static constructors are no longer implicitly called by
Lx_kit::initialize() but must be called explicitly afterwards.

Issue genodelabs/genode#4455
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants