mbox series

[RFC,v2,00/12] rtw88: mac80211 driver for Realtek 802.11ac wireless network chips

Message ID 1538553748-26364-1-git-send-email-yhchuang@realtek.com (mailing list archive)
Headers show
Series rtw88: mac80211 driver for Realtek 802.11ac wireless network chips | expand

Message

Tony Chuang Oct. 3, 2018, 8:02 a.m. UTC
From: Yan-Hsuan Chuang <yhchuang@realtek.com>

This is a new mac80211 driver for Realtek 802.11ac wireless network chips.
rtwlan supports 8822BE and 8822CE chips, and will be able to support
multi-vif combinations in run-time.

For now, only PCI bus is supported, but rtwlan was originally designed
to optionally support three buses includes USB & SDIO. USB & SDIO modules
will soon be supported by rtwlan, with configurable core module to fit
with different bus modules in the same time.

For example, if we choose 8822BE and 8822CU, only PCI & USB modules will
be selected, built, loaded into kernel. This is one of the major
difference from rtlwifi, which can only support specific combinations.

Another difference from rtlwifi is that rtwlan is designed to support
the latest Realtek 802.11ac wireless network chips like 8822B and
8822C series. Compared to the earlier chips supported by rtlwifi like
the 802.11n 8192EE chipset or 802.11ac 8821AE/8812AE chips, newer ICs
have different MAC & PHY settings, such as new multi-port feature for the
MAC layer design and Jaguar2/Jaguar3 PHY layer IPs.

Multi-Port feature is also supported under rtwlan's software architecture.
rtlwifi can only support one vif in the same time, most because of the
hardware limitations for early chips, hence the original design of it
also restricts the usage of multi-vif support, so latest chipset seems not
take advantages from its new MAC engine.

However, rtwlan can run multiple vifs concurrently by holding them on
hardware ports provided by MAC engine, hence can easily start different
roles on a single device.

Based on the reasons mentioned before, we implemented rtwlan. It had many
authors, they are listed here alphabetically:

Ping-Ke Shih <pkshih@realtek.com>
Tzu-En Huang <tehuang@realtek.com>
Yan-Hsuan Chuang <yhchuang@realtek.com>


v2

 - rename from rtwlan to rtw88
 - remove lots of magic numbers
 - add pci null entry for auto load on boot
 - add rtwdev->mutex to protect against mac80211 callbacks
 - add rcu lock protection for vif_list and sta_list
 - refine bits & endian macros to use helper functions provided by kernel
   instead of create new ones
 - ieee80211_free_txskb for tx path dropped packets
 - not register iface_combination since now only one vif is allowed
 - some fixes suggested by Stanislaw


Yan-Hsuan Chuang (12):
  rtw88: main files
  rtw88: core files
  rtw88: hci files
  rtw88: trx files
  rtw88: mac files
  rtw88: fw and efuse files
  rtw88: phy files
  rtw88: debug files
  rtw88: chip files
  rtw88: 8822B init table
  rtw88: 8822C init table
  rtw88: Kconfig & Makefile

 drivers/net/wireless/realtek/Kconfig               |     1 +
 drivers/net/wireless/realtek/Makefile              |     1 +
 drivers/net/wireless/realtek/rtw88/Kconfig         |    57 +
 drivers/net/wireless/realtek/rtw88/Makefile        |    19 +
 drivers/net/wireless/realtek/rtw88/debug.c         |   652 +
 drivers/net/wireless/realtek/rtw88/debug.h         |    45 +
 drivers/net/wireless/realtek/rtw88/efuse.c         |   150 +
 drivers/net/wireless/realtek/rtw88/efuse.h         |    53 +
 drivers/net/wireless/realtek/rtw88/fw.c            |   638 +
 drivers/net/wireless/realtek/rtw88/fw.h            |   182 +
 drivers/net/wireless/realtek/rtw88/hci.h           |   212 +
 drivers/net/wireless/realtek/rtw88/mac.c           |  1045 +
 drivers/net/wireless/realtek/rtw88/mac.h           |    35 +
 drivers/net/wireless/realtek/rtw88/mac80211.c      |   482 +
 drivers/net/wireless/realtek/rtw88/main.c          |  1133 +
 drivers/net/wireless/realtek/rtw88/main.h          |  1200 ++
 drivers/net/wireless/realtek/rtw88/pci.c           |  1220 ++
 drivers/net/wireless/realtek/rtw88/pci.h           |   228 +
 drivers/net/wireless/realtek/rtw88/phy.c           |  1675 ++
 drivers/net/wireless/realtek/rtw88/phy.h           |   125 +
 drivers/net/wireless/realtek/rtw88/ps.c            |   198 +
 drivers/net/wireless/realtek/rtw88/ps.h            |    21 +
 drivers/net/wireless/realtek/rtw88/reg.h           |   404 +
 drivers/net/wireless/realtek/rtw88/regd.c          |   462 +
 drivers/net/wireless/realtek/rtw88/regd.h          |    40 +
 drivers/net/wireless/realtek/rtw88/rtw8822b.c      |  1593 ++
 drivers/net/wireless/realtek/rtw88/rtw8822b.h      |   271 +
 .../net/wireless/realtek/rtw88/rtw8822b_table.c    | 20783 +++++++++++++++++++
 .../net/wireless/realtek/rtw88/rtw8822b_table.h    |    18 +
 drivers/net/wireless/realtek/rtw88/rtw8822c.c      |  1170 ++
 drivers/net/wireless/realtek/rtw88/rtw8822c.h      |   416 +
 .../net/wireless/realtek/rtw88/rtw8822c_table.c    |  4150 ++++
 .../net/wireless/realtek/rtw88/rtw8822c_table.h    |    16 +
 drivers/net/wireless/realtek/rtw88/rx.c            |   144 +
 drivers/net/wireless/realtek/rtw88/rx.h            |    30 +
 drivers/net/wireless/realtek/rtw88/sec.c           |   135 +
 drivers/net/wireless/realtek/rtw88/sec.h           |    40 +
 drivers/net/wireless/realtek/rtw88/tx.c            |   271 +
 drivers/net/wireless/realtek/rtw88/tx.h            |    81 +
 39 files changed, 39396 insertions(+)
 create mode 100644 drivers/net/wireless/realtek/rtw88/Kconfig
 create mode 100644 drivers/net/wireless/realtek/rtw88/Makefile
 create mode 100644 drivers/net/wireless/realtek/rtw88/debug.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/debug.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/efuse.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/efuse.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/fw.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/fw.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/hci.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/mac.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/mac.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/mac80211.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/main.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/main.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/pci.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/pci.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/phy.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/phy.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/ps.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/ps.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/reg.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/regd.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/regd.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b_table.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b_table.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c_table.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c_table.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/rx.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rx.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/sec.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/sec.h
 create mode 100644 drivers/net/wireless/realtek/rtw88/tx.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/tx.h

Comments

Sid Hayn Oct. 3, 2018, 4:15 p.m. UTC | #1
Is there a public repository where I can track development for this driver?

Thanks,
Zero
On Wed, Oct 3, 2018 at 4:04 AM <yhchuang@realtek.com> wrote:
>
> From: Yan-Hsuan Chuang <yhchuang@realtek.com>
>
> This is a new mac80211 driver for Realtek 802.11ac wireless network chips.
> rtwlan supports 8822BE and 8822CE chips, and will be able to support
> multi-vif combinations in run-time.
>
> For now, only PCI bus is supported, but rtwlan was originally designed
> to optionally support three buses includes USB & SDIO. USB & SDIO modules
> will soon be supported by rtwlan, with configurable core module to fit
> with different bus modules in the same time.
>
> For example, if we choose 8822BE and 8822CU, only PCI & USB modules will
> be selected, built, loaded into kernel. This is one of the major
> difference from rtlwifi, which can only support specific combinations.
>
> Another difference from rtlwifi is that rtwlan is designed to support
> the latest Realtek 802.11ac wireless network chips like 8822B and
> 8822C series. Compared to the earlier chips supported by rtlwifi like
> the 802.11n 8192EE chipset or 802.11ac 8821AE/8812AE chips, newer ICs
> have different MAC & PHY settings, such as new multi-port feature for the
> MAC layer design and Jaguar2/Jaguar3 PHY layer IPs.
>
> Multi-Port feature is also supported under rtwlan's software architecture.
> rtlwifi can only support one vif in the same time, most because of the
> hardware limitations for early chips, hence the original design of it
> also restricts the usage of multi-vif support, so latest chipset seems not
> take advantages from its new MAC engine.
>
> However, rtwlan can run multiple vifs concurrently by holding them on
> hardware ports provided by MAC engine, hence can easily start different
> roles on a single device.
>
> Based on the reasons mentioned before, we implemented rtwlan. It had many
> authors, they are listed here alphabetically:
>
> Ping-Ke Shih <pkshih@realtek.com>
> Tzu-En Huang <tehuang@realtek.com>
> Yan-Hsuan Chuang <yhchuang@realtek.com>
>
>
> v2
>
>  - rename from rtwlan to rtw88
>  - remove lots of magic numbers
>  - add pci null entry for auto load on boot
>  - add rtwdev->mutex to protect against mac80211 callbacks
>  - add rcu lock protection for vif_list and sta_list
>  - refine bits & endian macros to use helper functions provided by kernel
>    instead of create new ones
>  - ieee80211_free_txskb for tx path dropped packets
>  - not register iface_combination since now only one vif is allowed
>  - some fixes suggested by Stanislaw
>
>
> Yan-Hsuan Chuang (12):
>   rtw88: main files
>   rtw88: core files
>   rtw88: hci files
>   rtw88: trx files
>   rtw88: mac files
>   rtw88: fw and efuse files
>   rtw88: phy files
>   rtw88: debug files
>   rtw88: chip files
>   rtw88: 8822B init table
>   rtw88: 8822C init table
>   rtw88: Kconfig & Makefile
>
>  drivers/net/wireless/realtek/Kconfig               |     1 +
>  drivers/net/wireless/realtek/Makefile              |     1 +
>  drivers/net/wireless/realtek/rtw88/Kconfig         |    57 +
>  drivers/net/wireless/realtek/rtw88/Makefile        |    19 +
>  drivers/net/wireless/realtek/rtw88/debug.c         |   652 +
>  drivers/net/wireless/realtek/rtw88/debug.h         |    45 +
>  drivers/net/wireless/realtek/rtw88/efuse.c         |   150 +
>  drivers/net/wireless/realtek/rtw88/efuse.h         |    53 +
>  drivers/net/wireless/realtek/rtw88/fw.c            |   638 +
>  drivers/net/wireless/realtek/rtw88/fw.h            |   182 +
>  drivers/net/wireless/realtek/rtw88/hci.h           |   212 +
>  drivers/net/wireless/realtek/rtw88/mac.c           |  1045 +
>  drivers/net/wireless/realtek/rtw88/mac.h           |    35 +
>  drivers/net/wireless/realtek/rtw88/mac80211.c      |   482 +
>  drivers/net/wireless/realtek/rtw88/main.c          |  1133 +
>  drivers/net/wireless/realtek/rtw88/main.h          |  1200 ++
>  drivers/net/wireless/realtek/rtw88/pci.c           |  1220 ++
>  drivers/net/wireless/realtek/rtw88/pci.h           |   228 +
>  drivers/net/wireless/realtek/rtw88/phy.c           |  1675 ++
>  drivers/net/wireless/realtek/rtw88/phy.h           |   125 +
>  drivers/net/wireless/realtek/rtw88/ps.c            |   198 +
>  drivers/net/wireless/realtek/rtw88/ps.h            |    21 +
>  drivers/net/wireless/realtek/rtw88/reg.h           |   404 +
>  drivers/net/wireless/realtek/rtw88/regd.c          |   462 +
>  drivers/net/wireless/realtek/rtw88/regd.h          |    40 +
>  drivers/net/wireless/realtek/rtw88/rtw8822b.c      |  1593 ++
>  drivers/net/wireless/realtek/rtw88/rtw8822b.h      |   271 +
>  .../net/wireless/realtek/rtw88/rtw8822b_table.c    | 20783 +++++++++++++++++++
>  .../net/wireless/realtek/rtw88/rtw8822b_table.h    |    18 +
>  drivers/net/wireless/realtek/rtw88/rtw8822c.c      |  1170 ++
>  drivers/net/wireless/realtek/rtw88/rtw8822c.h      |   416 +
>  .../net/wireless/realtek/rtw88/rtw8822c_table.c    |  4150 ++++
>  .../net/wireless/realtek/rtw88/rtw8822c_table.h    |    16 +
>  drivers/net/wireless/realtek/rtw88/rx.c            |   144 +
>  drivers/net/wireless/realtek/rtw88/rx.h            |    30 +
>  drivers/net/wireless/realtek/rtw88/sec.c           |   135 +
>  drivers/net/wireless/realtek/rtw88/sec.h           |    40 +
>  drivers/net/wireless/realtek/rtw88/tx.c            |   271 +
>  drivers/net/wireless/realtek/rtw88/tx.h            |    81 +
>  39 files changed, 39396 insertions(+)
>  create mode 100644 drivers/net/wireless/realtek/rtw88/Kconfig
>  create mode 100644 drivers/net/wireless/realtek/rtw88/Makefile
>  create mode 100644 drivers/net/wireless/realtek/rtw88/debug.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/debug.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/efuse.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/efuse.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/fw.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/fw.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/hci.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/mac.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/mac.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/mac80211.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/main.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/main.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/pci.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/pci.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/phy.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/phy.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/ps.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/ps.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/reg.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/regd.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/regd.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b_table.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b_table.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c_table.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c_table.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rx.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/rx.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/sec.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/sec.h
>  create mode 100644 drivers/net/wireless/realtek/rtw88/tx.c
>  create mode 100644 drivers/net/wireless/realtek/rtw88/tx.h
>
> --
> 2.7.4
>
Larry Finger Oct. 3, 2018, 4:52 p.m. UTC | #2
On 10/3/18 11:15 AM, Sid Hayn wrote:
> Is there a public repository where I can track development for this driver?

For the moment, this is it. Once the driver is accepted into the 
wireless-drivers-next tree, I will create a new rtw88 branch in 
http://github.com/lwfinger.git with this driver to accomodate people that want 
to use the driver with an older kernel.. At the moment, it is still in too much 
of a flux.

Larry
Sid Hayn Oct. 3, 2018, 4:57 p.m. UTC | #3
On Wed, Oct 3, 2018 at 12:52 PM Larry Finger <Larry.Finger@lwfinger.net> wrote:
>
> On 10/3/18 11:15 AM, Sid Hayn wrote:
> > Is there a public repository where I can track development for this driver?
>
> For the moment, this is it. Once the driver is accepted into the
> wireless-drivers-next tree, I will create a new rtw88 branch in
> http://github.com/lwfinger.git with this driver to accomodate people that want

I think you lost part of that link.

Thanks,
Zero

> to use the driver with an older kernel.. At the moment, it is still in too much
> of a flux.
>
> Larry
>
>
Larry Finger Oct. 3, 2018, 5:38 p.m. UTC | #4
On 10/3/18 11:57 AM, Sid Hayn wrote:
> On Wed, Oct 3, 2018 at 12:52 PM Larry Finger <Larry.Finger@lwfinger.net> wrote:
>>
>> On 10/3/18 11:15 AM, Sid Hayn wrote:
>>> Is there a public repository where I can track development for this driver?
>>
>> For the moment, this is it. Once the driver is accepted into the
>> wireless-drivers-next tree, I will create a new rtw88 branch in
>> http://github.com/lwfinger.git with this driver to accomodate people that want
> 
> I think you lost part of that link.

Yes. http://github.com/lwfinger/rtlwifi_new.git is the correct one.