On Thu, Jun 15, 2017 at 09:59:06AM +1000, Tobin C. Harding wrote:
> On Wed, Jun 14, 2017 at 12:24:21PM +0200, Greg Kroah-Hartman wrote:
> > On Wed, Jun 14, 2017 at 04:30:37PM +1000, Tobin C. Harding wrote:
> > > Currently we are in the process of replacing the WEXT interface with
> > > the cfg80211 API. WEXT code is currently within a sub directory and
> > > not included in the module build.
> > >
> > > The driver is designed with various layers of abstraction;
> > >
> > > - The main layer contains the net_device_ops callbacks. Also included
> > > in this layer is the rx/tx code.
> > > - The SDIO layer contains code specific to the SDIO hardware.
> > > - The cfg80211 layer contains the implementation of the cfg80211
> > > configuration API.
> > > - The HIF (Host InterFace) layer provides driver policy and interfaces
> > > between the cfg80211 layer and the FIL.
> > > - The FIL (Firmware Interface Layer) provides mechanism for
> > > interfacing with the firmware.
> > >
> > > The firmware interface is derived from the WEXT driver, if we
> > > write code to interface with the firmware as a separate abstraction
> > > layer then the cfg80211 code and the rest of the driver functionality
> > > can be written cleanly from scratch.
> > >
> > > The separate layers are restricted to calls as indicated by the
> > > following diagram, A --> B indicates layer A calls functions in layer B.
> > >
> > > ----> main (tx/rx) <---> SDIO
> > > |
> > > | |
> > > | |
> > > v v
> > >
> > > cfg80211 <---> HIF
> > >
> > > |
> > > |
> > > v
> > >
> > > FIL
> > >
> > > Implementation status is outlined in README.rst. A todo list is
> > > included in TODO.rst.
> > >
> > > Add initial cfg80211 implementation.
> > >
> > > Signed-off-by: Tobin C. Harding <[email protected]>
> > > ---
> > > drivers/staging/ks7010/Kconfig | 2 +
> > > drivers/staging/ks7010/Makefile | 28 +-
> > > drivers/staging/ks7010/README.rst | 91 +++
> > > drivers/staging/ks7010/TODO.rst | 30 +
> > > drivers/staging/ks7010/cfg80211.c | 981 +++++++++++++++++++++++++++
> > > drivers/staging/ks7010/cfg80211.h | 40 ++
> > > drivers/staging/ks7010/common.h | 33 +
> > > drivers/staging/ks7010/eap.h | 73 ++
> > > drivers/staging/ks7010/fil.c | 1294
> > > ++++++++++++++++++++++++++++++++++++
> > > drivers/staging/ks7010/fil.h | 559 ++++++++++++++++
> > > drivers/staging/ks7010/fil_types.h | 851 ++++++++++++++++++++++++
> > > drivers/staging/ks7010/hif.c | 505 ++++++++++++++
> > > drivers/staging/ks7010/hif.h | 202 ++++++
> > > drivers/staging/ks7010/ks7010.h | 309 +++++++++
> > > drivers/staging/ks7010/main.c | 337 ++++++++++
> > > drivers/staging/ks7010/rx.c | 130 ++++
> > > drivers/staging/ks7010/sdio.c | 691 +++++++++++++++++++
> > > drivers/staging/ks7010/sdio.h | 37 ++
> > > drivers/staging/ks7010/tx.c | 170 +++++
> > > 19 files changed, 6362 insertions(+), 1 deletion(-)
> > > create mode 100644 drivers/staging/ks7010/README.rst
> > > create mode 100644 drivers/staging/ks7010/TODO.rst
> > > create mode 100644 drivers/staging/ks7010/cfg80211.c
> > > create mode 100644 drivers/staging/ks7010/cfg80211.h
> > > create mode 100644 drivers/staging/ks7010/common.h
> > > create mode 100644 drivers/staging/ks7010/eap.h
> > > create mode 100644 drivers/staging/ks7010/fil.c
> > > create mode 100644 drivers/staging/ks7010/fil.h
> > > create mode 100644 drivers/staging/ks7010/fil_types.h
> > > create mode 100644 drivers/staging/ks7010/hif.c
> > > create mode 100644 drivers/staging/ks7010/hif.h
> > > create mode 100644 drivers/staging/ks7010/ks7010.h
> > > create mode 100644 drivers/staging/ks7010/main.c
> > > create mode 100644 drivers/staging/ks7010/rx.c
> > > create mode 100644 drivers/staging/ks7010/sdio.c
> > > create mode 100644 drivers/staging/ks7010/sdio.h
> > > create mode 100644 drivers/staging/ks7010/tx.c
> > >
> > > diff --git a/drivers/staging/ks7010/Kconfig
> > > b/drivers/staging/ks7010/Kconfig
> > > index 437b928..71f2026 100644
> > > --- a/drivers/staging/ks7010/Kconfig
> > > +++ b/drivers/staging/ks7010/Kconfig
> > > @@ -1,5 +1,7 @@
> > > config KS7010
> > > tristate "KeyStream KS7010 SDIO support"
> > > + depends on CFG80211
> > > + depends on MMC
> >
> > tabs vs. spaces???
>
> Face palm.
>
> > > ---help---
> > > This is a driver for KeyStream KS7010 based SDIO WIFI cards. It is
> > > found on at least later Spectec SDW-821 (FCC-ID "S2Y-WLAN-11G-K" only,
> > > diff --git a/drivers/staging/ks7010/Makefile
> > > b/drivers/staging/ks7010/Makefile
> > > index 9444885..1cd570e 100644
> > > --- a/drivers/staging/ks7010/Makefile
> > > +++ b/drivers/staging/ks7010/Makefile
> > > @@ -1 +1,27 @@
> > > -# Makefile intentionally left blank
> > > +#-------------------------------------------------------------------------
> > > +# Driver for KeyStream wireless LAN cards.
> > > +#
> > > +# Copyright (C) 2005-2008 KeyStream Corp.
> > > +# Copyright (C) 2009 Renesas Technology Corp.
> > > +# Copyright (C) 2017 Tobin C. Harding.
> > > +#
> > > +# This program is free software; you can redistribute it and/or modify
> > > +# it under the terms of the GNU General Public License version 2 as
> > > +# published by the Free Software Foundation.
> > > +#
> > > +# This program is distributed in the hope that it will be useful, but
> > > +# WITHOUT ANY WARRANTY; without even the implied warranty of
> > > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> > > +# General Public License for more details.
> >
> > It's a makefile, not a "program", so why is all of this here?
>
> I followed ath6kl for much of the time while writing this, ath6kl does
> this. I will remove it and resubmit.
>
> > > +#-------------------------------------------------------------------------
> > > +
> > > +ccflags-y += -DDEBUG
> > > +
> > > +obj-$(CONFIG_KS7010) += ks7010.o
> > > +ks7010-y += main.o
> > > +ks7010-y += tx.o
> > > +ks7010-y += rx.o
> > > +ks7010-y += sdio.o
> > > +ks7010-y += cfg80211.o
> > > +ks7010-y += fil.o
> > > +ks7010-y += hif.o
> >
> > Wait, is this a whole new driver for this device? Why not just put it
> > in a new directory and just forget about the old one entirely?
>
> Thanks for your responses Greg. I do not know the correct protocol to
> follow for what I am attempting with this patch set. I mentioned this in
> the RFC hoping to get some direction. There were no comments so I
> proceeded as I had done in the RFC;
>
> 1. Move WEXT code to sub-directory.
> 2. Add new driver code to main ks7010 directory.
> 3. Add maintainers entry.
Response from kbuild test robot implies that this is not the best way
to go about it.
Note: the
linux-review/Tobin-C-Harding/staging-ks7010-cfg80211-conversion/20170614-224320
HEAD 2b0460aebae71f28fdc7ab54b37af26fca3e4f4e builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
>> ld: cannot find drivers/staging/ks7010/built-in.o: No such file or
directory
Better method happily followed if suggested.
> Following my understanding of kernel patching process the driver had
> to build with each patch applied, therefore after moving the WEXT code
> I left a blank Makefile and removed the dependencies from Kconfig
>
>
> The WEXT to cfg80211 conversion is basically a complete re-write of
> the driver. Does this mean it is the same driver or a new one, I don't
> know? The WEXT code is still needed for reference, we have only the
> WEXT driver to base the cfg80211 driver on. I know that it is in the git
> history and I could of clobbered the whole thing but I thought it more
> informative to keep the WEXT code in a sub directory to make explicit
> that the cfg80211 driver was being written based off of the WEXT
> driver.
>
> > And testing it would be good to do :)
>
> I'm working on the testing. Currently I have the card to test but not
> a machine that supports SDIO with a vanilla kernel. As such I have not
> managed to test the WEXT code either.
>
> This patch set does not implement a complete functioning driver. I
> have submitted the driver as is in an attempt to get input from the
> kernel community. Failing that, if the driver is in staging as is,
> then I am forced to be follow a more meticulous development
> methodology instead of wildly hacking as I have done for the last
> month. With my minimal knowledge, I believe the design is stable
> enough to enable this. I am happy to be corrected if I am wrong. I am
> very much a learner, I would like to follow [learn] the correct kernel
> development methods.
>
> thanks,
> Tobin.
> _______________________________________________
> devel mailing list
> [email protected]
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel