Merge tag 'wireless-drivers-next-for-davem-2017-02-01' of git://git.kernel.org/pub...
authorDavid S. Miller <davem@davemloft.net>
Wed, 1 Feb 2017 17:46:17 +0000 (12:46 -0500)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 Feb 2017 17:46:17 +0000 (12:46 -0500)
Kalle Valo says:

====================
wireless-drivers-next patches for 4.11

It's nice to see rt2x00 development has becoming active, for example
adding support for a new chip version. Also wcn36xx has been converted
to use the recently merged QCOM_SMD subsystem. Otherwise new features
and fixes it lots of drivers.

Major changes:

iwlwifi

* some more work in preparation for A000 family support
* add support for radiotap timestamps
* some work on our firmware debugging capabilities

wcn36xx

* convert to a proper QCOM_SMD driver (from the platform_driver interface)

ath10k

* VHT160 support
* dump Copy Engine registers during firmware crash
* search board file extension from SMBIOS

wil6210

* add disable_ap_sme module parameter

rt2x00

* support RT3352 with external PA
* support for RT3352 with 20MHz crystal
* add support for RT5350 WiSoC

brcmfmac

* add support for BCM43455 sdio device

rtl8xxxu

* add support for D-Link DWA-131 rev E1, TP-Link TL-WN822N v4 and others
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
MAINTAINERS
drivers/net/wireless/ath/ath10k/htt_rx.c
drivers/net/wireless/ath/ath10k/pci.c
drivers/net/wireless/ath/wil6210/netdev.c
drivers/net/wireless/realtek/rtlwifi/usb.c

diff --combined MAINTAINERS
@@@ -81,6 -81,7 +81,6 @@@ Descriptions of section entries
        Q: Patchwork web based patch tracking system site
        T: SCM tree type and location.
           Type is one of: git, hg, quilt, stgit, topgit
 -      B: Bug tracking system location.
        S: Status, one of the following:
           Supported:   Someone is actually paid to look after this.
           Maintained:  Someone actually looks after it.
@@@ -976,7 -977,6 +976,7 @@@ M: Russell King <linux@armlinux.org.uk
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.armlinux.org.uk/
  S:    Maintained
 +T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git
  F:    arch/arm/
  
  ARM SUB-ARCHITECTURES
@@@ -1154,7 -1154,6 +1154,7 @@@ ARM/CLKDEV SUPPOR
  M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git clkdev
  F:    arch/arm/include/asm/clkdev.h
  F:    drivers/clk/clkdev.c
  
@@@ -1690,7 -1689,6 +1690,7 @@@ M:      Krzysztof Kozlowski <krzk@kernel.org
  R:    Javier Martinez Canillas <javier@osg.samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 +Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
  S:    Maintained
  F:    arch/arm/boot/dts/s3c*
  F:    arch/arm/boot/dts/s5p*
@@@ -2196,6 -2194,14 +2196,6 @@@ L:     alsa-devel@alsa-project.org (moderat
  S:    Supported
  F:    sound/soc/atmel
  
 -ATMEL DMA DRIVER
 -M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Supported
 -F:    drivers/dma/at_hdmac.c
 -F:    drivers/dma/at_hdmac_regs.h
 -F:    include/linux/platform_data/dma-atmel.h
 -
  ATMEL XDMA DRIVER
  M:    Ludovic Desroches <ludovic.desroches@atmel.com>
  L:    linux-arm-kernel@lists.infradead.org
@@@ -3573,7 -3579,7 +3573,7 @@@ F:      drivers/infiniband/hw/cxgb3
  F:    include/uapi/rdma/cxgb3-abi.h
  
  CXGB4 ETHERNET DRIVER (CXGB4)
 -M:    Hariprasad S <hariprasad@chelsio.com>
 +M:    Ganesh Goudar <ganeshgr@chelsio.com>
  L:    netdev@vger.kernel.org
  W:    http://www.chelsio.com
  S:    Supported
@@@ -4106,24 -4112,18 +4106,24 @@@ F:   drivers/gpu/drm/bridge
  
  DRM DRIVER FOR BOCHS VIRTUAL GPU
  M:    Gerd Hoffmann <kraxel@redhat.com>
 -S:    Odd Fixes
 +L:    virtualization@lists.linux-foundation.org
 +T:    git git://git.kraxel.org/linux drm-qemu
 +S:    Maintained
  F:    drivers/gpu/drm/bochs/
  
  DRM DRIVER FOR QEMU'S CIRRUS DEVICE
  M:    Dave Airlie <airlied@redhat.com>
 -S:    Odd Fixes
 +M:    Gerd Hoffmann <kraxel@redhat.com>
 +L:    virtualization@lists.linux-foundation.org
 +T:    git git://git.kraxel.org/linux drm-qemu
 +S:    Obsolete
 +W:    https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
  F:    drivers/gpu/drm/cirrus/
  
  RADEON and AMDGPU DRM DRIVERS
  M:    Alex Deucher <alexander.deucher@amd.com>
  M:    Christian König <christian.koenig@amd.com>
 -L:    dri-devel@lists.freedesktop.org
 +L:    amd-gfx@lists.freedesktop.org
  T:    git git://people.freedesktop.org/~agd5f/linux
  S:    Supported
  F:    drivers/gpu/drm/radeon/
@@@ -4159,7 -4159,7 +4159,7 @@@ F:      Documentation/gpu/i915.rs
  INTEL GVT-g DRIVERS (Intel GPU Virtualization)
  M:      Zhenyu Wang <zhenyuw@linux.intel.com>
  M:      Zhi Wang <zhi.a.wang@intel.com>
 -L:      igvt-g-dev@lists.01.org
 +L:      intel-gvt-dev@lists.freedesktop.org
  L:      intel-gfx@lists.freedesktop.org
  W:      https://01.org/igvt-g
  T:      git https://github.com/01org/gvt-linux.git
@@@ -4310,10 -4310,7 +4310,10 @@@ F:    Documentation/devicetree/bindings/di
  
  DRM DRIVER FOR QXL VIRTUAL GPU
  M:    Dave Airlie <airlied@redhat.com>
 -S:    Odd Fixes
 +M:    Gerd Hoffmann <kraxel@redhat.com>
 +L:    virtualization@lists.linux-foundation.org
 +T:    git git://git.kraxel.org/linux drm-qemu
 +S:    Maintained
  F:    drivers/gpu/drm/qxl/
  F:    include/uapi/drm/qxl_drm.h
  
@@@ -7715,10 -7712,8 +7715,10 @@@ F:    drivers/net/dsa/mv88e6xxx
  F:    Documentation/devicetree/bindings/net/dsa/marvell.txt
  
  MARVELL ARMADA DRM SUPPORT
 -M:    Russell King <rmk+kernel@armlinux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
 +T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-armada-devel
 +T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-armada-fixes
  F:    drivers/gpu/drm/armada/
  F:    include/uapi/drm/armada_drm.h
  F:    Documentation/devicetree/bindings/display/armada/
@@@ -8190,15 -8185,6 +8190,15 @@@ S:    Maintaine
  F:    drivers/tty/serial/atmel_serial.c
  F:    include/linux/atmel_serial.h
  
 +MICROCHIP / ATMEL DMA DRIVER
 +M:    Ludovic Desroches <ludovic.desroches@microchip.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    dmaengine@vger.kernel.org
 +S:    Supported
 +F:    drivers/dma/at_hdmac.c
 +F:    drivers/dma/at_hdmac_regs.h
 +F:    include/linux/platform_data/dma-atmel.h
 +
  MICROCHIP / ATMEL ISC DRIVER
  M:    Songjun Wu <songjun.wu@microchip.com>
  L:    linux-media@vger.kernel.org
@@@ -8923,10 -8909,8 +8923,10 @@@ S:    Supporte
  F:    drivers/nfc/nxp-nci
  
  NXP TDA998X DRM DRIVER
 -M:    Russell King <rmk+kernel@armlinux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Supported
 +T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-tda998x-devel
 +T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-tda998x-fixes
  F:    drivers/gpu/drm/i2c/tda998x_drv.c
  F:    include/drm/i2c/tda998x.h
  
@@@ -9973,13 -9957,6 +9973,13 @@@ L:    linuxppc-dev@lists.ozlabs.or
  S:    Maintained
  F:    drivers/block/ps3vram.c
  
 +PSAMPLE PACKET SAMPLING SUPPORT:
 +M:    Yotam Gigi <yotamg@mellanox.com>
 +S:    Maintained
 +F:    net/psample
 +F:    include/net/psample.h
 +F:    include/uapi/linux/psample.h
 +
  PSTORE FILESYSTEM
  M:    Anton Vorontsov <anton@enomsg.org>
  M:    Colin Cross <ccross@android.com>
@@@ -10607,7 -10584,7 +10607,7 @@@ F:   drivers/net/wireless/realtek/rtlwifi
  F:    drivers/net/wireless/realtek/rtlwifi/rtl8192ce/
  
  RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
- M:    Jes Sorensen <Jes.Sorensen@redhat.com>
+ M:    Jes Sorensen <Jes.Sorensen@gmail.com>
  L:    linux-wireless@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel
  S:    Maintained
@@@ -10888,6 -10865,13 +10888,6 @@@ F:  include/linux/dma/dw.
  F:    include/linux/platform_data/dma-dw.h
  F:    drivers/dma/dw/
  
 -SYNOPSYS DESIGNWARE ETHERNET QOS 4.10a driver
 -M: Lars Persson <lars.persson@axis.com>
 -L: netdev@vger.kernel.org
 -S: Supported
 -F: Documentation/devicetree/bindings/net/snps,dwc-qos-ethernet.txt
 -F: drivers/net/ethernet/synopsys/dwc_eth_qos.c
 -
  SYNOPSYS DESIGNWARE I2C DRIVER
  M:    Jarkko Nikula <jarkko.nikula@linux.intel.com>
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
@@@ -13121,7 -13105,6 +13121,7 @@@ M:   David Airlie <airlied@linux.ie
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    dri-devel@lists.freedesktop.org
  L:    virtualization@lists.linux-foundation.org
 +T:    git git://git.kraxel.org/linux drm-qemu
  S:    Maintained
  F:    drivers/gpu/drm/virtio/
  F:    include/uapi/linux/virtio_gpu.h
@@@ -13473,7 -13456,6 +13473,7 @@@ F:   arch/x86
  
  X86 PLATFORM DRIVERS
  M:    Darren Hart <dvhart@infradead.org>
 +M:    Andy Shevchenko <andy@infradead.org>
  L:    platform-driver-x86@vger.kernel.org
  T:    git git://git.infradead.org/users/dvhart/linux-platform-drivers-x86.git
  S:    Maintained
@@@ -13645,7 -13627,6 +13645,7 @@@ F:   drivers/net/hamradio/z8530.
  
  ZBUD COMPRESSED PAGE ALLOCATOR
  M:    Seth Jennings <sjenning@redhat.com>
 +M:    Dan Streetman <ddstreet@ieee.org>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    mm/zbud.c
@@@ -13701,7 -13682,6 +13701,7 @@@ F:   Documentation/vm/zsmalloc.tx
  
  ZSWAP COMPRESSED SWAP CACHING
  M:    Seth Jennings <sjenning@redhat.com>
 +M:    Dan Streetman <ddstreet@ieee.org>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    mm/zswap.c
@@@ -702,6 -702,10 +702,10 @@@ static void ath10k_htt_rx_h_rates(struc
                /* 80MHZ */
                case 2:
                        status->vht_flag |= RX_VHT_FLAG_80MHZ;
+                       break;
+               case 3:
+                       status->vht_flag |= RX_VHT_FLAG_160MHZ;
+                       break;
                }
  
                status->flag |= RX_FLAG_VHT;
@@@ -926,7 -930,7 +930,7 @@@ static void ath10k_process_rx(struct at
        *status = *rx_status;
  
        ath10k_dbg(ar, ATH10K_DBG_DATA,
-                  "rx skb %pK len %u peer %pM %s %s sn %u %s%s%s%s%s %srate_idx %u vht_nss %u freq %u band %u flag 0x%llx fcs-err %i mic-err %i amsdu-more %i\n",
+                  "rx skb %pK len %u peer %pM %s %s sn %u %s%s%s%s%s%s %srate_idx %u vht_nss %u freq %u band %u flag 0x%llx fcs-err %i mic-err %i amsdu-more %i\n",
                   skb,
                   skb->len,
                   ieee80211_get_SA(hdr),
                   status->flag & RX_FLAG_VHT ? "vht" : "",
                   status->flag & RX_FLAG_40MHZ ? "40" : "",
                   status->vht_flag & RX_VHT_FLAG_80MHZ ? "80" : "",
+                  status->vht_flag & RX_VHT_FLAG_160MHZ ? "160" : "",
                   status->flag & RX_FLAG_SHORT_GI ? "sgi " : "",
                   status->rate_idx,
                   status->vht_nss,
@@@ -2231,6 -2236,8 +2236,8 @@@ ath10k_update_per_peer_tx_stats(struct 
                return;
        }
  
+       memset(&arsta->txrate, 0, sizeof(arsta->txrate));
        if (txrate.flags == WMI_RATE_PREAMBLE_CCK ||
            txrate.flags == WMI_RATE_PREAMBLE_OFDM) {
                rate = ATH10K_HW_LEGACY_RATE(peer_stats->ratecode);
                rate *= 10;
                if (rate == 60 && txrate.flags == WMI_RATE_PREAMBLE_CCK)
                        rate = rate - 5;
-               arsta->txrate.legacy = rate * 10;
+               arsta->txrate.legacy = rate;
        } else if (txrate.flags == WMI_RATE_PREAMBLE_HT) {
                arsta->txrate.flags = RATE_INFO_FLAGS_MCS;
                arsta->txrate.mcs = txrate.mcs;
@@@ -2451,7 -2458,8 +2458,7 @@@ bool ath10k_htt_t2h_msg_handler(struct 
                u32 phymode = __le32_to_cpu(resp->chan_change.phymode);
                u32 freq = __le32_to_cpu(resp->chan_change.freq);
  
 -              ar->tgt_oper_chan =
 -                      __ieee80211_get_channel(ar->hw->wiphy, freq);
 +              ar->tgt_oper_chan = ieee80211_get_channel(ar->hw->wiphy, freq);
                ath10k_dbg(ar, ATH10K_DBG_HTT,
                           "htt chan change freq %u phymode %s\n",
                           freq, ath10k_wmi_phymode_str(phymode));
@@@ -896,7 -896,7 +896,7 @@@ static int ath10k_pci_diag_read_mem(str
         */
        alloc_nbytes = min_t(unsigned int, nbytes, DIAG_TRANSFER_LIMIT);
  
-       data_buf = (unsigned char *)dma_alloc_coherent(ar->dev,
+       data_buf = (unsigned char *)dma_zalloc_coherent(ar->dev,
                                                       alloc_nbytes,
                                                       &ce_data_base,
                                                       GFP_ATOMIC);
                ret = -ENOMEM;
                goto done;
        }
-       memset(data_buf, 0, alloc_nbytes);
  
        remaining_bytes = nbytes;
        ce_data = ce_data_base;
@@@ -1474,6 -1473,7 +1473,7 @@@ static void ath10k_pci_fw_crashed_dump(
        ath10k_err(ar, "firmware crashed! (uuid %s)\n", uuid);
        ath10k_print_driver_info(ar);
        ath10k_pci_dump_registers(ar, crash_data);
+       ath10k_ce_dump_registers(ar, crash_data);
  
        spin_unlock_bh(&ar->data_lock);
  
@@@ -1937,7 -1937,7 +1937,7 @@@ static int ath10k_pci_wake_target_cpu(s
  {
        u32 addr, val;
  
-       addr = SOC_CORE_BASE_ADDRESS | CORE_CTRL_ADDRESS;
+       addr = SOC_CORE_BASE_ADDRESS + CORE_CTRL_ADDRESS;
        val = ath10k_pci_read32(ar, addr);
        val |= CORE_CTRL_CPU_INTR_MASK;
        ath10k_pci_write32(ar, addr, val);
@@@ -2799,7 -2799,7 +2799,7 @@@ static int ath10k_pci_napi_poll(struct 
        done = ath10k_htt_txrx_compl_task(ar, budget);
  
        if (done < budget) {
 -              napi_complete(ctx);
 +              napi_complete_done(ctx, done);
                /* In case of MSI, it is possible that interrupts are received
                 * while NAPI poll is inprogress. So pending interrupts that are
                 * received after processing all copy engine pipes by NAPI poll
@@@ -1,5 -1,5 +1,5 @@@
  /*
-  * Copyright (c) 2012-2016 Qualcomm Atheros, Inc.
+  * Copyright (c) 2012-2017 Qualcomm Atheros, Inc.
   *
   * Permission to use, copy, modify, and/or distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
@@@ -22,10 -22,11 +22,11 @@@ static int wil_open(struct net_device *
  {
        struct wil6210_priv *wil = ndev_to_wil(ndev);
  
-       wil_dbg_misc(wil, "%s()\n", __func__);
+       wil_dbg_misc(wil, "open\n");
  
-       if (debug_fw) {
-               wil_err(wil, "%s() while in debug_fw mode\n", __func__);
+       if (debug_fw ||
+           test_bit(WMI_FW_CAPABILITY_WMI_ONLY, wil->fw_capabilities)) {
+               wil_err(wil, "while in debug_fw or wmi_only mode\n");
                return -EINVAL;
        }
  
@@@ -36,7 -37,7 +37,7 @@@ static int wil_stop(struct net_device *
  {
        struct wil6210_priv *wil = ndev_to_wil(ndev);
  
-       wil_dbg_misc(wil, "%s()\n", __func__);
+       wil_dbg_misc(wil, "stop\n");
  
        return wil_down(wil);
  }
@@@ -68,7 -69,7 +69,7 @@@ static int wil6210_netdev_poll_rx(struc
        done = budget - quota;
  
        if (done < budget) {
 -              napi_complete(napi);
 +              napi_complete_done(napi, done);
                wil6210_unmask_irq_rx(wil);
                wil_dbg_txrx(wil, "NAPI RX complete\n");
        }
@@@ -132,7 -133,7 +133,7 @@@ void *wil_if_alloc(struct device *dev
        wil->wdev = wdev;
        wil->radio_wdev = wdev;
  
-       wil_dbg_misc(wil, "%s()\n", __func__);
+       wil_dbg_misc(wil, "if_alloc\n");
  
        rc = wil_priv_init(wil);
        if (rc) {
@@@ -179,7 -180,7 +180,7 @@@ void wil_if_free(struct wil6210_priv *w
  {
        struct net_device *ndev = wil_to_ndev(wil);
  
-       wil_dbg_misc(wil, "%s()\n", __func__);
+       wil_dbg_misc(wil, "if_free\n");
  
        if (!ndev)
                return;
@@@ -234,7 -235,7 +235,7 @@@ void wil_if_remove(struct wil6210_priv 
        struct net_device *ndev = wil_to_ndev(wil);
        struct wireless_dev *wdev = wil_to_wdev(wil);
  
-       wil_dbg_misc(wil, "%s()\n", __func__);
+       wil_dbg_misc(wil, "if_remove\n");
  
        unregister_netdev(ndev);
        wiphy_unregister(wdev->wiphy);
@@@ -818,12 -818,30 +818,30 @@@ static void rtl_usb_stop(struct ieee802
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
        struct rtl_usb *rtlusb = rtl_usbdev(rtl_usbpriv(hw));
+       struct urb *urb;
  
        /* should after adapter start and interrupt enable. */
        set_hal_stop(rtlhal);
        cancel_work_sync(&rtlpriv->works.fill_h2c_cmd);
        /* Enable software */
        SET_USB_STOP(rtlusb);
+       /* free pre-allocated URBs from rtl_usb_start() */
+       usb_kill_anchored_urbs(&rtlusb->rx_submitted);
+       tasklet_kill(&rtlusb->rx_work_tasklet);
+       cancel_work_sync(&rtlpriv->works.lps_change_work);
+       flush_workqueue(rtlpriv->works.rtl_wq);
+       skb_queue_purge(&rtlusb->rx_queue);
+       while ((urb = usb_get_from_anchor(&rtlusb->rx_cleanup_urbs))) {
+               usb_free_coherent(urb->dev, urb->transfer_buffer_length,
+                               urb->transfer_buffer, urb->transfer_dma);
+               usb_free_urb(urb);
+       }
        rtlpriv->cfg->ops->hw_disable(hw);
  }
  
@@@ -1047,7 -1065,6 +1065,7 @@@ int rtl_usb_probe(struct usb_interface 
                return -ENOMEM;
        }
        rtlpriv = hw->priv;
 +      rtlpriv->hw = hw;
        rtlpriv->usb_data = kzalloc(RTL_USB_MAX_RX_COUNT * sizeof(u32),
                                    GFP_KERNEL);
        if (!rtlpriv->usb_data)
        rtlpriv->rtlhal.interface = INTF_USB;
        rtlpriv->cfg = rtl_hal_cfg;
        rtlpriv->intf_ops = &rtl_usb_ops;
-       rtl_dbgp_flag_init(hw);
        /* Init IO handler */
        _rtl_usb_io_handler_init(&udev->dev, hw);
        rtlpriv->cfg->ops->read_chip_version(hw);