[BACK]Return to if_cdce.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev / usb

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/dev/usb/if_cdce.c between version 1.38 and 1.38.14.2

version 1.38, 2013/01/05 01:30:15 version 1.38.14.2, 2014/12/23 11:24:31
Line 123  cdce_match(device_t parent, cfdata_t mat
Line 123  cdce_match(device_t parent, cfdata_t mat
         struct usbif_attach_arg *uaa = aux;          struct usbif_attach_arg *uaa = aux;
   
         if (cdce_lookup(uaa->vendor, uaa->product) != NULL)          if (cdce_lookup(uaa->vendor, uaa->product) != NULL)
                 return (UMATCH_VENDOR_PRODUCT);                  return UMATCH_VENDOR_PRODUCT;
   
         if (uaa->class == UICLASS_CDC && uaa->subclass ==          if (uaa->class == UICLASS_CDC && uaa->subclass ==
             UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL)              UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL)
                 return (UMATCH_IFACECLASS_GENERIC);                  return UMATCH_IFACECLASS_GENERIC;
   
         return (UMATCH_NONE);          return UMATCH_NONE;
 }  }
   
 void  void
Line 315  cdce_detach(device_t self, int flags)
Line 315  cdce_detach(device_t self, int flags)
   
         if (!sc->cdce_attached) {          if (!sc->cdce_attached) {
                 splx(s);                  splx(s);
                 return (0);                  return 0;
         }          }
   
         if (ifp->if_flags & IFF_RUNNING)          if (ifp->if_flags & IFF_RUNNING)
Line 328  cdce_detach(device_t self, int flags)
Line 328  cdce_detach(device_t self, int flags)
         sc->cdce_attached = 0;          sc->cdce_attached = 0;
         splx(s);          splx(s);
   
         return (0);          return 0;
 }  }
   
 Static void  Static void
Line 379  cdce_encap(struct cdce_softc *sc, struct
Line 379  cdce_encap(struct cdce_softc *sc, struct
         c->cdce_mbuf = m;          c->cdce_mbuf = m;
   
         usbd_setup_xfer(c->cdce_xfer, sc->cdce_bulkout_pipe, c, c->cdce_buf,          usbd_setup_xfer(c->cdce_xfer, sc->cdce_bulkout_pipe, c, c->cdce_buf,
             m->m_pkthdr.len + extra, USBD_FORCE_SHORT_XFER | USBD_NO_COPY,              m->m_pkthdr.len + extra, USBD_FORCE_SHORT_XFER,
             10000, cdce_txeof);              10000, cdce_txeof);
         err = usbd_transfer(c->cdce_xfer);          err = usbd_transfer(c->cdce_xfer);
         if (err != USBD_IN_PROGRESS) {          if (err != USBD_IN_PROGRESS) {
                 cdce_stop(sc);                  cdce_stop(sc);
                 return (EIO);                  return EIO;
         }          }
   
         sc->cdce_cdata.cdce_tx_cnt++;          sc->cdce_cdata.cdce_tx_cnt++;
   
         return (0);          return 0;
 }  }
   
 Static void  Static void
Line 461  cdce_ioctl(struct ifnet *ifp, u_long com
Line 461  cdce_ioctl(struct ifnet *ifp, u_long com
         int                      s, error = 0;          int                      s, error = 0;
   
         if (sc->cdce_dying)          if (sc->cdce_dying)
                 return (EIO);                  return EIO;
   
         s = splnet();          s = splnet();
   
Line 511  cdce_ioctl(struct ifnet *ifp, u_long com
Line 511  cdce_ioctl(struct ifnet *ifp, u_long com
         if (error == ENETRESET)          if (error == ENETRESET)
                 error = 0;                  error = 0;
   
         return (error);          return error;
 }  }
   
 Static void  Static void
Line 575  cdce_init(void *xsc)
Line 575  cdce_init(void *xsc)
         for (i = 0; i < CDCE_RX_LIST_CNT; i++) {          for (i = 0; i < CDCE_RX_LIST_CNT; i++) {
                 c = &sc->cdce_cdata.cdce_rx_chain[i];                  c = &sc->cdce_cdata.cdce_rx_chain[i];
                 usbd_setup_xfer(c->cdce_xfer, sc->cdce_bulkin_pipe, c,                  usbd_setup_xfer(c->cdce_xfer, sc->cdce_bulkin_pipe, c,
                     c->cdce_buf, CDCE_BUFSZ, USBD_SHORT_XFER_OK | USBD_NO_COPY,                      c->cdce_buf, CDCE_BUFSZ, USBD_SHORT_XFER_OK,
                     USBD_NO_TIMEOUT, cdce_rxeof);                      USBD_NO_TIMEOUT, cdce_rxeof);
                 usbd_transfer(c->cdce_xfer);                  usbd_transfer(c->cdce_xfer);
         }          }
Line 596  cdce_newbuf(struct cdce_softc *sc, struc
Line 596  cdce_newbuf(struct cdce_softc *sc, struc
                 if (m_new == NULL) {                  if (m_new == NULL) {
                         printf("%s: no memory for rx list "                          printf("%s: no memory for rx list "
                             "-- packet dropped!\n", device_xname(sc->cdce_dev));                              "-- packet dropped!\n", device_xname(sc->cdce_dev));
                         return (ENOBUFS);                          return ENOBUFS;
                 }                  }
                 MCLGET(m_new, M_DONTWAIT);                  MCLGET(m_new, M_DONTWAIT);
                 if (!(m_new->m_flags & M_EXT)) {                  if (!(m_new->m_flags & M_EXT)) {
                         printf("%s: no memory for rx list "                          printf("%s: no memory for rx list "
                             "-- packet dropped!\n", device_xname(sc->cdce_dev));                              "-- packet dropped!\n", device_xname(sc->cdce_dev));
                         m_freem(m_new);                          m_freem(m_new);
                         return (ENOBUFS);                          return ENOBUFS;
                 }                  }
                 m_new->m_len = m_new->m_pkthdr.len = MCLBYTES;                  m_new->m_len = m_new->m_pkthdr.len = MCLBYTES;
         } else {          } else {
Line 612  cdce_newbuf(struct cdce_softc *sc, struc
Line 612  cdce_newbuf(struct cdce_softc *sc, struc
                 m_new->m_data = m_new->m_ext.ext_buf;                  m_new->m_data = m_new->m_ext.ext_buf;
         }          }
         c->cdce_mbuf = m_new;          c->cdce_mbuf = m_new;
         return (0);          return 0;
 }  }
   
 Static int  Static int
Line 628  cdce_rx_list_init(struct cdce_softc *sc)
Line 628  cdce_rx_list_init(struct cdce_softc *sc)
                 c->cdce_sc = sc;                  c->cdce_sc = sc;
                 c->cdce_idx = i;                  c->cdce_idx = i;
                 if (cdce_newbuf(sc, c, NULL) == ENOBUFS)                  if (cdce_newbuf(sc, c, NULL) == ENOBUFS)
                         return (ENOBUFS);                          return ENOBUFS;
                 if (c->cdce_xfer == NULL) {                  if (c->cdce_xfer == NULL) {
                         c->cdce_xfer = usbd_alloc_xfer(sc->cdce_udev);                          c->cdce_xfer = usbd_alloc_xfer(sc->cdce_udev);
                         if (c->cdce_xfer == NULL)                          if (c->cdce_xfer == NULL)
                                 return (ENOBUFS);                                  return ENOBUFS;
                         c->cdce_buf = usbd_alloc_buffer(c->cdce_xfer,                          c->cdce_buf = usbd_alloc_buffer(c->cdce_xfer,
                             CDCE_BUFSZ);                              CDCE_BUFSZ);
                         if (c->cdce_buf == NULL)                          if (c->cdce_buf == NULL)
                                 return (ENOBUFS);                                  return ENOBUFS;
                 }                  }
         }          }
   
         return (0);          return 0;
 }  }
   
 Static int  Static int
Line 659  cdce_tx_list_init(struct cdce_softc *sc)
Line 659  cdce_tx_list_init(struct cdce_softc *sc)
                 if (c->cdce_xfer == NULL) {                  if (c->cdce_xfer == NULL) {
                         c->cdce_xfer = usbd_alloc_xfer(sc->cdce_udev);                          c->cdce_xfer = usbd_alloc_xfer(sc->cdce_udev);
                         if (c->cdce_xfer == NULL)                          if (c->cdce_xfer == NULL)
                                 return (ENOBUFS);                                  return ENOBUFS;
                         c->cdce_buf = usbd_alloc_buffer(c->cdce_xfer, CDCE_BUFSZ);                          c->cdce_buf = usbd_alloc_buffer(c->cdce_xfer, CDCE_BUFSZ);
                         if (c->cdce_buf == NULL)                          if (c->cdce_buf == NULL)
                                 return (ENOBUFS);                                  return ENOBUFS;
                 }                  }
         }          }
   
         return (0);          return 0;
 }  }
   
 Static void  Static void
Line 732  done1:
Line 732  done1:
 done:  done:
         /* Setup new transfer. */          /* Setup new transfer. */
         usbd_setup_xfer(c->cdce_xfer, sc->cdce_bulkin_pipe, c, c->cdce_buf,          usbd_setup_xfer(c->cdce_xfer, sc->cdce_bulkin_pipe, c, c->cdce_buf,
             CDCE_BUFSZ, USBD_SHORT_XFER_OK | USBD_NO_COPY, USBD_NO_TIMEOUT,              CDCE_BUFSZ, USBD_SHORT_XFER_OK, USBD_NO_TIMEOUT,
             cdce_rxeof);              cdce_rxeof);
         usbd_transfer(c->cdce_xfer);          usbd_transfer(c->cdce_xfer);
 }  }

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.38.14.2

CVSweb <webmaster@jp.NetBSD.org>