NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/47245: Add AX88772B support to axe(4), e.g. for DLINK DUB-E100 C1



The following reply was made to PR kern/47245; it has been noted by GNATS.

From: Edgar =?iso-8859-1?B?RnXf?= <ef%math.uni-bonn.de@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/47245: Add AX88772B support to axe(4), e.g. for DLINK
 DUB-E100 C1
Date: Sun, 20 Jan 2013 14:13:02 +0100

 --jq0ap7NbKX2Kqbes
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 
 > Could all these fixes please be pulled up to the netbsd-6 branch?
 I'm using the attached local patch to achieve this.
 It's a stripped-down version of Toby Karyadi's original work, including the 
 le16toh fix.
 
 --jq0ap7NbKX2Kqbes
 Content-Type: text/plain; charset=us-ascii
 Content-Description: NetBSD-6-axe-AX772B
 Content-Disposition: attachment; filename=NetBSD-6-axe-AX772B
 
 --- sys/dev/usb/usbdevs.orig   2013-01-02 20:31:54.000000000 +0100
 +++ sys/dev/usb/usbdevs        2013-01-03 19:08:36.000000000 +0100
 @@ -1,4 +1,4 @@
 -$NetBSD: usbdevs,v 1.607.2.6 2012/10/24 03:45:59 riz Exp $
 +$NetBSD: usbdevs,v $
  
  /*
   * Copyright (c) 1998-2004 The NetBSD Foundation, Inc.
 @@ -508,6 +508,7 @@
  vendor SWEEX2         0x177f  Sweex
  vendor MISC           0x1781  Misc Vendors
  vendor DISPLAYLINK    0x17e9  DisplayLink
 +vendor LENOVO         0x17ef  Lenovo
  vendor E3C            0x18b4  E3C Technologies
  vendor AMIT           0x18c5  AMIT
  vendor QCOM           0x18e8  Qcom
 @@ -829,6 +830,8 @@
  product ASIX AX88178          0x1780  AX88178 USB 2.0 10/100 Ethernet adapter
  product ASIX AX88772          0x7720  AX88772 USB 2.0 10/100 Ethernet adapter
  product ASIX AX88772A         0x772a  AX88772A USB 2.0 10/100 Ethernet adapter
 +product ASIX AX88772B         0x772b  AX88772B USB 2.0 10/100 Ethernet adapter
 +product ASIX AX88772B_1               0x7e2b  AX88772B1 USB 2.0 10/100 
Ethernet adapter
  
  /* ASUSTeK computer products */
  product ASUSTEK WL167G                0x1707  WL-167g USB2.0 WLAN Adapter
 @@ -1194,6 +1197,7 @@
  /* D-Link products */
  /*product DLINK DSBS25                0x0100  DSB-S25 serial adapter*/
  product DLINK DUBE100         0x1a00  10/100 ethernet adapter
 +product DLINK DUBE100C1               0x1a02  DUB-E100 rev C1
  product DLINK DSB650TX4               0x200c  10/100 ethernet adapter
  product DLINK DWL120E         0x3200  DWL-120 rev E
  product DLINK DWA130C         0x3301  DWA-130 rev C
 @@ -1777,6 +1781,9 @@
  product LACIE HD              0xa601  Hard Disk
  product LACIE CDRW            0xa602  CD R/W
  
 +/* Lenovo products */
 +product LENOVO ETHERNET               0x7203  USB 2.0 Ethernet
 +
  /* Lexar products */
  product LEXAR JUMPSHOT                0x0001  jumpSHOT CompactFlash Reader
  product LEXAR 2662WAR         0xa002  2662W-AR
 --- sys/dev/usb/usbdevs.h.orig 2013-01-02 20:31:54.000000000 +0100
 +++ sys/dev/usb/usbdevs.h      2013-01-03 19:09:13.000000000 +0100
 @@ -1,10 +1,10 @@
 -/*    $NetBSD: usbdevs.h,v 1.600.2.6 2012/10/24 03:46:49 riz Exp $    */
 +/*    $NetBSD$        */
  
  /*
   * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
   *
   * generated from:
 - *    NetBSD
 + *    NetBSD: usbdevs,v
   */
  
  /*
 @@ -515,6 +515,7 @@
  #define       USB_VENDOR_SWEEX2       0x177f          /* Sweex */
  #define       USB_VENDOR_MISC 0x1781          /* Misc Vendors */
  #define       USB_VENDOR_DISPLAYLINK  0x17e9          /* DisplayLink */
 +#define       USB_VENDOR_LENOVO       0x17ef          /* Lenovo */
  #define       USB_VENDOR_E3C  0x18b4          /* E3C Technologies */
  #define       USB_VENDOR_AMIT 0x18c5          /* AMIT */
  #define       USB_VENDOR_QCOM 0x18e8          /* Qcom */
 @@ -836,6 +837,8 @@
  #define       USB_PRODUCT_ASIX_AX88178        0x1780          /* AX88178 USB 
2.0 10/100 Ethernet adapter */
  #define       USB_PRODUCT_ASIX_AX88772        0x7720          /* AX88772 USB 
2.0 10/100 Ethernet adapter */
  #define       USB_PRODUCT_ASIX_AX88772A       0x772a          /* AX88772A USB 
2.0 10/100 Ethernet adapter */
 +#define       USB_PRODUCT_ASIX_AX88772B       0x772b          /* AX88772B USB 
2.0 10/100 Ethernet adapter */
 +#define       USB_PRODUCT_ASIX_AX88772B_1     0x7e2b          /* AX88772B1 
USB 2.0 10/100 Ethernet adapter */
  
  /* ASUSTeK computer products */
  #define       USB_PRODUCT_ASUSTEK_WL167G      0x1707          /* WL-167g 
USB2.0 WLAN Adapter */
 @@ -1201,6 +1204,7 @@
  /* D-Link products */
  /*product DLINK DSBS25                0x0100  DSB-S25 serial adapter*/
  #define       USB_PRODUCT_DLINK_DUBE100       0x1a00          /* 10/100 
ethernet adapter */
 +#define       USB_PRODUCT_DLINK_DUBE100C1     0x1a02          /* DUB-E100 rev 
C1 */
  #define       USB_PRODUCT_DLINK_DSB650TX4     0x200c          /* 10/100 
ethernet adapter */
  #define       USB_PRODUCT_DLINK_DWL120E       0x3200          /* DWL-120 rev 
E */
  #define       USB_PRODUCT_DLINK_DWA130C       0x3301          /* DWA-130 rev 
C */
 @@ -1784,6 +1788,9 @@
  #define       USB_PRODUCT_LACIE_HD    0xa601          /* Hard Disk */
  #define       USB_PRODUCT_LACIE_CDRW  0xa602          /* CD R/W */
  
 +/* Lenovo products */
 +#define       USB_PRODUCT_LENOVO_ETHERNET     0x7203          /* USB 2.0 
Ethernet */
 +
  /* Lexar products */
  #define       USB_PRODUCT_LEXAR_JUMPSHOT      0x0001          /* jumpSHOT 
CompactFlash Reader */
  #define       USB_PRODUCT_LEXAR_2662WAR       0xa002          /* 2662W-AR */
 --- sys/dev/usb/usbdevs_data.h.orig    2013-01-02 20:31:54.000000000 +0100
 +++ sys/dev/usb/usbdevs_data.h 2013-01-03 19:09:13.000000000 +0100
 @@ -1,10 +1,10 @@
 -/*    $NetBSD: usbdevs_data.h,v 1.601.2.6 2012/10/24 03:46:49 riz Exp $       
*/
 +/*    $NetBSD$        */
  
  /*
   * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
   *
   * generated from:
 - *    NetBSD
 + *    NetBSD: usbdevs,v
   */
  
  /*
 @@ -1839,6 +1839,10 @@
            "DisplayLink",
        },
        {
 +          USB_VENDOR_LENOVO,
 +          "Lenovo",
 +      },
 +      {
            USB_VENDOR_E3C,
            "E3C Technologies",
        },
 @@ -2059,7 +2063,7 @@
            "GNU Radio USRP",
        },
  };
 -const int usb_nvendors = 505;
 +const int usb_nvendors = 506;
  
  const struct usb_product usb_products[] = {
        {
 @@ -2783,6 +2787,14 @@
            "AX88772A USB 2.0 10/100 Ethernet adapter",
        },
        {
 +          USB_VENDOR_ASIX, USB_PRODUCT_ASIX_AX88772B,
 +          "AX88772B USB 2.0 10/100 Ethernet adapter",
 +      },
 +      {
 +          USB_VENDOR_ASIX, USB_PRODUCT_ASIX_AX88772B_1,
 +          "AX88772B1 USB 2.0 10/100 Ethernet adapter",
 +      },
 +      {
            USB_VENDOR_ASUSTEK, USB_PRODUCT_ASUSTEK_WL167G,
            "WL-167g USB2.0 WLAN Adapter",
        },
 @@ -3819,6 +3831,10 @@
            "10/100 ethernet adapter",
        },
        {
 +          USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DUBE100C1,
 +          "DUB-E100 rev C1",
 +      },
 +      {
            USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX4,
            "10/100 ethernet adapter",
        },
 @@ -5447,6 +5463,10 @@
            "CD R/W",
        },
        {
 +          USB_VENDOR_LENOVO, USB_PRODUCT_LENOVO_ETHERNET,
 +          "USB 2.0 Ethernet",
 +      },
 +      {
            USB_VENDOR_LEXAR, USB_PRODUCT_LEXAR_JUMPSHOT,
            "jumpSHOT CompactFlash Reader",
        },
 @@ -9135,4 +9155,4 @@
            "Prestige",
        },
  };
 -const int usb_nproducts = 1768;
 +const int usb_nproducts = 1772;
 --- sys/dev/usb/if_axe.c.orig  2012-02-02 20:43:07.000000000 +0100
 +++ sys/dev/usb/if_axe.c       2013-01-16 13:46:43.000000000 +0100
 @@ -1,4 +1,4 @@
 -/*    $NetBSD: if_axe.c,v 1.51 2012/02/02 19:43:07 tls Exp $  */
 +/*    $NetBSD: if_axe.c $     */
  /*    $OpenBSD: if_axe.c,v 1.96 2010/01/09 05:33:08 jsg Exp $ */
  
  /*
 @@ -89,7 +89,7 @@
   */
  
  #include <sys/cdefs.h>
 -__KERNEL_RCSID(0, "$NetBSD: if_axe.c,v 1.51 2012/02/02 19:43:07 tls Exp $");
 +__KERNEL_RCSID(0, "$NetBSD: if_axe.c,v $");
  
  #if defined(__NetBSD__)
  #ifndef _MODULE
 @@ -148,6 +148,8 @@
        { { USB_VENDOR_ASIX,            USB_PRODUCT_ASIX_AX88172}, 0 },
        { { USB_VENDOR_ASIX,            USB_PRODUCT_ASIX_AX88772}, AX772 },
        { { USB_VENDOR_ASIX,            USB_PRODUCT_ASIX_AX88772A}, AX772 },
 +      { { USB_VENDOR_ASIX,            USB_PRODUCT_ASIX_AX88772B}, AX772 | 
AX772B },
 +      { { USB_VENDOR_ASIX,            USB_PRODUCT_ASIX_AX88772B_1}, AX772 | 
AX772B },
        { { USB_VENDOR_ASIX,            USB_PRODUCT_ASIX_AX88178}, AX178 },
        { { USB_VENDOR_ATEN,            USB_PRODUCT_ATEN_UC210T}, 0 },
        { { USB_VENDOR_BELKIN,          USB_PRODUCT_BELKIN_F5D5055 }, AX178 },
 @@ -156,9 +158,11 @@
        { { USB_VENDOR_COREGA,          USB_PRODUCT_COREGA_FETHER_USB2_TX }, 0},
        { { USB_VENDOR_DLINK,           USB_PRODUCT_DLINK_DUBE100}, 0 },
        { { USB_VENDOR_DLINK,           USB_PRODUCT_DLINK_DUBE100B1 }, AX772 },
 +      { { USB_VENDOR_DLINK,           USB_PRODUCT_DLINK_DUBE100C1 }, AX772 | 
AX772B },
        { { USB_VENDOR_GOODWAY,         USB_PRODUCT_GOODWAY_GWUSB2E}, 0 },
        { { USB_VENDOR_IODATA,          USB_PRODUCT_IODATA_ETGUS2 }, AX178 },
        { { USB_VENDOR_JVC,             USB_PRODUCT_JVC_MP_PRX1}, 0 },
 +      { { USB_VENDOR_LENOVO,          USB_PRODUCT_LENOVO_ETHERNET }, AX772 | 
AX772B },
        { { USB_VENDOR_LINKSYS2,        USB_PRODUCT_LINKSYS2_USB200M}, 0 },
        { { USB_VENDOR_LINKSYS4,        USB_PRODUCT_LINKSYS4_USB1000 }, AX178 },
        { { USB_VENDOR_LOGITEC,         USB_PRODUCT_LOGITEC_LAN_GTJU2}, AX178 },
 @@ -602,7 +606,8 @@
  
        err = usbd_set_config_no(dev, AXE_CONFIG_NO, 1);
        if (err) {
 -              aprint_error_dev(self, "getting interface handle failed\n");
 +              aprint_error_dev(self, "failed to set configuration"
 +                  ", err=%s\n", usbd_errstr(err));
                return;
        }
  
 @@ -921,12 +926,14 @@
                        total_len -= sizeof(hdr);
                        buf += sizeof(hdr);
  
 -                      if ((hdr.len ^ hdr.ilen) != 0xffff) {
 +                      if (((le16toh(hdr.len) & AXE_RH1M_RXLEN_MASK) ^
 +                          (le16toh(hdr.ilen) & AXE_RH1M_RXLEN_MASK)) != 
 +                          AXE_RH1M_RXLEN_MASK) {              
                                ifp->if_ierrors++;
                                goto done;
                        }
  
 -                      rxlen = le16toh(hdr.len);
 +                      rxlen = le16toh(hdr.len) & AXE_RH1M_RXLEN_MASK;
                        if (total_len < rxlen) {
                                pktlen = total_len;
                                total_len = 0;
 @@ -1244,7 +1251,9 @@
  
        /* Enable receiver, set RX mode */
        rxmode = AXE_RXCMD_BROADCAST | AXE_RXCMD_MULTICAST | AXE_RXCMD_ENABLE;
 -      if (sc->axe_flags & AX178 || sc->axe_flags & AX772) {
 +      if (sc->axe_flags & AX772B)
 +              rxmode |= AXE_772B_RXCMD_RH1M;
 +      else if (sc->axe_flags & AX178 || sc->axe_flags & AX772) {
                if (sc->axe_udev->speed == USB_SPEED_HIGH) {
                        /* Largest possible USB buffer size for AX88178 */
                        rxmode |= AXE_178_RXCMD_MFB;
 --- sys/dev/usb/if_axereg.h.orig       2012-02-02 20:43:07.000000000 +0100
 +++ sys/dev/usb/if_axereg.h    2013-01-03 19:12:04.000000000 +0100
 @@ -1,4 +1,4 @@
 -/*    $NetBSD: if_axereg.h,v 1.14 2012/02/02 19:43:07 tls Exp $       */
 +/*    $NetBSD: if_axereg.h,v */
  
  /*
   * Copyright (c) 1997, 1998, 1999, 2000-2003
 @@ -134,6 +134,12 @@
  #define AXE_NOPHY                             0xE0
  #define AXE_INTPHY                            0x10
  
 +#define AXE_772B_RXCMD_RH1M   0x0100
 +#define AXE_772B_RXCMD_RH2M   0x0200
 +#define AXE_772B_RXCMD_RH3M   0x0400
 +
 +#define AXE_RH1M_RXLEN_MASK   0x07ff
 +
  #define AXE_TIMEOUT           1000
  
  #define AXE_172_BUFSZ         1536
 @@ -167,6 +173,7 @@
        uint16_t                axe_flags;
  #define AX178         0x0001          /* AX88178 */
  #define AX772         0x0002          /* AX88772 */
 +#define AX772B                0x0004          /* AX88772B */
  #define AXE_ANY_PHY   0x1000          /* Chip lies about valid phys */
  #define AXE_MII               0x2000          /* Chip-specific MII handling */
  };
 
 --jq0ap7NbKX2Kqbes--
 


Home | Main Index | Thread Index | Old Index