]> Git Repo - linux.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
authorLinus Torvalds <[email protected]>
Fri, 14 Jan 2011 21:25:30 +0000 (13:25 -0800)
committerLinus Torvalds <[email protected]>
Fri, 14 Jan 2011 21:25:30 +0000 (13:25 -0800)
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (47 commits)
  GRETH: resolve SMP issues and other problems
  GRETH: handle frame error interrupts
  GRETH: avoid writing bad speed/duplex when setting transfer mode
  GRETH: fixed skb buffer memory leak on frame errors
  GRETH: GBit transmit descriptor handling optimization
  GRETH: fix opening/closing
  GRETH: added raw AMBA vendor/device number to match against.
  cassini: Fix build bustage on x86.
  e1000e: consistent use of Rx/Tx vs. RX/TX/rx/tx in comments/logs
  e1000e: update Copyright for 2011
  e1000: Avoid unhandled IRQ
  r8169: keep firmware in memory.
  netdev: tilepro: Use is_unicast_ether_addr helper
  etherdevice.h: Add is_unicast_ether_addr function
  ks8695net: Use default implementation of ethtool_ops::get_link
  ks8695net: Disable non-working ethtool operations
  USB CDC NCM: Don't deref NULL in cdc_ncm_rx_fixup() and don't use uninitialized variable.
  vxge: Remember to release firmware after upgrading firmware
  netdev: bfin_mac: Remove is_multicast_ether_addr use in netdev_for_each_mc_addr
  ipsec: update MAX_AH_AUTH_LEN to support sha512
  ...

1  2 
drivers/net/e1000/e1000_main.c
drivers/net/e1000e/82571.c
drivers/net/e1000e/ich8lan.c
drivers/net/e1000e/phy.c
drivers/net/gianfar.c
drivers/net/ucc_geth.c
net/core/dev.c

index de69c54301c13fe78652c50e07ccfe9eefad441b,e332aee386f6b79cc672466475732f2c952e2603..bfab14092d2c87b30f3e7bf3d1b72efd542b1d48
@@@ -2233,7 -2233,7 +2233,7 @@@ static void e1000_set_rx_mode(struct ne
         * addresses take precedence to avoid disabling unicast filtering
         * when possible.
         *
 -       * RAR 0 is used for the station MAC adddress
 +       * RAR 0 is used for the station MAC address
         * if there are not 14 addresses, go ahead and clear the filters
         */
        i = 1;
@@@ -3478,9 -3478,17 +3478,17 @@@ static irqreturn_t e1000_intr(int irq, 
        struct e1000_hw *hw = &adapter->hw;
        u32 icr = er32(ICR);
  
-       if (unlikely((!icr) || test_bit(__E1000_DOWN, &adapter->flags)))
+       if (unlikely((!icr)))
                return IRQ_NONE;  /* Not our interrupt */
  
+       /*
+        * we might have caused the interrupt, but the above
+        * read cleared it, and just in case the driver is
+        * down there is nothing to do so return handled
+        */
+       if (unlikely(test_bit(__E1000_DOWN, &adapter->flags)))
+               return IRQ_HANDLED;
        if (unlikely(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))) {
                hw->get_link_status = 1;
                /* guard against interrupt when we're going down */
index 1397da118f0d310a45e67d18fd754d48d222191a,7bdec0b0c562b98e357cdd7958863f6077f6d3b5..89a69035e538f2ef024e2c6e747a1b762744a118
@@@ -1,7 -1,7 +1,7 @@@
  /*******************************************************************************
  
    Intel PRO/1000 Linux driver
-   Copyright(c) 1999 - 2010 Intel Corporation.
+   Copyright(c) 1999 - 2011 Intel Corporation.
  
    This program is free software; you can redistribute it and/or modify it
    under the terms and conditions of the GNU General Public License,
@@@ -328,7 -328,7 +328,7 @@@ static s32 e1000_init_mac_params_82571(
  
        /*
         * Ensure that the inter-port SWSM.SMBI lock bit is clear before
 -       * first NVM or PHY acess. This should be done for single-port
 +       * first NVM or PHY access. This should be done for single-port
         * devices, and for one port only on dual-port devices so that
         * for those devices we can still use the SMBI lock to synchronize
         * inter-port accesses to the PHY & NVM.
@@@ -1310,7 -1310,7 +1310,7 @@@ static void e1000_initialize_hw_bits_82
                 * apply workaround for hardware errata documented in errata
                 * docs Fixes issue where some error prone or unreliable PCIe
                 * completions are occurring, particularly with ASPM enabled.
-                * Without fix, issue can cause tx timeouts.
+                * Without fix, issue can cause Tx timeouts.
                 */
                reg = er32(GCR2);
                reg |= 1;
index 5bb65b7382db024c80c54b6b2d05f3f76e3cff41,b43fc7fb1ee4ab8170053ca05d0b0079af4b4592..fb46974cfec1afd122edea3f3aa8a4058b8d1928
@@@ -1,7 -1,7 +1,7 @@@
  /*******************************************************************************
  
    Intel PRO/1000 Linux driver
-   Copyright(c) 1999 - 2010 Intel Corporation.
+   Copyright(c) 1999 - 2011 Intel Corporation.
  
    This program is free software; you can redistribute it and/or modify it
    under the terms and conditions of the GNU General Public License,
@@@ -321,7 -321,7 +321,7 @@@ static s32 e1000_init_phy_params_pchlan
        }
  
        /*
 -       * Reset the PHY before any acccess to it.  Doing so, ensures that
 +       * Reset the PHY before any access to it.  Doing so, ensures that
         * the PHY is in a known good state before we read/write PHY registers.
         * The generic reset is sufficient here, because we haven't determined
         * the PHY type yet.
diff --combined drivers/net/e1000e/phy.c
index 00f89e8a9fa02a5288543e4806b45fd15a3b9c88,326788eab2f776908b0ec67cc4074547d70e6e6e..6bea051b134b5e7e48f0c85feb9a4879d956974b
@@@ -1,7 -1,7 +1,7 @@@
  /*******************************************************************************
  
    Intel PRO/1000 Linux driver
-   Copyright(c) 1999 - 2010 Intel Corporation.
+   Copyright(c) 1999 - 2011 Intel Corporation.
  
    This program is free software; you can redistribute it and/or modify it
    under the terms and conditions of the GNU General Public License,
@@@ -640,7 -640,7 +640,7 @@@ s32 e1000_copper_link_setup_82577(struc
        s32 ret_val;
        u16 phy_data;
  
-       /* Enable CRS on TX. This must be set for half-duplex operation. */
+       /* Enable CRS on Tx. This must be set for half-duplex operation. */
        ret_val = e1e_rphy(hw, I82577_CFG_REG, &phy_data);
        if (ret_val)
                goto out;
@@@ -2986,7 -2986,7 +2986,7 @@@ s32 e1000_write_phy_reg_hv_locked(struc
  }
  
  /**
 - *  e1000_get_phy_addr_for_hv_page - Get PHY adrress based on page
 + *  e1000_get_phy_addr_for_hv_page - Get PHY address based on page
   *  @page: page to be accessed
   **/
  static u32 e1000_get_phy_addr_for_hv_page(u32 page)
diff --combined drivers/net/gianfar.c
index 6de4675016b5303e186d3c2350c8a81b0c98ae7c,f1d4b450e7973f8c175f38fa59be0e8674c2ae7b..119aa2000c24a7e7091c517588ab64b175e50c39
@@@ -95,7 -95,6 +95,7 @@@
  #include <linux/phy.h>
  #include <linux/phy_fixed.h>
  #include <linux/of.h>
 +#include <linux/of_net.h>
  
  #include "gianfar.h"
  #include "fsl_pq_mdio.h"
@@@ -434,7 -433,6 +434,6 @@@ static void gfar_init_mac(struct net_de
  static struct net_device_stats *gfar_get_stats(struct net_device *dev)
  {
        struct gfar_private *priv = netdev_priv(dev);
-       struct netdev_queue *txq;
        unsigned long rx_packets = 0, rx_bytes = 0, rx_dropped = 0;
        unsigned long tx_packets = 0, tx_bytes = 0;
        int i = 0;
        dev->stats.rx_dropped = rx_dropped;
  
        for (i = 0; i < priv->num_tx_queues; i++) {
-               txq = netdev_get_tx_queue(dev, i);
-               tx_bytes += txq->tx_bytes;
-               tx_packets += txq->tx_packets;
+               tx_bytes += priv->tx_queue[i]->stats.tx_bytes;
+               tx_packets += priv->tx_queue[i]->stats.tx_packets;
        }
  
        dev->stats.tx_bytes = tx_bytes;
@@@ -2109,8 -2106,8 +2107,8 @@@ static int gfar_start_xmit(struct sk_bu
        }
  
        /* Update transmit stats */
-       txq->tx_bytes += skb->len;
-       txq->tx_packets ++;
+       tx_queue->stats.tx_bytes += skb->len;
+       tx_queue->stats.tx_packets++;
  
        txbdp = txbdp_start = tx_queue->cur_tx;
        lstatus = txbdp->lstatus;
diff --combined drivers/net/ucc_geth.c
index 73a3e0d93237c97127e4eff1f31c52b4915f1119,dc6cb974f25d62ca1229538ba045a2d2c8b442f6..715e7b47e7e987ff47c502c229686911cae17bc5
@@@ -28,7 -28,6 +28,7 @@@
  #include <linux/phy.h>
  #include <linux/workqueue.h>
  #include <linux/of_mdio.h>
 +#include <linux/of_net.h>
  #include <linux/of_platform.h>
  
  #include <asm/uaccess.h>
@@@ -2032,7 -2031,7 +2032,7 @@@ static void ucc_geth_set_multi(struct n
                        netdev_for_each_mc_addr(ha, dev) {
                                /* Only support group multicast for now.
                                 */
-                               if (!(ha->addr[0] & 1))
+                               if (!is_multicast_ether_addr(ha->addr))
                                        continue;
  
                                /* Ask CPM to run CRC and set bit in
diff --combined net/core/dev.c
index 06d0e7b253850d35fcf3b0bcc2fa6a7635d57986,83507c265e480298be889c84d5e89be1351cdcfe..54277df0f735abf601a44053fa29c9f85cc5c87b
@@@ -5523,34 -5523,6 +5523,6 @@@ void netdev_run_todo(void
        }
  }
  
- /**
-  *    dev_txq_stats_fold - fold tx_queues stats
-  *    @dev: device to get statistics from
-  *    @stats: struct rtnl_link_stats64 to hold results
-  */
- void dev_txq_stats_fold(const struct net_device *dev,
-                       struct rtnl_link_stats64 *stats)
- {
-       u64 tx_bytes = 0, tx_packets = 0, tx_dropped = 0;
-       unsigned int i;
-       struct netdev_queue *txq;
-       for (i = 0; i < dev->num_tx_queues; i++) {
-               txq = netdev_get_tx_queue(dev, i);
-               spin_lock_bh(&txq->_xmit_lock);
-               tx_bytes   += txq->tx_bytes;
-               tx_packets += txq->tx_packets;
-               tx_dropped += txq->tx_dropped;
-               spin_unlock_bh(&txq->_xmit_lock);
-       }
-       if (tx_bytes || tx_packets || tx_dropped) {
-               stats->tx_bytes   = tx_bytes;
-               stats->tx_packets = tx_packets;
-               stats->tx_dropped = tx_dropped;
-       }
- }
- EXPORT_SYMBOL(dev_txq_stats_fold);
  /* Convert net_device_stats to rtnl_link_stats64.  They have the same
   * fields in the same order, with only the type differing.
   */
@@@ -5594,7 -5566,6 +5566,6 @@@ struct rtnl_link_stats64 *dev_get_stats
                netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));
        } else {
                netdev_stats_to_stats64(storage, &dev->stats);
-               dev_txq_stats_fold(dev, storage);
        }
        storage->rx_dropped += atomic_long_read(&dev->rx_dropped);
        return storage;
@@@ -6218,7 -6189,7 +6189,7 @@@ static void __net_exit default_device_e
  static void __net_exit default_device_exit_batch(struct list_head *net_list)
  {
        /* At exit all network devices most be removed from a network
 -       * namespace.  Do this in the reverse order of registeration.
 +       * namespace.  Do this in the reverse order of registration.
         * Do this across as many network namespaces as possible to
         * improve batching efficiency.
         */
This page took 0.149361 seconds and 4 git commands to generate.