Merge tag 'master-2014-11-20' of git://git.kernel.org/pub/scm/linux/kernel/git/linvil...
authorDavid S. Miller <davem@davemloft.net>
Fri, 21 Nov 2014 21:39:45 +0000 (16:39 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Nov 2014 21:39:45 +0000 (16:39 -0500)
John W. Linville says:

====================
pull request: wireless-next 2014-11-21

Please pull this batch of updates intended for the 3.19 stream...

For the mac80211 bits, Johannes says:

"It has been a while since my last pull request, so we accumulated
another relatively large set of changes:
 * TDLS off-channel support set from Arik/Liad, with some support
   patches I did
 * custom regulatory fixes from Arik
 * minstrel VHT fix (and a small optimisation) from Felix
 * add back radiotap vendor namespace support (myself)
 * random MAC address scanning for cfg80211/mac80211/hwsim (myself)
 * CSA improvements (Luca)
 * WoWLAN Net Detect (wake on network found) support (Luca)
 * and lots of other smaller changes from many people"

For the Bluetooth bits, Johan says:

"Here's another set of patches for 3.19. Most of it is again fixes and
cleanups to ieee802154 related code from Alexander Aring. We've also got
better handling of hardware error events along with a proper API for HCI
drivers to notify the HCI core of such situations. There's also a minor
fix for mgmt events as well as a sparse warning fix. The code for
sending HCI commands synchronously also gets a fix where we might loose
the completion event in the case of very fast HW (particularly easily
reproducible with an emulated HCI device)."

And...

"Here's another bluetooth-next pull request for 3.19. We've got:

 - Various fixes, cleanups and improvements to ieee802154/mac802154
 - Support for a Broadcom BCM20702A1 variant
 - Lots of lockdep fixes
 - Fixed handling of LE CoC errors that should trigger SMP"

For the Atheros bits, Kalle says:

"One ath6kl patch and rest for ath10k, but nothing really major which
stands out. Most notable:

o fix resume (Bartosz)

o firmware restart is now faster and more reliable (Michal)

o it's now possible to test hardware restart functionality without
  crashing the firmware using hw-restart parameter with
  simulate_fw_crash debugfs file (Michal)"

On top of that...both ath9k and mwifiex get their usual level of
updates.  Of note is the ath9k spectral scan work from Oleksij Rempel.

I also pulled from the wireless tree in order to avoid some merge issues.

Please let me know if there are problems!
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
include/linux/netdevice.h

@@@ -57,6 -57,8 +57,8 @@@ struct device
  struct phy_device;
  /* 802.11 specific */
  struct wireless_dev;
+ /* 802.15.4 specific */
+ struct wpan_dev;
  
  void netdev_set_default_ethtool_ops(struct net_device *dev,
                                    const struct ethtool_ops *ops);
@@@ -314,7 -316,6 +316,7 @@@ struct napi_struct 
        struct net_device       *dev;
        struct sk_buff          *gro_list;
        struct sk_buff          *skb;
 +      struct hrtimer          timer;
        struct list_head        dev_list;
        struct hlist_node       napi_hash_node;
        unsigned int            napi_id;
@@@ -387,7 -388,6 +389,7 @@@ typedef enum rx_handler_result rx_handl
  typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);
  
  void __napi_schedule(struct napi_struct *n);
 +void __napi_schedule_irqoff(struct napi_struct *n);
  
  static inline bool napi_disable_pending(struct napi_struct *n)
  {
@@@ -422,18 -422,6 +424,18 @@@ static inline void napi_schedule(struc
                __napi_schedule(n);
  }
  
 +/**
 + *    napi_schedule_irqoff - schedule NAPI poll
 + *    @n: napi context
 + *
 + * Variant of napi_schedule(), assuming hard irqs are masked.
 + */
 +static inline void napi_schedule_irqoff(struct napi_struct *n)
 +{
 +      if (napi_schedule_prep(n))
 +              __napi_schedule_irqoff(n);
 +}
 +
  /* Try to reschedule poll. Called by dev->poll() after napi_complete().  */
  static inline bool napi_reschedule(struct napi_struct *napi)
  {
        return false;
  }
  
 +void __napi_complete(struct napi_struct *n);
 +void napi_complete_done(struct napi_struct *n, int work_done);
  /**
   *    napi_complete - NAPI processing complete
   *    @n: napi context
   *
   * Mark NAPI processing as complete.
 + * Consider using napi_complete_done() instead.
   */
 -void __napi_complete(struct napi_struct *n);
 -void napi_complete(struct napi_struct *n);
 +static inline void napi_complete(struct napi_struct *n)
 +{
 +      return napi_complete_done(n, 0);
 +}
  
  /**
   *    napi_by_id - lookup a NAPI by napi_id
@@@ -491,7 -474,14 +493,7 @@@ void napi_hash_del(struct napi_struct *
   * Stop NAPI from being scheduled on this context.
   * Waits till any outstanding processing completes.
   */
 -static inline void napi_disable(struct napi_struct *n)
 -{
 -      might_sleep();
 -      set_bit(NAPI_STATE_DISABLE, &n->state);
 -      while (test_and_set_bit(NAPI_STATE_SCHED, &n->state))
 -              msleep(1);
 -      clear_bit(NAPI_STATE_DISABLE, &n->state);
 -}
 +void napi_disable(struct napi_struct *n);
  
  /**
   *    napi_enable - enable NAPI scheduling
@@@ -1584,6 -1574,7 +1586,7 @@@ struct net_device 
        struct inet6_dev __rcu  *ip6_ptr;
        void                    *ax25_ptr;
        struct wireless_dev     *ieee80211_ptr;
+       struct wpan_dev         *ieee802154_ptr;
  
  /*
   * Cache lines mostly used on receive path (including eth_type_trans())
  
  #endif
  
 +      unsigned long           gro_flush_timeout;
        rx_handler_func_t __rcu *rx_handler;
        void __rcu              *rx_handler_data;
  
@@@ -2329,7 -2319,10 +2332,7 @@@ extern int netdev_flow_limit_table_len
   * Incoming packets are placed on per-cpu queues
   */
  struct softnet_data {
 -      struct Qdisc            *output_queue;
 -      struct Qdisc            **output_queue_tailp;
        struct list_head        poll_list;
 -      struct sk_buff          *completion_queue;
        struct sk_buff_head     process_queue;
  
        /* stats */
        unsigned int            time_squeeze;
        unsigned int            cpu_collision;
        unsigned int            received_rps;
 -
  #ifdef CONFIG_RPS
        struct softnet_data     *rps_ipi_list;
 +#endif
 +#ifdef CONFIG_NET_FLOW_LIMIT
 +      struct sd_flow_limit __rcu *flow_limit;
 +#endif
 +      struct Qdisc            *output_queue;
 +      struct Qdisc            **output_queue_tailp;
 +      struct sk_buff          *completion_queue;
  
 +#ifdef CONFIG_RPS
        /* Elements below can be accessed between CPUs for RPS */
        struct call_single_data csd ____cacheline_aligned_in_smp;
        struct softnet_data     *rps_ipi_next;
        struct sk_buff_head     input_pkt_queue;
        struct napi_struct      backlog;
  
 -#ifdef CONFIG_NET_FLOW_LIMIT
 -      struct sd_flow_limit __rcu *flow_limit;
 -#endif
  };
  
  static inline void input_queue_head_incr(struct softnet_data *sd)
@@@ -2762,6 -2751,23 +2765,6 @@@ static inline int netif_set_real_num_rx
  }
  #endif
  
 -static inline int netif_copy_real_num_queues(struct net_device *to_dev,
 -                                           const struct net_device *from_dev)
 -{
 -      int err;
 -
 -      err = netif_set_real_num_tx_queues(to_dev,
 -                                         from_dev->real_num_tx_queues);
 -      if (err)
 -              return err;
 -#ifdef CONFIG_SYSFS
 -      return netif_set_real_num_rx_queues(to_dev,
 -                                          from_dev->real_num_rx_queues);
 -#else
 -      return 0;
 -#endif
 -}
 -
  #ifdef CONFIG_SYSFS
  static inline unsigned int get_netdev_rx_queue_index(
                struct netdev_rx_queue *queue)
@@@ -3422,12 -3428,6 +3425,12 @@@ void netdev_upper_dev_unlink(struct net
  void netdev_adjacent_rename_links(struct net_device *dev, char *oldname);
  void *netdev_lower_dev_get_private(struct net_device *dev,
                                   struct net_device *lower_dev);
 +
 +/* RSS keys are 40 or 52 bytes long */
 +#define NETDEV_RSS_KEY_LEN 52
 +extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN];
 +void netdev_rss_key_fill(void *buffer, size_t len);
 +
  int dev_get_nest_level(struct net_device *dev,
                       bool (*type_check)(struct net_device *dev));
  int skb_checksum_help(struct sk_buff *skb);
@@@ -3572,7 -3572,7 +3575,7 @@@ static inline bool net_gso_ok(netdev_fe
        BUILD_BUG_ON(SKB_GSO_SIT     != (NETIF_F_GSO_SIT >> NETIF_F_GSO_SHIFT));
        BUILD_BUG_ON(SKB_GSO_UDP_TUNNEL != (NETIF_F_GSO_UDP_TUNNEL >> NETIF_F_GSO_SHIFT));
        BUILD_BUG_ON(SKB_GSO_UDP_TUNNEL_CSUM != (NETIF_F_GSO_UDP_TUNNEL_CSUM >> NETIF_F_GSO_SHIFT));
 -      BUILD_BUG_ON(SKB_GSO_MPLS    != (NETIF_F_GSO_MPLS >> NETIF_F_GSO_SHIFT));
 +      BUILD_BUG_ON(SKB_GSO_TUNNEL_REMCSUM != (NETIF_F_GSO_TUNNEL_REMCSUM >> NETIF_F_GSO_SHIFT));
  
        return (features & feature) == feature;
  }