ChangeSet 1.2181.4.72, 2005/03/24 15:31:29-08:00, [EMAIL PROTECTED]

        [PATCH] USB: usbnet uses netif_msg_*() ethtool filtering
        
        This converts most of the usbnet code to actually use the ethtool
        message flags.  The ASIX code is left untouched, since there are
        a bunch of patches pending there ... that's where the remaining
        handful of "sparse -Wbitwise" warnings come from.
        
        Signed-off-by: David Brownell <[EMAIL PROTECTED]>
        Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>



 usbnet.c |  193 +++++++++++++++++++++++++++++++++++----------------------------
 1 files changed, 108 insertions(+), 85 deletions(-)


diff -Nru a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c
--- a/drivers/usb/net/usbnet.c  2005-03-30 15:19:26 -08:00
+++ b/drivers/usb/net/usbnet.c  2005-03-30 15:19:26 -08:00
@@ -192,7 +192,7 @@
        // protocol/interface state
        struct net_device       *net;
        struct net_device_stats stats;
-       int                     msg_level;
+       int                     msg_enable;
        unsigned long           data [5];
 
        struct mii_if_info      mii;
@@ -278,9 +278,9 @@
 static const char driver_name [] = "usbnet";
 
 /* use ethtool to change the level for any given device */
-static int msg_level = 1;
+static int msg_level = -1;
 module_param (msg_level, int, 0);
-MODULE_PARM_DESC (msg_level, "Initial message level (default = 1)");
+MODULE_PARM_DESC (msg_level, "Override default message level");
 
 
 #ifdef DEBUG
@@ -296,9 +296,7 @@
        printk(KERN_WARNING "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
 
 #define devinfo(usbnet, fmt, arg...) \
-       do { if ((usbnet)->msg_level >= 1) \
        printk(KERN_INFO "%s: " fmt "\n" , (usbnet)->net->name , ## arg); \
-       } while (0)
 
 /*-------------------------------------------------------------------------*/
 
@@ -427,13 +425,12 @@
        dev->stats.rx_packets++;
        dev->stats.rx_bytes += skb->len;
 
-#ifdef VERBOSE
-       devdbg (dev, "< rx, len %d, type 0x%x",
-               skb->len + sizeof (struct ethhdr), skb->protocol);
-#endif
+       if (netif_msg_rx_status (dev))
+               devdbg (dev, "< rx, len %d, type 0x%x",
+                       skb->len + sizeof (struct ethhdr), skb->protocol);
        memset (skb->cb, 0, sizeof (struct skb_data));
        status = netif_rx (skb);
-       if (status != NET_RX_SUCCESS)
+       if (status != NET_RX_SUCCESS && netif_msg_rx_err (dev))
                devdbg (dev, "netif_rx status %d", status);
 }
 
@@ -1527,8 +1524,9 @@
 
 static void dumpspeed (struct usbnet *dev, __le32 *speeds)
 {
-       devinfo (dev, "link speeds: %u kbps up, %u kbps down",
-               __le32_to_cpu(speeds[0]) / 1000,
+       if (netif_msg_timer (dev))
+               devinfo (dev, "link speeds: %u kbps up, %u kbps down",
+                       __le32_to_cpu(speeds[0]) / 1000,
                __le32_to_cpu(speeds[1]) / 1000);
 }
 
@@ -1548,14 +1546,18 @@
        event = urb->transfer_buffer;
        switch (event->bNotificationType) {
        case USB_CDC_NOTIFY_NETWORK_CONNECTION:
-               devdbg (dev, "CDC: carrier %s", event->wValue ? "on" : "off");
+               if (netif_msg_timer (dev))
+                       devdbg (dev, "CDC: carrier %s",
+                                       event->wValue ? "on" : "off");
                if (event->wValue)
                        netif_carrier_on(dev->net);
                else
                        netif_carrier_off(dev->net);
                break;
        case USB_CDC_NOTIFY_SPEED_CHANGE:       /* tx/rx rates */
-               devdbg (dev, "CDC: speed change (len %d)", urb->actual_length);
+               if (netif_msg_timer (dev))
+                       devdbg (dev, "CDC: speed change (len %d)",
+                                       urb->actual_length);
                if (urb->actual_length != (sizeof *event + 8))
                        set_bit (EVENT_STS_SPLIT, &dev->flags);
                else
@@ -2179,7 +2181,8 @@
 
 static inline void nc_dump_usbctl (struct usbnet *dev, u16 usbctl)
 {
-#ifdef DEBUG
+       if (!netif_msg_link (dev))
+               return;
        devdbg (dev, "net1080 %s-%s usbctl 0x%x:%s%s%s%s%s;"
                        " this%s%s;"
                        " other%s%s; r/o 0x%x",
@@ -2197,7 +2200,6 @@
                (usbctl & USBCTL_DISCONN_THIS) ? " DIS" : "",
                usbctl & ~USBCTL_WRITABLE_MASK
                );
-#endif
 }
 
 /*-------------------------------------------------------------------------*/
@@ -2224,7 +2226,8 @@
 
 static inline void nc_dump_status (struct usbnet *dev, u16 status)
 {
-#ifdef DEBUG
+       if (!netif_msg_link (dev))
+               return;
        devdbg (dev, "net1080 %s-%s status 0x%x:"
                        " this (%c) PKT=%d%s%s%s;"
                        " other PKT=%d%s%s%s; unspec 0x%x",
@@ -2247,7 +2250,6 @@
 
                status & STATUS_UNSPEC_MASK
                );
-#endif
 }
 
 /*-------------------------------------------------------------------------*/
@@ -2262,15 +2264,10 @@
 
 static inline void nc_dump_ttl (struct usbnet *dev, u16 ttl)
 {
-#ifdef DEBUG
-       devdbg (dev, "net1080 %s-%s ttl 0x%x this = %d, other = %d",
-               dev->udev->bus->bus_name, dev->udev->devpath,
-               ttl,
-
-               TTL_THIS (ttl),
-               TTL_OTHER (ttl)
-               );
-#endif
+       if (netif_msg_link (dev))
+               devdbg (dev, "net1080 %s-%s ttl 0x%x this = %d, other = %d",
+                       dev->udev->bus->bus_name, dev->udev->devpath,
+                       ttl, TTL_THIS (ttl), TTL_OTHER (ttl));
 }
 
 /*-------------------------------------------------------------------------*/
@@ -2292,14 +2289,14 @@
                goto done;
        }
        status = *vp;
-       // nc_dump_status (dev, status);
+       nc_dump_status (dev, status);
 
        if ((retval = nc_register_read (dev, REG_USBCTL, vp)) < 0) {
                dbg ("can't read USBCTL, %d", retval);
                goto done;
        }
        usbctl = *vp;
-       // nc_dump_usbctl (dev, usbctl);
+       nc_dump_usbctl (dev, usbctl);
 
        nc_register_write (dev, REG_USBCTL,
                        USBCTL_FLUSH_THIS | USBCTL_FLUSH_OTHER);
@@ -2315,7 +2312,7 @@
                        MK_TTL (NC_READ_TTL_MS, TTL_OTHER (ttl)) );
        dbg ("%s: assigned TTL, %d ms", dev->net->name, NC_READ_TTL_MS);
 
-       if (dev->msg_level >= 2)
+       if (netif_msg_link (dev))
                devinfo (dev, "port %c, peer %sconnected",
                        (status & STATUS_PORT_A) ? 'A' : 'B',
                        (status & STATUS_CONN_OTHER) ? "" : "dis"
@@ -2396,7 +2393,8 @@
                        return;
                }
 
-               devdbg (dev, "flush net1080; too many framing errors");
+               if (netif_msg_rx_err (dev))
+                       devdbg (dev, "flush net1080; too many framing errors");
                dev->frame_errors = 0;
        }
 }
@@ -2856,7 +2854,8 @@
                size = (sizeof (struct ethhdr) + dev->net->mtu);
 
        if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {
-               devdbg (dev, "no rx skb");
+               if (netif_msg_rx_err (dev))
+                       devdbg (dev, "no rx skb");
                defer_kevent (dev, EVENT_RX_MEMORY);
                usb_free_urb (urb);
                return;
@@ -2886,18 +2885,21 @@
                        defer_kevent (dev, EVENT_RX_MEMORY);
                        break;
                case -ENODEV:
-                       devdbg (dev, "device gone");
+                       if (netif_msg_ifdown (dev))
+                               devdbg (dev, "device gone");
                        netif_device_detach (dev->net);
                        break;
                default:
-                       devdbg (dev, "rx submit, %d", retval);
+                       if (netif_msg_rx_err (dev))
+                               devdbg (dev, "rx submit, %d", retval);
                        tasklet_schedule (&dev->bh);
                        break;
                case 0:
                        __skb_queue_tail (&dev->rxq, skb);
                }
        } else {
-               devdbg (dev, "rx: stopped");
+               if (netif_msg_ifdown (dev))
+                       devdbg (dev, "rx: stopped");
                retval = -ENOLINK;
        }
        spin_unlock_irqrestore (&dev->rxq.lock, lockflags);
@@ -2920,7 +2922,8 @@
        if (skb->len)
                skb_return (dev, skb);
        else {
-               devdbg (dev, "drop");
+               if (netif_msg_rx_err (dev))
+                       devdbg (dev, "drop");
 error:
                dev->stats.rx_errors++;
                skb_queue_tail (&dev->done, skb);
@@ -2947,7 +2950,8 @@
                        entry->state = rx_cleanup;
                        dev->stats.rx_errors++;
                        dev->stats.rx_length_errors++;
-                       devdbg (dev, "rx length %d", skb->len);
+                       if (netif_msg_rx_err (dev))
+                               devdbg (dev, "rx length %d", skb->len);
                }
                break;
 
@@ -2963,9 +2967,8 @@
            // software-driven interface shutdown
            case -ECONNRESET:           // async unlink
            case -ESHUTDOWN:            // hardware gone
-#ifdef VERBOSE
-               devdbg (dev, "rx shutdown, code %d", urb_status);
-#endif
+               if (netif_msg_ifdown (dev))
+                       devdbg (dev, "rx shutdown, code %d", urb_status);
                goto block;
 
            // we get controller i/o faults during khubd disconnect() delays.
@@ -2977,7 +2980,8 @@
                dev->stats.rx_errors++;
                if (!timer_pending (&dev->delay)) {
                        mod_timer (&dev->delay, jiffies + THROTTLE_JIFFIES);
-                       devdbg (dev, "rx throttle %d", urb_status);
+                       if (netif_msg_link (dev))
+                               devdbg (dev, "rx throttle %d", urb_status);
                }
 block:
                entry->state = rx_cleanup;
@@ -2993,7 +2997,8 @@
            default:
                entry->state = rx_cleanup;
                dev->stats.rx_errors++;
-               devdbg (dev, "rx status %d", urb_status);
+               if (netif_msg_rx_err (dev))
+                       devdbg (dev, "rx status %d", urb_status);
                break;
        }
 
@@ -3007,9 +3012,8 @@
                }
                usb_free_urb (urb);
        }
-#ifdef VERBOSE
-       devdbg (dev, "no read resubmitted");
-#endif /* VERBOSE */
+       if (netif_msg_rx_err (dev))
+               devdbg (dev, "no read resubmitted");
 }
 
 static void intr_complete (struct urb *urb, struct pt_regs *regs)
@@ -3026,9 +3030,8 @@
            /* software-driven interface shutdown */
            case -ENOENT:               // urb killed
            case -ESHUTDOWN:            // hardware gone
-#ifdef VERBOSE
-               devdbg (dev, "intr shutdown, code %d", status);
-#endif
+               if (netif_msg_ifdown (dev))
+                       devdbg (dev, "intr shutdown, code %d", status);
                return;
 
            /* NOTE:  not throttling like RX/TX, since this endpoint
@@ -3044,7 +3047,7 @@
 
        memset(urb->transfer_buffer, 0, urb->transfer_buffer_length);
        status = usb_submit_urb (urb, GFP_ATOMIC);
-       if (status != 0)
+       if (status != 0 && netif_msg_timer (dev))
                deverr(dev, "intr resubmit --> %d", status);
 }
 
@@ -3094,7 +3097,7 @@
 
        netif_stop_queue (net);
 
-       if (dev->msg_level >= 2)
+       if (netif_msg_ifdown (dev))
                devinfo (dev, "stop stats: rx/tx %ld/%ld, errs %ld/%ld",
                        dev->stats.rx_packets, dev->stats.tx_packets, 
                        dev->stats.rx_errors, dev->stats.tx_errors
@@ -3110,7 +3113,8 @@
                        && skb_queue_len (&dev->txq)
                        && skb_queue_len (&dev->done)) {
                msleep(UNLINK_TIMEOUT_MS);
-               devdbg (dev, "waited for %d urb completions", temp);
+               if (netif_msg_ifdown (dev))
+                       devdbg (dev, "waited for %d urb completions", temp);
        }
        dev->wait = NULL;
        remove_wait_queue (&unlink_wakeup, &wait); 
@@ -3142,16 +3146,19 @@
 
        // put into "known safe" state
        if (info->reset && (retval = info->reset (dev)) < 0) {
-               devinfo (dev, "open reset fail (%d) usbnet usb-%s-%s, %s",
-                       retval,
-                       dev->udev->bus->bus_name, dev->udev->devpath,
+               if (netif_msg_ifup (dev))
+                       devinfo (dev,
+                               "open reset fail (%d) usbnet usb-%s-%s, %s",
+                               retval,
+                               dev->udev->bus->bus_name, dev->udev->devpath,
                        info->description);
                goto done;
        }
 
        // insist peer be connected
        if (info->check_connect && (retval = info->check_connect (dev)) < 0) {
-               devdbg (dev, "can't open; %d", retval);
+               if (netif_msg_ifup (dev))
+                       devdbg (dev, "can't open; %d", retval);
                goto done;
        }
 
@@ -3159,13 +3166,14 @@
        if (dev->interrupt) {
                retval = usb_submit_urb (dev->interrupt, GFP_KERNEL);
                if (retval < 0) {
-                       deverr (dev, "intr submit %d", retval);
+                       if (netif_msg_ifup (dev))
+                               deverr (dev, "intr submit %d", retval);
                        goto done;
                }
        }
 
        netif_start_queue (net);
-       if (dev->msg_level >= 2) {
+       if (netif_msg_ifup (dev)) {
                char    *framing;
 
                if (dev->driver_info->flags & FLAG_FRAMING_NC)
@@ -3222,14 +3230,14 @@
 {
        struct usbnet *dev = netdev_priv(net);
 
-       return dev->msg_level;
+       return dev->msg_enable;
 }
 
 static void usbnet_set_msglevel (struct net_device *net, u32 level)
 {
        struct usbnet *dev = netdev_priv(net);
 
-       dev->msg_level = level;
+       dev->msg_enable = level;
 }
 
 static int usbnet_ioctl (struct net_device *net, struct ifreq *rq, int cmd)
@@ -3262,10 +3270,11 @@
        if (test_bit (EVENT_TX_HALT, &dev->flags)) {
                unlink_urbs (dev, &dev->txq);
                status = usb_clear_halt (dev->udev, dev->out);
-               if (status < 0 && status != -EPIPE)
-                       deverr (dev, "can't clear tx halt, status %d",
-                               status);
-               else {
+               if (status < 0 && status != -EPIPE) {
+                       if (netif_msg_tx_err (dev))
+                               deverr (dev, "can't clear tx halt, status %d",
+                                       status);
+               } else {
                        clear_bit (EVENT_TX_HALT, &dev->flags);
                        netif_wake_queue (dev->net);
                }
@@ -3273,10 +3282,11 @@
        if (test_bit (EVENT_RX_HALT, &dev->flags)) {
                unlink_urbs (dev, &dev->rxq);
                status = usb_clear_halt (dev->udev, dev->in);
-               if (status < 0 && status != -EPIPE)
-                       deverr (dev, "can't clear rx halt, status %d",
-                               status);
-               else {
+               if (status < 0 && status != -EPIPE) {
+                       if (netif_msg_rx_err (dev))
+                               deverr (dev, "can't clear rx halt, status %d",
+                                       status);
+               } else {
                        clear_bit (EVENT_RX_HALT, &dev->flags);
                        tasklet_schedule (&dev->bh);
                }
@@ -3334,12 +3344,15 @@
                        if (!timer_pending (&dev->delay)) {
                                mod_timer (&dev->delay,
                                        jiffies + THROTTLE_JIFFIES);
-                               devdbg (dev, "tx throttle %d", urb->status);
+                               if (netif_msg_link (dev))
+                                       devdbg (dev, "tx throttle %d",
+                                                       urb->status);
                        }
                        netif_stop_queue (dev->net);
                        break;
                default:
-                       devdbg (dev, "tx err %d", entry->urb->status);
+                       if (netif_msg_tx_err (dev))
+                               devdbg (dev, "tx err %d", entry->urb->status);
                        break;
                }
        }
@@ -3382,14 +3395,16 @@
        if (info->tx_fixup) {
                skb = info->tx_fixup (dev, skb, GFP_ATOMIC);
                if (!skb) {
-                       devdbg (dev, "can't tx_fixup skb");
+                       if (netif_msg_tx_err (dev))
+                               devdbg (dev, "can't tx_fixup skb");
                        goto drop;
                }
        }
        length = skb->len;
 
        if (!(urb = usb_alloc_urb (0, GFP_ATOMIC))) {
-               devdbg (dev, "no urb");
+               if (netif_msg_tx_err (dev))
+                       devdbg (dev, "no urb");
                goto drop;
        }
 
@@ -3447,7 +3462,8 @@
                defer_kevent (dev, EVENT_TX_HALT);
                break;
        default:
-               devdbg (dev, "tx: submit urb err %d", retval);
+               if (netif_msg_tx_err (dev))
+                       devdbg (dev, "tx: submit urb err %d", retval);
                break;
        case 0:
                net->trans_start = jiffies;
@@ -3458,18 +3474,17 @@
        spin_unlock_irqrestore (&dev->txq.lock, flags);
 
        if (retval) {
-               devdbg (dev, "drop, code %d", retval);
+               if (netif_msg_tx_err (dev))
+                       devdbg (dev, "drop, code %d", retval);
 drop:
                retval = NET_XMIT_SUCCESS;
                dev->stats.tx_dropped++;
                if (skb)
                        dev_kfree_skb_any (skb);
                usb_free_urb (urb);
-#ifdef VERBOSE
-       } else {
+       } else if (netif_msg_tx_queued (dev)) {
                devdbg (dev, "> tx, len %d, type 0x%x",
                        length, skb->protocol);
-#endif
        }
        return retval;
 }
@@ -3526,7 +3541,7 @@
                                if (urb != NULL)
                                        rx_submit (dev, urb, GFP_ATOMIC);
                        }
-                       if (temp != dev->rxq.qlen)
+                       if (temp != dev->rxq.qlen && netif_msg_link (dev))
                                devdbg (dev, "rxqlen %d --> %d",
                                                temp, dev->rxq.qlen);
                        if (dev->rxq.qlen < qlen)
@@ -3560,9 +3575,10 @@
 
        xdev = interface_to_usbdev (intf);
 
-       devinfo (dev, "unregister usbnet usb-%s-%s, %s",
-               xdev->bus->bus_name, xdev->devpath,
-               dev->driver_info->description);
+       if (netif_msg_probe (dev))
+               devinfo (dev, "unregister usbnet usb-%s-%s, %s",
+                       xdev->bus->bus_name, xdev->devpath,
+                       dev->driver_info->description);
        
        net = dev->net;
        unregister_netdev (net);
@@ -3616,7 +3632,8 @@
        dev = netdev_priv(net);
        dev->udev = xdev;
        dev->driver_info = info;
-       dev->msg_level = msg_level;
+       dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV
+                               | NETIF_MSG_PROBE | NETIF_MSG_LINK);
        skb_queue_head_init (&dev->rxq);
        skb_queue_head_init (&dev->txq);
        skb_queue_head_init (&dev->done);
@@ -3635,7 +3652,7 @@
 #if 0
 // dma_supported() is deeply broken on almost all architectures
        // possible with some EHCI controllers
-       if (dma_supported (&udev->dev, 0xffffffffffffffffULL))
+       if (dma_supported (&udev->dev, DMA_64BIT_MASK))
                net->features |= NETIF_F_HIGHDMA;
 #endif
 
@@ -3672,6 +3689,7 @@
                        status = 0;
 
        }
+
        if (status == 0 && dev->status)
                status = init_status (dev, udev);
        if (status < 0)
@@ -3683,9 +3701,14 @@
        status = register_netdev (net);
        if (status)
                goto out3;
-       devinfo (dev, "register usbnet at usb-%s-%s, %s",
-               xdev->bus->bus_name, xdev->devpath,
-               dev->driver_info->description);
+       if (netif_msg_probe (dev))
+               devinfo (dev, "register usbnet at usb-%s-%s, %s, "
+                               "%02x:%02x:%02x:%02x:%02x:%02x",
+                       xdev->bus->bus_name, xdev->devpath,
+                       dev->driver_info->description,
+                       net->dev_addr [0], net->dev_addr [1],
+                       net->dev_addr [2], net->dev_addr [3],
+                       net->dev_addr [4], net->dev_addr [5]);
 
        // ok, it's ready to go.
        usb_set_intfdata (udev, dev);
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to