From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Fri, 21 May 2010 04:04:44 +0000 (-0700)
Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
X-Git-Tag: firefly_0821_release~9833^2~2087
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f8965467f366fd18f01feafb5db10512d7b4422c;p=firefly-linux-kernel-4.4.55.git

Merge git://git./linux/kernel/git/davem/net-next-2.6

* 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
---

f8965467f366fd18f01feafb5db10512d7b4422c
diff --cc Documentation/feature-removal-schedule.txt
index e7965f4a385a,e592dade6420..a86152ae2f6f
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@@ -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 drivers/net/pcmcia/3c589_cs.c
index 5ab589d3b385,d6a459dd4894..ce63c3773b4c
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@@ -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);
@@@ -308,7 -335,8 +331,7 @@@
  	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) {
@@@ -316,13 -344,15 +339,12 @@@
  	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:
diff --cc drivers/net/wireless/orinoco/orinoco_cs.c
index 03056ab73032,f99b13ba92b3..b16d5db52a4d
--- a/drivers/net/wireless/orinoco/orinoco_cs.c
+++ b/drivers/net/wireless/orinoco/orinoco_cs.c
@@@ -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;
  	}
diff --cc drivers/net/wireless/orinoco/spectrum_cs.c
index 41b9ce425855,9b1af4976bf5..b51a9adc80f6
--- a/drivers/net/wireless/orinoco/spectrum_cs.c
+++ b/drivers/net/wireless/orinoco/spectrum_cs.c
@@@ -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;
  	}
diff --cc drivers/net/wireless/wl3501_cs.c
index 5e5d24c1ce2b,6449fe3d128f..376c6b964a9c
--- a/drivers/net/wireless/wl3501_cs.c
+++ b/drivers/net/wireless/wl3501_cs.c
@@@ -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,
diff --cc net/mac80211/scan.c
index 85507bd9e341,e14c44195ae9..e1b0be7a57b9
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@@ -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;