Module Name: src Committed By: skrll Date: Sun Aug 11 11:17:36 UTC 2019
Modified Files: src/sys/dev/usb: files.usb if_smsc.c Log Message: Convert smsc_dbg_printf to usbhist To generate a diff of this commit: cvs rdiff -u -r1.162 -r1.163 src/sys/dev/usb/files.usb cvs rdiff -u -r1.53 -r1.54 src/sys/dev/usb/if_smsc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/files.usb diff -u src/sys/dev/usb/files.usb:1.162 src/sys/dev/usb/files.usb:1.163 --- src/sys/dev/usb/files.usb:1.162 Fri Aug 9 06:38:39 2019 +++ src/sys/dev/usb/files.usb Sun Aug 11 11:17:35 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.usb,v 1.162 2019/08/09 06:38:39 mrg Exp $ +# $NetBSD: files.usb,v 1.163 2019/08/11 11:17:35 skrll Exp $ # # Config file and device description for machine-independent USB code. # Included by ports that need it. Ports that use it must provide @@ -75,6 +75,7 @@ defflag opt_usb.h URTWN_DEBUG: USB_DEBUG defflag opt_usb.h URTW_DEBUG: USB_DEBUG defflag opt_usb.h USCANNER_DEBUG: USB_DEBUG defflag opt_usb.h USLSA_DEBUG: USB_DEBUG +defflag opt_usb.h USMSC_DEBUG: USB_DEBUG defflag opt_usb.h USSCANNER_DEBUG: USB_DEBUG defflag opt_usb.h USTIR_DEBUG: USB_DEBUG defflag opt_usb.h UTHUM_DEBUG: USB_DEBUG Index: src/sys/dev/usb/if_smsc.c diff -u src/sys/dev/usb/if_smsc.c:1.53 src/sys/dev/usb/if_smsc.c:1.54 --- src/sys/dev/usb/if_smsc.c:1.53 Sun Aug 11 07:58:16 2019 +++ src/sys/dev/usb/if_smsc.c Sun Aug 11 11:17:35 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_smsc.c,v 1.53 2019/08/11 07:58:16 skrll Exp $ */ +/* $NetBSD: if_smsc.c,v 1.54 2019/08/11 11:17:35 skrll Exp $ */ /* $OpenBSD: if_smsc.c,v 1.4 2012/09/27 12:38:11 jsg Exp $ */ /* $FreeBSD: src/sys/dev/usb/net/if_smsc.c,v 1.1 2012/08/15 04:03:55 gonzo Exp $ */ @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_smsc.c,v 1.53 2019/08/11 07:58:16 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_smsc.c,v 1.54 2019/08/11 11:17:35 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -71,15 +71,12 @@ __KERNEL_RCSID(0, "$NetBSD: if_smsc.c,v #include <sys/module.h> #include <dev/usb/usbnet.h> +#include <dev/usb/usbhist.h> #include <dev/usb/if_smscreg.h> #include "ioconf.h" -#ifdef USB_DEBUG -int smsc_debug = 0; -#endif - struct smsc_softc { struct usbnet smsc_un; @@ -121,14 +118,45 @@ static const struct usb_devno smsc_devs[ }; #ifdef USB_DEBUG -#define smsc_dbg_printf(un, fmt, args...) \ - do { \ - if (smsc_debug > 0) \ - printf("debug: " fmt, ##args); \ - } while(0) +#ifndef USMSC_DEBUG +#define usmscdebug 0 #else -#define smsc_dbg_printf(un, fmt, args...) -#endif +static int usmscdebug = 20; + +SYSCTL_SETUP(sysctl_hw_smsc_setup, "sysctl hw.usmsc setup") +{ + int err; + const struct sysctlnode *rnode; + const struct sysctlnode *cnode; + + err = sysctl_createv(clog, 0, NULL, &rnode, + CTLFLAG_PERMANENT, CTLTYPE_NODE, "usmsc", + SYSCTL_DESCR("usmsc global controls"), + NULL, 0, NULL, 0, CTL_HW, CTL_CREATE, CTL_EOL); + + if (err) + goto fail; + + /* control debugging printfs */ + err = sysctl_createv(clog, 0, &rnode, &cnode, + CTLFLAG_PERMANENT | CTLFLAG_READWRITE, CTLTYPE_INT, + "debug", SYSCTL_DESCR("Enable debugging output"), + NULL, 0, &usmscdebug, sizeof(usmscdebug), CTL_CREATE, CTL_EOL); + if (err) + goto fail; + + return; +fail: + aprint_error("%s: sysctl_createv failed (err = %d)\n", __func__, err); +} + +#endif /* SMSC_DEBUG */ +#endif /* USB_DEBUG */ + +#define DPRINTF(FMT,A,B,C,D) USBHIST_LOGN(usmscdebug,1,FMT,A,B,C,D) +#define DPRINTFN(N,FMT,A,B,C,D) USBHIST_LOGN(usmscdebug,N,FMT,A,B,C,D) +#define USMSCHIST_FUNC() USBHIST_FUNC() +#define USMSCHIST_CALLED(name) USBHIST_CALLED(usmscdebug) #define smsc_warn_printf(un, fmt, args...) \ printf("%s: warning: " fmt, device_xname((un)->un_dev), ##args) @@ -309,6 +337,7 @@ smsc_miibus_writereg(struct usbnet *un, void smsc_miibus_statchg(struct ifnet *ifp) { + USMSCHIST_FUNC(); USMSCHIST_CALLED(); struct usbnet * const un = ifp->if_softc; if (usbnet_isdying(un)) @@ -350,7 +379,7 @@ smsc_miibus_statchg(struct ifnet *ifp) /* Enable/disable full duplex operation and TX/RX pause */ if ((IFM_OPTIONS(mii->mii_media_active) & IFM_FDX) != 0) { - smsc_dbg_printf(un, "full duplex operation\n"); + DPRINTF("full duplex operation", 0, 0, 0, 0); sc->sc_mac_csr &= ~SMSC_MAC_CSR_RCVOWN; sc->sc_mac_csr |= SMSC_MAC_CSR_FDPX; @@ -364,7 +393,7 @@ smsc_miibus_statchg(struct ifnet *ifp) else afc_cfg &= ~0xf; } else { - smsc_dbg_printf(un, "half duplex operation\n"); + DPRINTF("half duplex operation", 0, 0, 0, 0); sc->sc_mac_csr &= ~SMSC_MAC_CSR_FDPX; sc->sc_mac_csr |= SMSC_MAC_CSR_RCVOWN; @@ -392,7 +421,8 @@ smsc_hash(uint8_t addr[ETHER_ADDR_LEN]) static void smsc_setiff_locked(struct usbnet *un) { - struct smsc_softc * const sc = usbnet_softc(un); + USMSCHIST_FUNC(); USMSCHIST_CALLED(); + struct smsc_softc * const sc = usbnet_softc(un); struct ifnet * const ifp = usbnet_ifp(un); struct ethercom *ec = usbnet_ec(un); struct ether_multi *enm; @@ -407,7 +437,7 @@ smsc_setiff_locked(struct usbnet *un) if (ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)) { allmulti: - smsc_dbg_printf(un, "receive all multicast enabled\n"); + DPRINTF("receive all multicast enabled", 0, 0, 0, 0); sc->sc_mac_csr |= SMSC_MAC_CSR_MCPAS; sc->sc_mac_csr &= ~SMSC_MAC_CSR_HPFILT; smsc_writereg(un, SMSC_MAC_CSR, sc->sc_mac_csr); @@ -433,9 +463,9 @@ allmulti: /* Debug */ if (sc->sc_mac_csr & SMSC_MAC_CSR_HPFILT) { - smsc_dbg_printf(un, "receive select group of macs\n"); + DPRINTF("receive select group of macs", 0, 0, 0, 0); } else { - smsc_dbg_printf(un, "receive own packets only\n"); + DPRINTF("receive own packets only", 0, 0, 0, 0); } /* Write the hash table and mac control registers */ @@ -509,12 +539,14 @@ smsc_setoe(struct usbnet *un) int smsc_setmacaddress(struct usbnet *un, const uint8_t *addr) { + USMSCHIST_FUNC(); USMSCHIST_CALLED(); int err; uint32_t val; - smsc_dbg_printf(un, "setting mac address to " - "%02x:%02x:%02x:%02x:%02x:%02x\n", - addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); + DPRINTF("setting mac address to %02x:%02x:%02x:...", addr[0], addr[1], + addr[2], 0); + + DPRINTF("... %02x:%02x:%02x", addr[3], addr[4], addr[5], 0); val = (addr[3] << 24) | (addr[2] << 16) | (addr[1] << 8) | addr[0]; if ((err = smsc_writereg(un, SMSC_MAC_ADDRL, val)) != 0) @@ -911,6 +943,7 @@ void smsc_rxeof_loop(struct usbnet * un, struct usbd_xfer *xfer, struct usbnet_chain *c, uint32_t total_len) { + USMSCHIST_FUNC(); USMSCHIST_CALLED(); struct smsc_softc * const sc = usbnet_softc(un); struct ifnet *ifp = usbnet_ifp(un); uint8_t *buf = c->unc_buf; @@ -920,8 +953,8 @@ smsc_rxeof_loop(struct usbnet * un, stru while (total_len != 0) { uint32_t rxhdr; if (total_len < sizeof(rxhdr)) { - smsc_dbg_printf(un, "total_len %d < sizeof(rxhdr) %zu\n", - total_len, sizeof(rxhdr)); + DPRINTF("total_len %d < sizeof(rxhdr) %zu", + total_len, sizeof(rxhdr), 0, 0); ifp->if_ierrors++; return; } @@ -937,18 +970,18 @@ smsc_rxeof_loop(struct usbnet * un, stru if (rxhdr & (SMSC_RX_STAT_ERROR | SMSC_RX_STAT_LENGTH_ERROR | SMSC_RX_STAT_MII_ERROR)) { - smsc_dbg_printf(un, "rx error (hdr 0x%08x)\n", rxhdr); + DPRINTF("rx error (hdr 0x%08x)", rxhdr, 0, 0, 0); ifp->if_ierrors++; return; } uint16_t pktlen = (uint16_t)SMSC_RX_STAT_FRM_LENGTH(rxhdr); - smsc_dbg_printf(un, "rxeof total_len %d pktlen %d rxhdr " - "0x%08x\n", total_len, pktlen, rxhdr); + DPRINTF("rxeof total_len %d pktlen %d rxhdr " + "0x%08x", total_len, pktlen, rxhdr, 0); if (pktlen < ETHER_HDR_LEN) { - smsc_dbg_printf(un, "pktlen %d < ETHER_HDR_LEN %d\n", - pktlen, ETHER_HDR_LEN); + DPRINTF("pktlen %d < ETHER_HDR_LEN %d", + pktlen, ETHER_HDR_LEN, 0, 0); ifp->if_ierrors++; return; } @@ -956,15 +989,15 @@ smsc_rxeof_loop(struct usbnet * un, stru pktlen += ETHER_ALIGN; if (pktlen > MCLBYTES) { - smsc_dbg_printf(un, "pktlen %d > MCLBYTES %d\n", - pktlen, MCLBYTES); + DPRINTF("pktlen %d > MCLBYTES %d", + pktlen, MCLBYTES, 0, 0); ifp->if_ierrors++; return; } if (pktlen > total_len) { - smsc_dbg_printf(un, "pktlen %d > total_len %d\n", - pktlen, total_len); + DPRINTF("pktlen %d > total_len %d", + pktlen, total_len, 0, 0); ifp->if_ierrors++; return; } @@ -979,7 +1012,7 @@ smsc_rxeof_loop(struct usbnet * un, stru /* Check if RX TCP/UDP checksumming is being offloaded */ if (sc->sc_coe_ctrl & SMSC_COE_CTRL_RX_EN) { - smsc_dbg_printf(un,"RX checksum offload checking\n"); + DPRINTF("RX checksum offload checking", 0, 0, 0, 0); struct ether_header *eh = (struct ether_header *)pktbuf; const size_t cssz = sizeof(csum_data); @@ -997,8 +1030,8 @@ smsc_rxeof_loop(struct usbnet * un, stru * * Ignore H/W csum for non-IPv4 packets. */ - smsc_dbg_printf(un,"Ethertype %02x pktlen %02x\n", - be16toh(eh->ether_type), pktlen); + DPRINTF("Ethertype %02x pktlen %02x", + be16toh(eh->ether_type), pktlen, 0, 0); if (be16toh(eh->ether_type) == ETHERTYPE_IP && pktlen > ETHER_MIN_LEN) { @@ -1018,9 +1051,8 @@ smsc_rxeof_loop(struct usbnet * un, stru * in host network order. */ csum_data = ntohs(csum_data); - smsc_dbg_printf(un, - "RX checksum offloaded (0x%04x)\n", - csum_data); + DPRINTF("RX checksum offloaded (0x%04x)", + csum_data, 0, 0, 0); } }