tree cf9ac0ca1db8b3d00939f26bbda0494e22e579ab
parent 2760f5a34421bba937dafa29a9decdbad11d2718
parent 3e747fa18202896b5be66b88478352d5880fb8eb
author David S. Miller <davem@davemloft.net> 1506482506 -0700
committer David S. Miller <davem@davemloft.net> 1506482506 -0700
mergetag object 3e747fa18202896b5be66b88478352d5880fb8eb
 type commit
 tag wireless-drivers-for-davem-2017-09-25
 tagger Kalle Valo <kvalo@codeaurora.org> 1506328820 +0300
 
 wireless-drivers fixes for 4.14
 
 Quite a lot of fixes this time. Most notable is the brcmfmac fix for a
 CVE issue.
 
 iwlwifi
 
 * a couple of bugzilla bugs related to multicast handling
 
 * two fixes for WoWLAN bugs that were causing queue hangs and
   re-initialization problems
 
 * two fixes for potential uninitialized variable use reported by Dan
   Carpenter in relation to a recently introduced patch
 
 * a fix for buffer reordering in the newly supported 9000 device
   family
 
 * fix a race when starting aggregation
 
 * small fix for a recent patch to wake mac80211 queues
 
 * send non-bufferable management frames in the generic queue so they
   are not sent on queues that are under power-save
 
 ath10k
 
 * fix a PCI PM related gcc warning
 
 brcmfmac
 
 * CVE-2017-0786: add length check scan results from firmware
 
 * respect passive scan requests from user space
 
 qtnfmac
 
 * fix race in tx path when using multiple interfaces
 
 * cancel ongoing scan when removing the wireless interface
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQEcBAABAgAGBQJZyMFDAAoJEG4XJFUm622bKcwIAJrA+WBwvQUChcFGc5KWUaqB
 +aJN1fP3AaiLHVU0Ny1jNIPYPREH9/EejCI72i2WE5TH73sAbqL/XPn8Y5pETQ25
 FvKSnTZJyjbU0PNa5pgdYVDr+ZJ21z4hD9OdSRib6Ru62o21ISqzsT5bqd9g3btX
 KRDqaAqkQYiMpL73KuF+89RmeUjXNM0GFbdxvziRV3mKYqqZiqNNQLxKlPOCcAD0
 2AOyX+k2FLiG5+/RvrcLiCjUzwzQzxwhwQZe1w+ncFRX5INvESLWHDWyzYcB5C0M
 9iKc6QVaWTFGqsVyGk+M2decKuj5wHaPVMGc3g7FYWBJo/CVsmpW+kbNrJ/FG08=
 =s1IH
 -----END PGP SIGNATURE-----

Merge tag 'wireless-drivers-for-davem-2017-09-25' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers

Kalle Valo says:

====================
wireless-drivers fixes for 4.14

Quite a lot of fixes this time. Most notable is the brcmfmac fix for a
CVE issue.

iwlwifi

* a couple of bugzilla bugs related to multicast handling

* two fixes for WoWLAN bugs that were causing queue hangs and
  re-initialization problems

* two fixes for potential uninitialized variable use reported by Dan
  Carpenter in relation to a recently introduced patch

* a fix for buffer reordering in the newly supported 9000 device
  family

* fix a race when starting aggregation

* small fix for a recent patch to wake mac80211 queues

* send non-bufferable management frames in the generic queue so they
  are not sent on queues that are under power-save

ath10k

* fix a PCI PM related gcc warning

brcmfmac

* CVE-2017-0786: add length check scan results from firmware

* respect passive scan requests from user space

qtnfmac

* fix race in tx path when using multiple interfaces

* cancel ongoing scan when removing the wireless interface
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
