Could you please try this patch?

--- src/sys/dev/usb/if_axen.c.orig      2022-08-20 23:30:49.194557768 +0000
+++ src/sys/dev/usb/if_axen.c   2023-11-15 23:23:29.684547881 +0000
@@ -52,6 +52,7 @@ struct axen_type {
        uint16_t                axen_flags;
 #define AX178A 0x0001          /* AX88178a */
 #define AX179  0x0002          /* AX88179 */
+#define AX179A 0x0004          /* AX88179A */
 };
 
 /*
@@ -605,6 +606,8 @@ axen_attach(device_t parent, device_t se
        }
 
        axen_flags = axen_lookup(uaa->uaa_vendor, uaa->uaa_product)->axen_flags;
+       if (UGETW(usbd_get_device_descriptor(dev)->bcdDevice) == 0x0200)
+               axen_flags = AX179A;
 
        err = usbd_device2interface_handle(dev, AXEN_IFACE_IDX, &un->un_iface);
        if (err) {
@@ -663,11 +666,20 @@ axen_attach(device_t parent, device_t se
 
        axen_ax88179_init(un);
 
+#define   AXEN_FW_MODE                         0x08
+#define     AXEN_FW_MODE_178A179               0x00
+       if (axen_flags & AX179A) {
+               uint8_t val = AXEN_FW_MODE_178A179;
+               axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_FW_MODE, &val);
+       }
+
        /* An ASIX chip was detected. Inform the world.  */
        if (axen_flags & AX178A)
                aprint_normal_dev(self, "AX88178a\n");
        else if (axen_flags & AX179)
                aprint_normal_dev(self, "AX88179\n");
+       else if (axen_flags & AX179A)
+               aprint_normal_dev(self, "AX88179A\n");
        else
                aprint_normal_dev(self, "(unknown)\n");
 

Reply via email to