28 Feb, 2018

31 commits

  • Attempting to build ssb.ko with CONFIG_SSB_DRIVER_PCICORE=y results in
    a build error due to use of symbols not exported from vmlinux:

    ERROR: "pcibios_enable_device" [drivers/ssb/ssb.ko] undefined!
    ERROR: "register_pci_controller" [drivers/ssb/ssb.ko] undefined!
    make[1]: *** [scripts/Makefile.modpost:92: __modpost] Error 1

    To prevent this, don't allow the host mode feature to be built if
    CONFIG_SSB=m

    Signed-off-by: Matt Redfearn
    Signed-off-by: Kalle Valo

    Matt Redfearn
     
  • In this laptop we have the following PCI device:
    02:00.0 Network controller [0280]: Broadcom Limited BCM43142 802.11b/g/n [14e4:4365] (rev 01)
    Subsystem: Hewlett-Packard Company BCM43142 802.11b/g/n [103c:804a]
    [...]
    Region 0: Memory at 91000000 (64-bit, non-prefetchable) [size=32K]
    [...]

    With this patch, we can now see its WiFi chip:
    bcma: bus0: Found chip with id 43142, rev 0x01 and package 0x08
    bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x28, class 0x0)
    bcma: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x21, class 0x0)
    bcma: bus0: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 0x16, class 0x0)
    bcma: bus0: Core 3 found: UNKNOWN (manuf 0x43B, id 0x368, rev 0x00, class 0x0)
    bcma: bus0: Found rev 15 PMU (capabilities 0x518C5E0F)
    bcma: bus0: SPROM offset 0x840
    bcma: bus0: Found SPROM revision 10
    bcma: bus0: Workarounds unknown or not needed for device 0xA886
    bcma: bus0: Bus registered

    But it not yet supported by brcmsmac so it won't work for now:
    brcmsmac bcma0:1: brcms_b_attach wl0: vendor 0x14e4 device 0x4365
    brcmsmac: unknown device id 4365

    Signed-off-by: Denis 'GNUtoo' Carikli
    Signed-off-by: Kalle Valo

    Denis 'GNUtoo' Carikli
     
  • This was detected with static analysis using Coccinelle:

    ./drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b1ant.c:1107:5-18:
    duplicated argument to && or ||

    Reported-by: Colin Ian King
    Signed-off-by: Ping-Ke Shih
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • Bit pattern IEEE80211_CHAN_NO_IR is being bit-wise or'd twice;
    remove the redundant 2nd IEEE80211_CHAN_NO_IR

    Signed-off-by: Colin Ian King
    Signed-off-by: Kalle Valo

    Colin Ian King
     
  • nl80211 already allows specifying 48 bytes, but brcmfmac
    only supports 32. Reject keys that are too long.

    Signed-off-by: Johannes Berg
    Acked-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Johannes Berg
     
  • In brcmf_sdio_firmware_callback() two pointer variables were used
    pointing to the same construct. Get rid of sdiodev variable.

    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • Reducing the number of trace level messages in sdio code giving
    them sdio log level instead.

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • No longer needed to call this in bus layer so make it static and call
    it in the last phase of brcmf_attach() instead.

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • Moving the function in preparation of subsequent patch.

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • By calling brcmf_usb_up() during brcmf_bus_preinit() it does not need
    to be called in brcmf_usb_bus_setup().

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • Now we can move brcmf_attach() until after the firmware has been downloaded
    to the device. Make the call just before brcmf_bus_started().

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • Allocate the control rx buffer needed for firmware control interface
    during brcmf_sdio_bus_preinit(). This relies on common layer setting
    struct brcmf_bus::maxctl during brcmf_attach(). By moving the allocation
    we can move brcmf_attach() in subsequent change.

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • Moving the brcmf_bus_preinit() call allows the bus code to do some
    required initialization before handling firmware control messages.

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Kalle Valo

    Arend Van Spriel
     
  • Multiple interfaces with same bss type could affect each other if
    they are sharing the same mac address. In this patch, different
    mac address is assigned to new interface which have same bss type
    with exist interfaces.

    Signed-off-by: Xinming Hu
    Signed-off-by: Kalle Valo

    Xinming Hu
     
  • In pci probe() function start firmware loading, protocol handshake
    and driver core initialization, and not wait for completion.

    Signed-off-by: Sergei Maksimenko
    Signed-off-by: Kalle Valo

    Sergey Matyukevich
     
  • This patch enables rmmod/insmod for qtnfmac kernel modules:
    - do not 'pin' pci device in order to disable it on module unload
    - implement card reset procedure
    - restore PCI bar addresses for restarted wireless card

    Signed-off-by: Sergei Maksimenko
    Signed-off-by: Sergey Matyukevich
    Signed-off-by: Kalle Valo

    Sergei Maksimenko
     
  • Add missing PCI unmap for Tx buffers and release all buffers explicitly.
    Managed release using devm_add_action is not suitable for qtnfmac Tx/Rx
    data buffers. The reason is in ordering and dependencies: buffers
    should be released after transmission is stopped but before PCI
    device resources and DMA allocations are released.

    Signed-off-by: Sergey Matyukevich
    Signed-off-by: Kalle Valo

    Sergey Matyukevich
     
  • gcc-8 points out that source and destination of the memcpy() are
    always the same pointer, so the effect of memcpy() is undefined
    here (its arguments must not overlap):

    drivers/net/wireless/realtek/rtlwifi/rtl8192cu/trx.c: In function '_rtl_rx_process':
    drivers/net/wireless/realtek/rtlwifi/rtl8192cu/trx.c:430:2: error: 'memcpy' source argument is the same as destination [-Werror=restrict]

    Most likely this is harmless, but it's easy to just remove the
    line and get rid of the warning.

    Signed-off-by: Arnd Bergmann
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Arnd Bergmann
     
  • In _rtl92c_get_txpower_writeval_by_regulatory() the variable writeVal
    is assigned to itself in an if ... else statement, apparently only to
    document that the branch condition is handled and that a previously read
    value should be returned unmodified. The self-assignment causes clang to
    raise the following warning:

    drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rf.c:304:13:
    error: explicitly assigning value of variable of type 'u32'
    (aka 'unsigned int') to itself [-Werror,-Wself-assign]
    writeVal = writeVal;

    Delete the branch with the self-assignment.

    Signed-off-by: Matthias Kaehlcke
    Acked-by: Larry Finger
    Reviewed-by: Guenter Roeck
    Signed-off-by: Kalle Valo

    Matthias Kaehlcke
     
  • Pointer q is initialized and then almost immediately afterwards being
    re-assigned the same value. Remove the second redundant assignment.

    Cleans up clang warning:
    drivers/net/wireless/zydas/zd1211rw/zd_mac.c:503:23: warning: Value
    stored to 'q' during its initialization is never read

    Signed-off-by: Colin Ian King
    Signed-off-by: Kalle Valo

    Colin Ian King
     
  • The wifi only btcoex is used to solo card (without BT), and it is also
    useful to exclude the interference with BT to make debug easier.
    There are only four ops for wifi only btcoex to initialze antenna and
    switch the settings while band is changed.

    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • Tell wifi and BT firmware the default port ID to set multiports' state
    properly, but only 8822be needs this function currently.

    Signed-off-by: Ping-Ke Shih
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • The new component phydm need to access efuse content, so we prepare ops
    for reference.

    Signed-off-by: Tsang-Shian Lin
    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • Add rf mask definition (BIT 0, BIT 1, BIT 2, ...) that is different from
    rf path definition (0, 1, 2, ...), and then combinations of rf path are
    possible.

    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • NSS is a argument of highest rate in RC, and it occupies bit 4-7 so use
    ieee80211_rate_set_vht() to fill the values. Since it got correct rate
    index, we don't need to check chips to assign NSS in set function anymore.

    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • Add comments to make it to be easier to understand, and add compile time
    assertions.

    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • In older design, the TX power is grouped into rate section (smaller array
    size), but new design groups them into rate (larger array size). Thus,
    we extend the size for both cases, and add compile time assertion.

    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • In new design, SW_DEFINE[1:0] of tx desc are used by firmware, and the TX
    report only contains SW_DEFINE[7:0]. To satisfy with all cases, driver uses
    SW_DEFINE[7:2] as sequence number.
    Besides, the format of tx report have been changed, so a new flag
    RTL_SPEC_EXT_C2H is used to access report.

    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • We are going to add 8822be, which is a VHT 2x2 wifi chip, so add VHT flag
    to replace enumeration of chips.

    Signed-off-by: Ping-Ke Shih
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • Enable the mac80211 fast-tx feature, since our driver already support
    hw_flags required by fast-tx and is able to let mac80211 stack to transmit
    packet through fast-xmit path.

    Signed-off-by: Yan-Hsuan Chuang
    Signed-off-by: Ping-Ke Shih
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Ping-Ke Shih
     
  • Return statements in functions returning bool should use
    true/false instead of 1/0.

    This issue was detected with the help of Coccinelle.

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Kalle Valo

    Gustavo A. R. Silva
     

27 Feb, 2018

5 commits

  • After checking all possible call chains to bcma_pmu_resources_init() here,
    my tool finds that this function is never called in atomic context,
    namely never in an interrupt handler or holding a spinlock.
    Thus mdelay can be replaced with usleep_range to avoid busy wait.

    This is found by a static analysis tool named DCNS written by myself.

    Signed-off-by: Jia-Ju Bai
    Acked-by: Larry Finger
    Signed-off-by: Kalle Valo

    Jia-Ju Bai
     
  • In case there is no valid MAC address kernel generates random one. This
    patch propagate this generated MAC address back to NVS data which will be
    uploaded to wl1251 chip. So HW would have same MAC address as linux kernel
    uses.

    This should not change any functionality, but it is better to tell wl1251
    correct mac address since beginning of chip usage.

    Signed-off-by: Pali Rohár
    Signed-off-by: Kalle Valo

    Pali Rohár
     
  • This patch implements parsing MAC address from NVS data which are sent to
    wl1251 chip. Calibration NVS data could contain valid MAC address and it
    will be used instead of randomly generated one.

    This patch also moves code for requesting NVS data from userspace to driver
    initialization code to make sure that NVS data will be there at time when
    permanent MAC address is needed.

    Calibration NVS data for wl1251 are device specific. Every device with
    wl1251 chip should have been calibrated in factory and needs to provide own
    calibration data.

    Default example file wl1251-nvs.bin, found in linux-firmware repository,
    contains MAC address 00:00:20:07:03:09. So this MAC address is marked as
    invalid as it is not real device specific address, just example one.

    Format of calibration NVS data can be found at:
    http://notaz.gp2x.de/misc/pnd/wl1251/nvs_map.txt

    Signed-off-by: Pali Rohár
    Signed-off-by: Kalle Valo

    Pali Rohár
     
  • Before this patch, driver generated random MAC address every time it was
    initialized. After that random MAC address could be overwritten with fixed
    one, if provided.

    This patch changes order. First it tries to read fixed MAC address and if
    it fails then driver generates random MAC address.

    Signed-off-by: Pali Rohár
    Acked-by: Pavel Machek
    Signed-off-by: Kalle Valo

    Pali Rohár
     
  • If kmemdup fails, then wl->nvs_len will contain invalid non-zero size.

    Signed-off-by: Pali Rohár
    Acked-by: Pavel Machek
    Signed-off-by: Kalle Valo

    Pali Rohár
     

24 Feb, 2018

4 commits

  • David S. Miller
     
  • Pull networking fixes from David Miller:

    1) Fix TTL offset calculation in mac80211 mesh code, from Peter Oh.

    2) Fix races with procfs in ipt_CLUSTERIP, from Cong Wang.

    3) Memory leak fix in lpm_trie BPF map code, from Yonghong Song.

    4) Need to use GFP_ATOMIC in BPF cpumap allocations, from Jason Wang.

    5) Fix potential deadlocks in netfilter getsockopt() code paths, from
    Paolo Abeni.

    6) Netfilter stackpointer size checks really are needed to validate
    user input, from Florian Westphal.

    7) Missing timer init in x_tables, from Paolo Abeni.

    8) Don't use WQ_MEM_RECLAIM in mac80211 hwsim, from Johannes Berg.

    9) When an ibmvnic device is brought down then back up again, it can be
    sent queue entries from a previous session, handle this properly
    instead of crashing. From Thomas Falcon.

    10) Fix TCP checksum on LRO buffers in mlx5e, from Gal Pressman.

    11) When we are dumping filters in cls_api, the output SKB is empty, and
    the filter we are dumping is too large for the space in the SKB, we
    should return -EMSGSIZE like other netlink dump operations do.
    Otherwise userland has no signal that is needs to increase the size
    of its read buffer. From Roman Kapl.

    12) Several XDP fixes for virtio_net, from Jesper Dangaard Brouer.

    13) Module refcount leak in netlink when a dump start fails, from Jason
    Donenfeld.

    14) Handle sub-optimal GSO sizes better in TCP BBR congestion control,
    from Eric Dumazet.

    15) Releasing bpf per-cpu arraymaps can take a long time, add a
    condtional scheduling point. From Eric Dumazet.

    16) Implement retpolines for tail calls in x64 and arm64 bpf JITs. From
    Daniel Borkmann.

    17) Fix page leak in gianfar driver, from Andy Spencer.

    18) Missed clearing of estimator scratch buffer, from Eric Dumazet.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (76 commits)
    net_sched: gen_estimator: fix broken estimators based on percpu stats
    gianfar: simplify FCS handling and fix memory leak
    ipv6 sit: work around bogus gcc-8 -Wrestrict warning
    macvlan: fix use-after-free in macvlan_common_newlink()
    bpf, arm64: fix out of bounds access in tail call
    bpf, x64: implement retpoline for tail call
    rxrpc: Fix send in rxrpc_send_data_packet()
    net: aquantia: Fix error handling in aq_pci_probe()
    bpf: fix rcu lockdep warning for lpm_trie map_free callback
    bpf: add schedule points in percpu arrays management
    regulatory: add NUL to request alpha2
    ibmvnic: Fix early release of login buffer
    net/smc9194: Remove bogus CONFIG_MAC reference
    net: ipv4: Set addr_type in hash_keys for forwarded case
    tcp_bbr: better deal with suboptimal GSO
    smsc75xx: fix smsc75xx_set_features()
    netlink: put module reference if dump start fails
    selftests/bpf/test_maps: exit child process without error in ENOMEM case
    selftests/bpf: update gitignore with test_libbpf_open
    selftests/bpf: tcpbpf_kern: use in6_* macros from glibc
    ..

    Linus Torvalds
     
  • …jmorris/linux-security

    Pull security subsystem fixes from James Morris:

    - keys fixes via David Howells:
    "A collection of fixes for Linux keyrings, mostly thanks to Eric
    Biggers:

    - Fix some PKCS#7 verification issues.

    - Fix handling of unsupported crypto in X.509.

    - Fix too-large allocation in big_key"

    - Seccomp updates via Kees Cook:
    "These are fixes for the get_metadata interface that landed during
    -rc1. While the new selftest is strictly not a bug fix, I think
    it's in the same spirit of avoiding bugs"

    - an IMA build fix from Randy Dunlap

    * 'fixes-v4.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
    integrity/security: fix digsig.c build error with header file
    KEYS: Use individual pages in big_key for crypto buffers
    X.509: fix NULL dereference when restricting key with unsupported_sig
    X.509: fix BUG_ON() when hash algorithm is unsupported
    PKCS#7: fix direct verification of SignerInfo signature
    PKCS#7: fix certificate blacklisting
    PKCS#7: fix certificate chain verification
    seccomp: add a selftest for get_metadata
    ptrace, seccomp: tweak get_metadata behavior slightly
    seccomp, ptrace: switch get_metadata types to arch independent

    Linus Torvalds
     
  • Pull arm64 fixes from Catalin Marinas:
    "arm64 and perf fixes:

    - build error when accessing MPIDR_HWID_BITMASK from .S

    - fix CTR_EL0 field definitions

    - remove/disable some kernel messages on user faults (unhandled
    signals, unimplemented syscalls)

    - fix kernel page fault in unwind_frame() with function graph tracing

    - fix perf sleeping while atomic errors when booting with ACPI"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: fix unwind_frame() for filtered out fn for function graph tracing
    arm64: Enforce BBM for huge IO/VMAP mappings
    arm64: perf: correct PMUVer probing
    arm_pmu: acpi: request IRQs up-front
    arm_pmu: note IRQs and PMUs per-cpu
    arm_pmu: explicitly enable/disable SPIs at hotplug
    arm_pmu: acpi: check for mismatched PPIs
    arm_pmu: add armpmu_alloc_atomic()
    arm_pmu: fold platform helpers into platform code
    arm_pmu: kill arm_pmu_platdata
    ARM: ux500: remove PMU IRQ bouncer
    arm64: __show_regs: Only resolve kernel symbols when running at EL1
    arm64: Remove unimplemented syscall log message
    arm64: Disable unhandled signal log messages by default
    arm64: cpufeature: Fix CTR_EL0 field definitions
    arm64: uaccess: Formalise types for access_ok()
    arm64: Fix compilation error while accessing MPIDR_HWID_BITMASK from .S files

    Linus Torvalds