Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
Linus Torvalds [Fri, 21 May 2010 04:04:44 +0000 (21:04 -0700)]
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1674 commits)
  qlcnic: adding co maintainer
  ixgbe: add support for active DA cables
  ixgbe: dcb, do not tag tc_prio_control frames
  ixgbe: fix ixgbe_tx_is_paused logic
  ixgbe: always enable vlan strip/insert when DCB is enabled
  ixgbe: remove some redundant code in setting FCoE FIP filter
  ixgbe: fix wrong offset to fc_frame_header in ixgbe_fcoe_ddp
  ixgbe: fix header len when unsplit packet overflows to data buffer
  ipv6: Never schedule DAD timer on dead address
  ipv6: Use POSTDAD state
  ipv6: Use state_lock to protect ifa state
  ipv6: Replace inet6_ifaddr->dead with state
  cxgb4: notify upper drivers if the device is already up when they load
  cxgb4: keep interrupts available when the ports are brought down
  cxgb4: fix initial addition of MAC address
  cnic: Return SPQ credit to bnx2x after ring setup and shutdown.
  cnic: Convert cnic_local_flags to atomic ops.
  can: Fix SJA1000 command register writes on SMP systems
  bridge: fix build for CONFIG_SYSFS disabled
  ARCNET: Limit com20020 PCI ID matches for SOHARD cards
  ...

Fix up various conflicts with pcmcia tree drivers/net/
{pcmcia/3c589_cs.c, wireless/orinoco/orinoco_cs.c and
wireless/orinoco/spectrum_cs.c} and feature removal
(Documentation/feature-removal-schedule.txt).

Also fix a non-content conflict due to pm_qos_requirement getting
renamed in the PM tree (now pm_qos_request) in net/mac80211/scan.c

34 files changed:
1  2 
Documentation/feature-removal-schedule.txt
MAINTAINERS
arch/arm/mach-pxa/zeus.c
drivers/infiniband/hw/nes/nes_nic.c
drivers/net/e1000e/netdev.c
drivers/net/igbvf/netdev.c
drivers/net/pcmcia/3c574_cs.c
drivers/net/pcmcia/3c589_cs.c
drivers/net/pcmcia/axnet_cs.c
drivers/net/pcmcia/fmvj18x_cs.c
drivers/net/pcmcia/ibmtr_cs.c
drivers/net/pcmcia/nmclan_cs.c
drivers/net/pcmcia/smc91c92_cs.c
drivers/net/pcmcia/xirc2ps_cs.c
drivers/net/ps3_gelic_wireless.c
drivers/net/smsc911x.c
drivers/net/wireless/ipw2x00/ipw2100.c
drivers/net/wireless/orinoco/orinoco_cs.c
drivers/net/wireless/orinoco/spectrum_cs.c
drivers/net/wireless/ray_cs.c
drivers/net/wireless/wl3501_cs.c
drivers/s390/net/qeth_core_main.c
drivers/ssb/main.c
drivers/staging/wavelan/wavelan_cs.c
include/linux/fs.h
include/linux/netdevice.h
kernel/sysctl.c
net/ipv4/ipmr.c
net/mac80211/mlme.c
net/mac80211/scan.c
net/sunrpc/clnt.c
net/sunrpc/svcsock.c
net/sunrpc/xprt.c
net/sunrpc/xprtsock.c

@@@ -520,6 -510,47 +510,24 @@@ Who:     Hans de Goede <hdegoede@redhat.com
  
  ----------------------------
  
 -What: corgikbd, spitzkbd, tosakbd driver
 -When: 2.6.35
 -Files:        drivers/input/keyboard/{corgi,spitz,tosa}kbd.c
 -Why:  We now have a generic GPIO based matrix keyboard driver that
 -      are fully capable of handling all the keys on these devices.
 -      The original drivers manipulate the GPIO registers directly
 -      and so are difficult to maintain.
 -Who:  Eric Miao <eric.y.miao@gmail.com>
 -
 -----------------------------
 -
 -What: corgi_ssp and corgi_ts driver
 -When: 2.6.35
 -Files:        arch/arm/mach-pxa/corgi_ssp.c, drivers/input/touchscreen/corgi_ts.c
 -Why:  The corgi touchscreen is now deprecated in favour of the generic
 -      ads7846.c driver. The noise reduction technique used in corgi_ts.c,
 -      that's to wait till vsync before ADC sampling, is also integrated into
 -      ads7846 driver now. Provided that the original driver is not generic
 -      and is difficult to maintain, it will be removed later.
 -Who:  Eric Miao <eric.y.miao@gmail.com>
 -
 -----------------------------
 -
+ What: sysfs-class-rfkill state file
+ When: Feb 2014
+ Files:        net/rfkill/core.c
+ Why:  Documented as obsolete since Feb 2010. This file is limited to 3
+       states while the rfkill drivers can have 4 states.
+ Who:  anybody or Florian Mickler <florian@mickler.org>
+ ----------------------------
+ What:         sysfs-class-rfkill claim file
+ When: Feb 2012
+ Files:        net/rfkill/core.c
+ Why:  It is not possible to claim an rfkill driver since 2007. This is
+       Documented as obsolete since Feb 2010.
+ Who:  anybody or Florian Mickler <florian@mickler.org>
+ ----------------------------
  What: capifs
  When: February 2011
  Files:        drivers/isdn/capi/capifs.*
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -106,12 -129,13 +129,12 @@@ enum RxFilter 
  
  struct el3_private {
        struct pcmcia_device    *p_dev;
-     /* For transceiver monitoring */
-     struct timer_list media;
-     u16                       media_status;
-     u16                       fast_poll;
-     unsigned long     last_irq;
-     spinlock_t                lock;
 -      dev_node_t              node;
+       /* For transceiver monitoring */
+       struct timer_list       media;
+       u16                     media_status;
+       u16                     fast_poll;
+       unsigned long           last_irq;
+       spinlock_t              lock;
  };
  
  static const char *if_names[] = { "auto", "10baseT", "10base2", "AUI" };
@@@ -274,8 -301,8 +297,8 @@@ static int tc589_config(struct pcmcia_d
      ret = pcmcia_request_configuration(link, &link->conf);
      if (ret)
            goto failed;
-       
 -    dev->irq = link->irq.AssignedIRQ;
 +    dev->irq = link->irq;
      dev->base_addr = link->io.BasePort1;
      ioaddr = dev->base_addr;
      EL3WINDOW(0);
        dev->if_port = if_port;
      else
        printk(KERN_ERR "3c589_cs: invalid if_port requested\n");
-     
 -    link->dev_node = &lp->node;
      SET_NETDEV_DEV(dev, &link->dev);
  
      if (register_netdev(dev) != 0) {
        goto failed;
      }
  
-     printk(KERN_INFO "%s: 3Com 3c%s, io %#3lx, irq %d, "
-          "hw_addr %pM\n",
-          dev->name, (multi ? "562" : "589"), dev->base_addr, dev->irq,
-          dev->dev_addr);
-     printk(KERN_INFO "  %dK FIFO split %s Rx:Tx, %s xcvr\n",
-          (fifo & 7) ? 32 : 8, ram_split[(fifo >> 16) & 3],
-          if_names[dev->if_port]);
 -    strcpy(lp->node.dev_name, dev->name);
 -
+     netdev_info(dev, "3Com 3c%s, io %#3lx, irq %d, hw_addr %pM\n",
+               (multi ? "562" : "589"), dev->base_addr, dev->irq,
+               dev->dev_addr);
+     netdev_info(dev, "  %dK FIFO split %s Rx:Tx, %s xcvr\n",
+               (fifo & 7) ? 32 : 8, ram_split[(fifo >> 16) & 3],
+               if_names[dev->if_port]);
      return 0;
  
  failed:
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -281,7 -296,7 +281,7 @@@ orinoco_cs_config(struct pcmcia_device 
  
        /* Register an interface with the stack */
        if (orinoco_if_add(priv, link->io.BasePort1,
-                          link->irq) != 0) {
 -                         link->irq.AssignedIRQ, NULL) != 0) {
++                         link->irq, NULL) != 0) {
                printk(KERN_ERR PFX "orinoco_if_add() failed\n");
                goto failed;
        }
@@@ -359,7 -375,7 +360,7 @@@ spectrum_cs_config(struct pcmcia_devic
  
        /* Register an interface with the stack */
        if (orinoco_if_add(priv, link->io.BasePort1,
-                          link->irq) != 0) {
 -                         link->irq.AssignedIRQ, NULL) != 0) {
++                         link->irq, NULL) != 0) {
                printk(KERN_ERR PFX "orinoco_if_add() failed\n");
                goto failed;
        }
Simple merge
@@@ -1451,12 -1450,8 +1450,10 @@@ static void wl3501_detach(struct pcmcia
        netif_device_detach(dev);
        wl3501_release(link);
  
 +      unregister_netdev(dev);
 +
        if (link->priv)
                free_netdev(link->priv);
-       return;
  }
  
  static int wl3501_get_name(struct net_device *dev, struct iw_request_info *info,
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/sysctl.c
Simple merge
diff --cc net/ipv4/ipmr.c
Simple merge
Simple merge
@@@ -456,11 -492,34 +492,34 @@@ static int ieee80211_scan_state_decisio
        if (local->scan_channel) {
                /*
                 * we're currently scanning a different channel, let's
-                * switch back to the operating channel now if at least
-                * one interface is associated. Otherwise just scan the
-                * next channel
+                * see if we can scan another channel without interfering
+                * with the current traffic situation.
+                *
+                * Since we don't know if the AP has pending frames for us
+                * we can only check for our tx queues and use the current
+                * pm_qos requirements for rx. Hence, if no tx traffic occurs
+                * at all we will scan as many channels in a row as the pm_qos
+                * latency allows us to. Additionally we also check for the
+                * currently negotiated listen interval to prevent losing
+                * frames unnecessarily.
+                *
+                * Otherwise switch back to the operating channel.
                 */
-               if (associated)
+               next_chan = local->scan_req->channels[local->scan_channel_idx];
+               bad_latency = time_after(jiffies +
+                               ieee80211_scan_get_channel_time(next_chan),
+                               local->leave_oper_channel_time +
 -                              usecs_to_jiffies(pm_qos_requirement(PM_QOS_NETWORK_LATENCY)));
++                              usecs_to_jiffies(pm_qos_request(PM_QOS_NETWORK_LATENCY)));
+               listen_int_exceeded = time_after(jiffies +
+                               ieee80211_scan_get_channel_time(next_chan),
+                               local->leave_oper_channel_time +
+                               usecs_to_jiffies(min_beacon_int * 1024) *
+                               local->hw.conf.listen_interval);
+               if (associated && ( !tx_empty || bad_latency ||
+                   listen_int_exceeded))
                        local->next_scan_state = SCAN_ENTER_OPER_CHANNEL;
                else
                        local->next_scan_state = SCAN_SET_CHANNEL;
Simple merge
Simple merge
Simple merge
Simple merge