[PATCH net-next v4 00/12] ax88179_178a: Add support for AX88179A-based chips

Birger Koblitz posted 12 patches 2 months ago
There is a newer version of this series
drivers/net/phy/ax88796b.c         |  192 ++++++
drivers/net/usb/Kconfig            |    9 +-
drivers/net/usb/Makefile           |    3 +-
drivers/net/usb/ax88179_178a.c     |  664 ++-----------------
drivers/net/usb/ax88179_lib.c      |  508 +++++++++++++++
drivers/net/usb/ax88179_lib.h      |  357 +++++++++++
drivers/net/usb/ax88179a_devices.c | 1245 ++++++++++++++++++++++++++++++++++++
7 files changed, 2355 insertions(+), 623 deletions(-)
[PATCH net-next v4 00/12] ax88179_178a: Add support for AX88179A-based chips
Posted by Birger Koblitz 2 months ago
This adds support for the current generation of ASIX network adapter chips,
which are based on the AX88179A. This includes the AX88179A/B (1GBit-PHY),
AX88772D/E (100MBit) and AX88279 (2.5GBit).

The AX179A-based chips all provide both a CDC-NCM compatible USB interface,
and a proprietary vendor interface with more features. By default, the
proprietary vendor interface is not active and Linux will load the CDC-NCM
driver to support the devices. If the ax88179_178a module is configured by
the OS to have precedence over CDC-NCM, then this driver will switch the
device to use the vendor interface, and the device will be controlled by
the ax88179_178a driver when the device is probed again after an automatic
reset of the device bringing up the vendor interface.

The following hardware was tested:
Delock 66046 2.5GBit adapter (AX88279, FW: 1.2.0.0)
TP-Link UE306 1GBit adapter (AX88179B, FW: 1.3.0.0)
Renkforce RF-4708614 1GBit adapter (AX88179A, FW: 1.0.4.0)
UGREEN CR110 100MBit adapter (AX88722E, FW: 1.3.0.0)

The driver supports the following features
- EEE
- TCP segmentation offload
- VLAN filtering/tagging offload 
  (NETIF_F_HW_VLAN_CTAG_FILTER, NETIF_F_HW_VLAN_CTAG_RX/TX)
- RX/TX checksum offload
- FC/Pause configuration
- EEPROM read access

The code is based on the ASIX 4.1.0 out-of-tree driver published under
the GPL,, the aqc111 driver which provides support for the AX88279A,
and some tracing of USB-transfers of the Windows-driver.

Signed-off-by: Birger Koblitz <mail@birger-koblitz.de>
Tested-by: Jianhui Xu <neuromoments@gmail.com>
---
Changes in v4:
- Split driver into library part and part2 for AX88179 and AX88179A-based
  controllers
- Driver renamed ax88179
- Improved phylink use: use phylink standard functions for speed and EEE-settings,
  correct MAC capabilities, removed ax88179_status() irq-urb callback
- Fixes in PHY driver for AX88179A integrated PHYs
- Link to v3: https://lore.kernel.org/r/20260724-ax88179a-v3-0-bdde4f905883@birger-koblitz.de

Changes in v3:
- Add PHY drivers for the PHYs of the AX88179A-based controllers
- Use phylink for the AX88179A-based chips
- Link to v2: https://lore.kernel.org/r/20260708-ax88179a-v2-0-0800fedb2e16@birger-koblitz.de

Changes in v2:
- Correctly use net-next prefix
- Fix compilation issue in HW support patch
- Split MMD support patch into patches for EEE/new chip support
- Do not use ADVERTISE_RESV but private flag definition
- Fix pause configuration to keep track of settings when autoneg disabled
- Fix issue with unitialized variable reported by kernel test robot <lkp@intel.com>
- Avoid white-space changes

- Link to v1: https://lore.kernel.org/r/20260701-ax88179a-v1-0-13685df67515@birger-koblitz.de

---
Birger Koblitz (12):
      ax88179_178a: Fix endianness of pause watermark register
      ax88179_178a: Split driver into library and device specific code
      ax88179_178a: Add HW support for AX179A-based chips
      ax88179_178a: Add EEE configuration support for AX88179A MACs
      ax88179_178a: Add EEE configuration support for AX88179A PHYs
      ax88179_178a: Add VLAN offload support for AX88179A
      ax88179_178a: Add AX179A/AX279 multicast configuration
      ax88179_178a: Add Suspend/resume support for AX88179A/772D/279
      ax88179_178a: Add ethtool get_drvinfo
      ax88179_178a: update driver information
      ax88179_178a: Add support for AX88179A/772D/279 EEPROM access
      ax88796b: Add support for AX88772D, AX88179A and AX88279

 drivers/net/phy/ax88796b.c         |  192 ++++++
 drivers/net/usb/Kconfig            |    9 +-
 drivers/net/usb/Makefile           |    3 +-
 drivers/net/usb/ax88179_178a.c     |  664 ++-----------------
 drivers/net/usb/ax88179_lib.c      |  508 +++++++++++++++
 drivers/net/usb/ax88179_lib.h      |  357 +++++++++++
 drivers/net/usb/ax88179a_devices.c | 1245 ++++++++++++++++++++++++++++++++++++
 7 files changed, 2355 insertions(+), 623 deletions(-)
---
base-commit: 1a9edf8be190decb17227e3cba540513d93ebb85
change-id: 20260630-ax88179a-a1d89fe21730

Best regards,
-- 
Birger Koblitz <mail@birger-koblitz.de>
Re: [PATCH net-next v4 00/12] ax88179_178a: Add support for AX88179A-based chips
Posted by Jianhui Xu 2 months ago
Hi Birger,

I tested v4 on an ASIX AX88179B adapter (USB 0b95:1790,
bcdDevice 0x0200, firmware 1.3.0.0). And it worked smoothly.

I applied the series on top of net-next commit
df13c1df8147675470213ffff29dd5762fa321f5 and tested the resulting
7.2.0-rc3 kernel in a KVM Debian guest with the adapter passed through via
an emulated XHCI controller.

The driver automatically selected USB configuration 1 and bound as
ax88179. The MDIO path bound the "Asix Electronics AX88179A" PHY driver
(MDIO device ID 0x003b179a), and phylink reported 1000 Mb/s, full duplex,
autonegotiation enabled, and link detected. Driver information and read-only
EEPROM access also worked.

DHCP and interface-bound pings worked, and bidirectional iperf3 completed.
I also tested EEE disable/enable, pause enable/restore, module unload/reload,
ACPI S3 suspend/resume, and QEMU USB detach/reattach. Each recovery test
restored the PHY binding, carrier, DHCP, 1000/full reporting, and traffic.
I saw no AX88179/PHY/phylink warning, oops, call trace, or traffic timeout.

Tested-by: Jianhui Xu <neuromoments@gmail.com>

Thanks,
Jianhui
Re: [PATCH net-next v4 00/12] ax88179_178a: Add support for AX88179A-based chips
Posted by Birger Koblitz 2 months ago
On 01/08/2026 05:59, Jianhui Xu wrote:
> Hi Birger,
> 
> I tested v4 on an ASIX AX88179B adapter (USB 0b95:1790,
> bcdDevice 0x0200, firmware 1.3.0.0). And it worked smoothly.
> 
> I applied the series on top of net-next commit
> df13c1df8147675470213ffff29dd5762fa321f5 and tested the resulting
> 7.2.0-rc3 kernel in a KVM Debian guest with the adapter passed through via
> an emulated XHCI controller.
> 
> The driver automatically selected USB configuration 1 and bound as
> ax88179. The MDIO path bound the "Asix Electronics AX88179A" PHY driver
> (MDIO device ID 0x003b179a), and phylink reported 1000 Mb/s, full duplex,
> autonegotiation enabled, and link detected. Driver information and read-only
> EEPROM access also worked.
> 
> DHCP and interface-bound pings worked, and bidirectional iperf3 completed.
> I also tested EEE disable/enable, pause enable/restore, module unload/reload,
> ACPI S3 suspend/resume, and QEMU USB detach/reattach. Each recovery test
> restored the PHY binding, carrier, DHCP, 1000/full reporting, and traffic.
> I saw no AX88179/PHY/phylink warning, oops, call trace, or traffic timeout.
> 
> Tested-by: Jianhui Xu <neuromoments@gmail.com>
>
Thanks so much for testing, Jianhui! I know this must have
been quite a lot of work.

Birger