mbox series

[0/2] Migrate QRTR Nameservice to Kernel

Message ID 20200213091427.13435-1-manivannan.sadhasivam@linaro.org
Headers show
Series Migrate QRTR Nameservice to Kernel | expand

Message

Manivannan Sadhasivam Feb. 13, 2020, 9:14 a.m. UTC
Hello,

This patchset migrates the Qualcomm IPC Router (QRTR) Nameservice from userspace
to kernel under net/qrtr.

The userspace implementation of it can be found here:
https://github.com/andersson/qrtr/blob/master/src/ns.c

This change is required for enabling the WiFi functionality of some Qualcomm
WLAN devices using ATH11K without any dependency on a userspace daemon.

The original userspace code is published under BSD3 license. For migrating it
to Linux kernel, I have adapted Dual BSD/GPL license.

This patchset has been verified on Dragonboard410c and Intel NUC with QCA6390
WLAN device.

Thanks,
Mani

Manivannan Sadhasivam (2):
  net: qrtr: Migrate nameservice to kernel from userspace
  net: qrtr: Fix the local node ID as 1

 net/qrtr/Makefile |   2 +-
 net/qrtr/ns.c     | 730 ++++++++++++++++++++++++++++++++++++++++++++++
 net/qrtr/qrtr.c   |  51 +---
 net/qrtr/qrtr.h   |   4 +
 4 files changed, 746 insertions(+), 41 deletions(-)
 create mode 100644 net/qrtr/ns.c

Comments

Dan Williams Feb. 13, 2020, 3:22 p.m. UTC | #1
On Thu, 2020-02-13 at 14:44 +0530, Manivannan Sadhasivam wrote:
> Hello,
> 
> This patchset migrates the Qualcomm IPC Router (QRTR) Nameservice
> from userspace
> to kernel under net/qrtr.
> 
> The userspace implementation of it can be found here:
> https://github.com/andersson/qrtr/blob/master/src/ns.c
> 
> This change is required for enabling the WiFi functionality of some
> Qualcomm
> WLAN devices using ATH11K without any dependency on a userspace
> daemon.

Just out of curiousity, what's the motivation for not requiring a
userspace daemon? What are the downsides of the current userspace
daemon implementation?

Dan

> The original userspace code is published under BSD3 license. For
> migrating it
> to Linux kernel, I have adapted Dual BSD/GPL license.
> 
> This patchset has been verified on Dragonboard410c and Intel NUC with
> QCA6390
> WLAN device.
> 
> Thanks,
> Mani
> 
> Manivannan Sadhasivam (2):
>   net: qrtr: Migrate nameservice to kernel from userspace
>   net: qrtr: Fix the local node ID as 1
> 
>  net/qrtr/Makefile |   2 +-
>  net/qrtr/ns.c     | 730
> ++++++++++++++++++++++++++++++++++++++++++++++
>  net/qrtr/qrtr.c   |  51 +---
>  net/qrtr/qrtr.h   |   4 +
>  4 files changed, 746 insertions(+), 41 deletions(-)
>  create mode 100644 net/qrtr/ns.c
>
Manivannan Sadhasivam Feb. 13, 2020, 3:30 p.m. UTC | #2
Hi Dan,

On Thu, Feb 13, 2020 at 09:22:39AM -0600, Dan Williams wrote:
> On Thu, 2020-02-13 at 14:44 +0530, Manivannan Sadhasivam wrote:
> > Hello,
> > 
> > This patchset migrates the Qualcomm IPC Router (QRTR) Nameservice
> > from userspace
> > to kernel under net/qrtr.
> > 
> > The userspace implementation of it can be found here:
> > https://github.com/andersson/qrtr/blob/master/src/ns.c
> > 
> > This change is required for enabling the WiFi functionality of some
> > Qualcomm
> > WLAN devices using ATH11K without any dependency on a userspace
> > daemon.
> 
> Just out of curiousity, what's the motivation for not requiring a
> userspace daemon? What are the downsides of the current userspace
> daemon implementation?
>

The primary motivation is to eliminate the need for installing and starting
a userspace tool for the basic WiFi usage. This will be critical for the
Qualcomm WLAN devices deployed in x86 laptops.

Also, there are some plans to implement QRTR link negotiation based on this
in future.

Thanks,
Mani
 
> Dan
> 
> > The original userspace code is published under BSD3 license. For
> > migrating it
> > to Linux kernel, I have adapted Dual BSD/GPL license.
> > 
> > This patchset has been verified on Dragonboard410c and Intel NUC with
> > QCA6390
> > WLAN device.
> > 
> > Thanks,
> > Mani
> > 
> > Manivannan Sadhasivam (2):
> >   net: qrtr: Migrate nameservice to kernel from userspace
> >   net: qrtr: Fix the local node ID as 1
> > 
> >  net/qrtr/Makefile |   2 +-
> >  net/qrtr/ns.c     | 730
> > ++++++++++++++++++++++++++++++++++++++++++++++
> >  net/qrtr/qrtr.c   |  51 +---
> >  net/qrtr/qrtr.h   |   4 +
> >  4 files changed, 746 insertions(+), 41 deletions(-)
> >  create mode 100644 net/qrtr/ns.c
> > 
>
David Miller Feb. 13, 2020, 3:47 p.m. UTC | #3
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Date: Thu, 13 Feb 2020 21:00:08 +0530

> The primary motivation is to eliminate the need for installing and starting
> a userspace tool for the basic WiFi usage. This will be critical for the
> Qualcomm WLAN devices deployed in x86 laptops.

I can't even remember it ever being the case that wifi would come up without
the help of a userspace component of some sort to initiate the scan and choose
and AP to associate with.

And from that perspective your argument doesn't seem valid at all.
Manivannan Sadhasivam Feb. 14, 2020, 7:08 a.m. UTC | #4
+ Kalle Valo

On Thu, Feb 13, 2020 at 07:47:55AM -0800, David Miller wrote:
> From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> Date: Thu, 13 Feb 2020 21:00:08 +0530
> 
> > The primary motivation is to eliminate the need for installing and starting
> > a userspace tool for the basic WiFi usage. This will be critical for the
> > Qualcomm WLAN devices deployed in x86 laptops.
> 
> I can't even remember it ever being the case that wifi would come up without
> the help of a userspace component of some sort to initiate the scan and choose
> and AP to associate with.
> 
> And from that perspective your argument doesn't seem valid at all.

Kalle has some information to share.

Thanks,
Mani
Manivannan Sadhasivam Feb. 14, 2020, 9:11 a.m. UTC | #5
Hi Dave,

On Thu, Feb 13, 2020 at 07:47:55AM -0800, David Miller wrote:
> From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> Date: Thu, 13 Feb 2020 21:00:08 +0530
> 
> > The primary motivation is to eliminate the need for installing and starting
> > a userspace tool for the basic WiFi usage. This will be critical for the
> > Qualcomm WLAN devices deployed in x86 laptops.
> 
> I can't even remember it ever being the case that wifi would come up without
> the help of a userspace component of some sort to initiate the scan and choose
> and AP to associate with.
> 
> And from that perspective your argument doesn't seem valid at all.

For the WiFi yes, but I should have added that this QRTR nameservice is being
used by modems, DSPs and some other co-processors for some offloading tasks.
So currently, they all depend on userspace ns tool for working. So migrating
it to kernel can benefit them all.

Sorry that I should've made it clear in the commit message.

Thanks,
Mani
Kalle Valo Feb. 16, 2020, 3:52 p.m. UTC | #6
+ linux-wireless

Hi Dave & Dan,

Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes:

> On Thu, Feb 13, 2020 at 07:47:55AM -0800, David Miller wrote:
>> From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
>> Date: Thu, 13 Feb 2020 21:00:08 +0530
>> 
>> > The primary motivation is to eliminate the need for installing and starting
>> > a userspace tool for the basic WiFi usage. This will be critical for the
>> > Qualcomm WLAN devices deployed in x86 laptops.
>> 
>> I can't even remember it ever being the case that wifi would come up without
>> the help of a userspace component of some sort to initiate the scan and choose
>> and AP to associate with.
>> 
>> And from that perspective your argument doesn't seem valid at all.
>
> For the WiFi yes, but I should have added that this QRTR nameservice is being
> used by modems, DSPs and some other co-processors for some offloading tasks.
> So currently, they all depend on userspace ns tool for working. So migrating
> it to kernel can benefit them all.

So the background of this is to get QCA6390[1] (a Qualcomm Wi-Fi 6 PCI
device) supported in ath11k without additional dependencies to user
space. Currently Bjorn's QRTR user space daemon[2] needs to be running
for ath11k to even be able to boot the firmware on the device.

In my opinion a wireless driver should be "self contained", meaning that
it should be enough just to update the kernel and install the firmware
images to /lib/firmware and nothing else should be needed. But without
Mani's patches a user with QCA6390 on her laptop would need to fetch and
install the QRTR daemon (as I doubt distros have it pre-installed)
before getting Wi-Fi working on the laptop. But without Wi-Fi trying to
fetch anything from the internet is annoying, so not a very smooth user
experience.

I assume Dave above refers to iw, wpasupplicant and hostapd but I
consider them very different from QRTR. iw, wpasupplicant and hostapd
are generic wireless user space components using the generic
nl80211/wext interfaces and they work with _all_ upstream drivers. They
are also pre-installed by distros so it's basically plug and go for the
user to get Wi-Fi running.

Also from high level design point of view I don't like the idea that
wireless drivers would start to having vendor specific user components,
like Qualcomm, Marvell, Intel and other vendors having their own daemons
running in addition of generic wireless components (iw/wpas/hostapd).
That would be a quite mess trying to handle backwards compatibility and
all other stable kernel/user space interface requirements.

So to have a smooth out of box experience for ath11k users, I consider
that we need QRTR in the kernel and that's why need Mani's patches[3].

[1] https://www.qualcomm.com/products/fastconnect-6800

[2] https://github.com/andersson/qrtr/

[3] https://patchwork.ozlabs.org/cover/1237353/

    https://patchwork.ozlabs.org/patch/1237355/

    https://patchwork.ozlabs.org/patch/1237354/