21 Nov, 2017

1 commit

  • When deleting a station or otherwise tearing down all aggregation
    sessions, make sure to delete requested but not yet started ones,
    to avoid the following scenario:

    * session is requested, added to tid_start_tx[]
    * ieee80211_ba_session_work() runs, gets past BLOCK_BA check
    * ieee80211_sta_tear_down_BA_sessions() runs, locks &sta->ampdu_mlme.mtx,
    e.g. while deleting the station - deleting all active sessions
    * ieee80211_ba_session_work() continues since tear down flushes it, and
    calls ieee80211_tx_ba_session_handle_start() for the new session, arms
    the timer for it
    * station deletion continues to __cleanup_single_sta() and frees the
    session struct, while the timer is armed

    Reported-by: Fengguang Wu
    Signed-off-by: Johannes Berg

    Johannes Berg
     

20 Nov, 2017

2 commits

  • In preparation for unconditionally passing the struct timer_list pointer to
    all timer callbacks, switch to using the new timer_setup() and from_timer()
    to pass the timer pointer explicitly.

    This removes the tid mapping array and expands the tid structures to
    add a pointer back to the station, along with the tid index itself.

    Cc: Johannes Berg
    Cc: "David S. Miller"
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Signed-off-by: Kees Cook
    [switch tid variables to u8, the valid range is 0-15 at most,
    initialize tid_tx->sta/tid properly]
    Signed-off-by: Johannes Berg

    Kees Cook
     
  • In preparation for unconditionally passing the struct timer_list pointer to
    all timer callbacks, switch to using the new timer_setup() and from_timer()
    to pass the timer pointer explicitly.

    Cc: Johannes Berg
    Cc: "David S. Miller"
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Signed-off-by: Kees Cook
    Signed-off-by: Johannes Berg

    Kees Cook
     

16 Nov, 2017

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    1) Maintain the TCP retransmit queue using an rbtree, with 1GB
    windows at 100Gb this really has become necessary. From Eric
    Dumazet.

    2) Multi-program support for cgroup+bpf, from Alexei Starovoitov.

    3) Perform broadcast flooding in hardware in mv88e6xxx, from Andrew
    Lunn.

    4) Add meter action support to openvswitch, from Andy Zhou.

    5) Add a data meta pointer for BPF accessible packets, from Daniel
    Borkmann.

    6) Namespace-ify almost all TCP sysctl knobs, from Eric Dumazet.

    7) Turn on Broadcom Tags in b53 driver, from Florian Fainelli.

    8) More work to move the RTNL mutex down, from Florian Westphal.

    9) Add 'bpftool' utility, to help with bpf program introspection.
    From Jakub Kicinski.

    10) Add new 'cpumap' type for XDP_REDIRECT action, from Jesper
    Dangaard Brouer.

    11) Support 'blocks' of transformations in the packet scheduler which
    can span multiple network devices, from Jiri Pirko.

    12) TC flower offload support in cxgb4, from Kumar Sanghvi.

    13) Priority based stream scheduler for SCTP, from Marcelo Ricardo
    Leitner.

    14) Thunderbolt networking driver, from Amir Levy and Mika Westerberg.

    15) Add RED qdisc offloadability, and use it in mlxsw driver. From
    Nogah Frankel.

    16) eBPF based device controller for cgroup v2, from Roman Gushchin.

    17) Add some fundamental tracepoints for TCP, from Song Liu.

    18) Remove garbage collection from ipv6 route layer, this is a
    significant accomplishment. From Wei Wang.

    19) Add multicast route offload support to mlxsw, from Yotam Gigi"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (2177 commits)
    tcp: highest_sack fix
    geneve: fix fill_info when link down
    bpf: fix lockdep splat
    net: cdc_ncm: GetNtbFormat endian fix
    openvswitch: meter: fix NULL pointer dereference in ovs_meter_cmd_reply_start
    netem: remove unnecessary 64 bit modulus
    netem: use 64 bit divide by rate
    tcp: Namespace-ify sysctl_tcp_default_congestion_control
    net: Protect iterations over net::fib_notifier_ops in fib_seq_sum()
    ipv6: set all.accept_dad to 0 by default
    uapi: fix linux/tls.h userspace compilation error
    usbnet: ipheth: prevent TX queue timeouts when device not ready
    vhost_net: conditionally enable tx polling
    uapi: fix linux/rxrpc.h userspace compilation errors
    net: stmmac: fix LPI transitioning for dwmac4
    atm: horizon: Fix irq release error
    net-sysfs: trigger netlink notification on ifalias change via sysfs
    openvswitch: Using kfree_rcu() to simplify the code
    openvswitch: Make local function ovs_nsh_key_attr_size() static
    openvswitch: Fix return value check in ovs_meter_cmd_features()
    ...

    Linus Torvalds
     

07 Nov, 2017

1 commit


04 Nov, 2017

1 commit


03 Nov, 2017

1 commit

  • …el/git/gregkh/driver-core

    Pull initial SPDX identifiers from Greg KH:
    "License cleanup: add SPDX license identifiers to some files

    Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the
    'GPL-2.0' SPDX license identifier. The SPDX identifier is a legally
    binding shorthand, which can be used instead of the full boiler plate
    text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart
    and Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset
    of the use cases:

    - file had no licensing information it it.

    - file was a */uapi/* one with no licensing information in it,

    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to
    license had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied
    to a file was done in a spreadsheet of side by side results from of
    the output of two independent scanners (ScanCode & Windriver)
    producing SPDX tag:value files created by Philippe Ombredanne.
    Philippe prepared the base worksheet, and did an initial spot review
    of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537
    files assessed. Kate Stewart did a file by file comparison of the
    scanner results in the spreadsheet to determine which SPDX license
    identifier(s) to be applied to the file. She confirmed any
    determination that was not immediately clear with lawyers working with
    the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:

    - Files considered eligible had to be source code files.

    - Make and config files were included as candidates if they contained
    >5 lines of source

    - File already had some variant of a license header in it (even if <5
    lines).

    All documentation files were explicitly excluded.

    The following heuristics were used to determine which SPDX license
    identifiers to apply.

    - when both scanners couldn't find any license traces, file was
    considered to have no license information in it, and the top level
    COPYING file license applied.

    For non */uapi/* files that summary was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 11139

    and resulted in the first patch in this series.

    If that file was a */uapi/* path one, it was "GPL-2.0 WITH
    Linux-syscall-note" otherwise it was "GPL-2.0". Results of that
    was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 WITH Linux-syscall-note 930

    and resulted in the second patch in this series.

    - if a file had some form of licensing information in it, and was one
    of the */uapi/* ones, it was denoted with the Linux-syscall-note if
    any GPL family license was found in the file or had no licensing in
    it (per prior point). Results summary:

    SPDX license identifier # files
    ---------------------------------------------------|------
    GPL-2.0 WITH Linux-syscall-note 270
    GPL-2.0+ WITH Linux-syscall-note 169
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
    LGPL-2.1+ WITH Linux-syscall-note 15
    GPL-1.0+ WITH Linux-syscall-note 14
    ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
    LGPL-2.0+ WITH Linux-syscall-note 4
    LGPL-2.1 WITH Linux-syscall-note 3
    ((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
    ((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1

    and that resulted in the third patch in this series.

    - when the two scanners agreed on the detected license(s), that
    became the concluded license(s).

    - when there was disagreement between the two scanners (one detected
    a license but the other didn't, or they both detected different
    licenses) a manual inspection of the file occurred.

    - In most cases a manual inspection of the information in the file
    resulted in a clear resolution of the license that should apply
    (and which scanner probably needed to revisit its heuristics).

    - When it was not immediately clear, the license identifier was
    confirmed with lawyers working with the Linux Foundation.

    - If there was any question as to the appropriate license identifier,
    the file was flagged for further research and to be revisited later
    in time.

    In total, over 70 hours of logged manual review was done on the
    spreadsheet to determine the SPDX license identifiers to apply to the
    source files by Kate, Philippe, Thomas and, in some cases,
    confirmation by lawyers working with the Linux Foundation.

    Kate also obtained a third independent scan of the 4.13 code base from
    FOSSology, and compared selected files where the other two scanners
    disagreed against that SPDX file, to see if there was new insights.
    The Windriver scanner is based on an older version of FOSSology in
    part, so they are related.

    Thomas did random spot checks in about 500 files from the spreadsheets
    for the uapi headers and agreed with SPDX license identifier in the
    files he inspected. For the non-uapi files Thomas did random spot
    checks in about 15000 files.

    In initial set of patches against 4.14-rc6, 3 files were found to have
    copy/paste license identifier errors, and have been fixed to reflect
    the correct identifier.

    Additionally Philippe spent 10 hours this week doing a detailed manual
    inspection and review of the 12,461 patched files from the initial
    patch version early this week with:

    - a full scancode scan run, collecting the matched texts, detected
    license ids and scores

    - reviewing anything where there was a license detected (about 500+
    files) to ensure that the applied SPDX license was correct

    - reviewing anything where there was no detection but the patch
    license was not GPL-2.0 WITH Linux-syscall-note to ensure that the
    applied SPDX license was correct

    This produced a worksheet with 20 files needing minor correction. This
    worksheet was then exported into 3 different .csv files for the
    different types of files to be modified.

    These .csv files were then reviewed by Greg. Thomas wrote a script to
    parse the csv files and add the proper SPDX tag to the file, in the
    format that the file expected. This script was further refined by Greg
    based on the output to detect more types of files automatically and to
    distinguish between header and source .c files (which need different
    comment types.) Finally Greg ran the script using the .csv files to
    generate the patches.

    Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
    Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

    * tag 'spdx_identifiers-4.14-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    License cleanup: add SPDX license identifier to uapi header files with a license
    License cleanup: add SPDX license identifier to uapi header files with no license
    License cleanup: add SPDX GPL-2.0 license identifier to files with no license

    Linus Torvalds
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

30 Oct, 2017

1 commit

  • Several conflicts here.

    NFP driver bug fix adding nfp_netdev_is_nfp_repr() check to
    nfp_fl_output() needed some adjustments because the code block is in
    an else block now.

    Parallel additions to net/pkt_cls.h and net/sch_generic.h

    A bug fix in __tcp_retransmit_skb() conflicted with some of
    the rbtree changes in net-next.

    The tc action RCU callback fixes in 'net' had some overlap with some
    of the recent tcf_block reworking.

    Signed-off-by: David S. Miller

    David S. Miller
     

25 Oct, 2017

2 commits

  • For the reinstall prevention, the code I had added compares the
    whole key. It turns out though that iwlwifi firmware doesn't
    provide the TKIP TX MIC key as it's not needed in client mode,
    and thus the comparison will always return false.

    For client mode, thus always zero out the TX MIC key part before
    doing the comparison in order to avoid accepting the reinstall
    of the key with identical encryption and RX MIC key, but not the
    same TX MIC key (since the supplicant provides the real one.)

    Fixes: fdf7cb4185b6 ("mac80211: accept key reinstall without changing anything")
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • …READ_ONCE()/WRITE_ONCE()

    Please do not apply this to mainline directly, instead please re-run the
    coccinelle script shown below and apply its output.

    For several reasons, it is desirable to use {READ,WRITE}_ONCE() in
    preference to ACCESS_ONCE(), and new code is expected to use one of the
    former. So far, there's been no reason to change most existing uses of
    ACCESS_ONCE(), as these aren't harmful, and changing them results in
    churn.

    However, for some features, the read/write distinction is critical to
    correct operation. To distinguish these cases, separate read/write
    accessors must be used. This patch migrates (most) remaining
    ACCESS_ONCE() instances to {READ,WRITE}_ONCE(), using the following
    coccinelle script:

    ----
    // Convert trivial ACCESS_ONCE() uses to equivalent READ_ONCE() and
    // WRITE_ONCE()

    // $ make coccicheck COCCI=/home/mark/once.cocci SPFLAGS="--include-headers" MODE=patch

    virtual patch

    @ depends on patch @
    expression E1, E2;
    @@

    - ACCESS_ONCE(E1) = E2
    + WRITE_ONCE(E1, E2)

    @ depends on patch @
    expression E;
    @@

    - ACCESS_ONCE(E)
    + READ_ONCE(E)
    ----

    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: davem@davemloft.net
    Cc: linux-arch@vger.kernel.org
    Cc: mpe@ellerman.id.au
    Cc: shuah@kernel.org
    Cc: snitzer@redhat.com
    Cc: thor.thayer@linux.intel.com
    Cc: tj@kernel.org
    Cc: viro@zeniv.linux.org.uk
    Cc: will.deacon@arm.com
    Link: http://lkml.kernel.org/r/1508792849-3115-19-git-send-email-paulmck@linux.vnet.ibm.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Mark Rutland
     

22 Oct, 2017

1 commit

  • There were quite a few overlapping sets of changes here.

    Daniel's bug fix for off-by-ones in the new BPF branch instructions,
    along with the added allowances for "data_end > ptr + x" forms
    collided with the metadata additions.

    Along with those three changes came veritifer test cases, which in
    their final form I tried to group together properly. If I had just
    trimmed GIT's conflict tags as-is, this would have split up the
    meta tests unnecessarily.

    In the socketmap code, a set of preemption disabling changes
    overlapped with the rename of bpf_compute_data_end() to
    bpf_compute_data_pointers().

    Changes were made to the mv88e6060.c driver set addr method
    which got removed in net-next.

    The hyperv transport socket layer had a locking change in 'net'
    which overlapped with a change of socket state macro usage
    in 'net-next'.

    Signed-off-by: David S. Miller

    David S. Miller
     

18 Oct, 2017

2 commits


16 Oct, 2017

1 commit

  • When a key is reinstalled we can reset the replay counters
    etc. which can lead to nonce reuse and/or replay detection
    being impossible, breaking security properties, as described
    in the "KRACK attacks".

    In particular, CVE-2017-13080 applies to GTK rekeying that
    happened in firmware while the host is in D3, with the second
    part of the attack being done after the host wakes up. In
    this case, the wpa_supplicant mitigation isn't sufficient
    since wpa_supplicant doesn't know the GTK material.

    In case this happens, simply silently accept the new key
    coming from userspace but don't take any action on it since
    it's the same key; this keeps the PN replay counters intact.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

13 Oct, 2017

1 commit

  • The code here (more or less accidentally) tracks the HT capability of
    the AP when connected, and we found at least one AP that erroneously
    toggles its 20/40 capability bit when changing between 20/40 MHz. The
    connection to the AP is then broken because we set the 40 MHz disable
    flag based on this, as soon as it switches to 20 MHz, but because the
    flag then changed, we disconnect.

    I'd be inclined to just ignore this issue, since we then reconnect
    while the AP is in 20 MHz mode and never use 40 MHz with it again,
    but this code is a bit strange anyway - we don't use the capabilities
    for anything else.

    Change the code to simply not track the HT capabilities at all, which
    assumes that the AP at least sets 20/40 capability when operating in
    40 MHz (or higher). If not, rate scaling might end up using only the
    narrower bandwidth.

    The new behaviour also mirrors what VHT does, where we only check the
    VHT operation.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

11 Oct, 2017

3 commits

  • Evidently this API is intended to be used to isolate against
    API changes, so use it instead of accessing ->authsize.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • When removing an AP VLAN interface, mac80211 currently purges
    the entire TXQ for the AP interface. Fix this by using the FQ
    API introduced in the previous patch to filter frames.

    Signed-off-by: Johannes Berg
    Acked-by: Toke Høiland-Jørgensen
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Currently, the aes_ccm.c and aes_gcm.c are almost line by line copy of
    each other. This patch reduce code redundancy by moving the code in these
    two files to crypto/aead_api.c to make it a higher level aead api. The
    file aes_ccm.c and aes_gcm.c are removed and all the functions there are
    now implemented in their headers using the newly added aead api.

    Signed-off-by: Xiang Gao
    Signed-off-by: Johannes Berg

    Xiang Gao
     

06 Oct, 2017

1 commit

  • In preparation for unconditionally passing the struct timer_list pointer to
    all timer callbacks, switch to using the new timer_setup() and from_timer()
    to pass the timer pointer explicitly. This requires adding a pointer back
    to the sta_info since container_of() can't resolve the sta_info.

    Cc: Johannes Berg
    Cc: "David S. Miller"
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: Thomas Gleixner
    Signed-off-by: Kees Cook
    Signed-off-by: Johannes Berg

    Kees Cook
     

02 Oct, 2017

2 commits

  • Patch fixes htmldocs build problem:

    Error(.//net/mac80211/sta_info.h:416): cannot understand prototype: 'STA_SLOW_THRESHOLD 6000 '

    Signed-off-by: Stanislaw Gruszka
    Signed-off-by: Johannes Berg

    Stanislaw Gruszka
     
  • Section 11.23.1 of 80211-2016 specification allows TDLS peers
    to operate on wider bandwidths though they are connected to a BSS
    which do not support wider bandwidth operations, provided both the
    peers advertise wider bandwidth capabilities.

    The existing logic considers the minimum of station's and AP's
    capability for bandwidth computation. The same logic applies for
    TDLS peers as well, this restricts operating on wider bandwidths
    over a TDLS link when the peers are connected to legacy APs.

    As an example, if 80Mhz VHT capable peers are connected to a 20Mhz
    5 GHz AP, then as per the existing logic TDLS operation will be
    restricted to 20Mhz.

    Address this problem by not considering BSS capability in bandwidth
    computation if the participating TDLS peers have wider bandwidth
    capability.

    Signed-off-by: Manikanta Pubbisetty
    [lots of wording/typo fixes]
    Signed-off-by: Johannes Berg

    Manikanta Pubbisetty
     

21 Sep, 2017

7 commits

  • Sometimes a station is added already in ASSOC state. For example,
    in AP mode, when a client station didn't get assoc resp and sends
    an assoc req again. If a station is inserted when its state is ASSOC
    or higher, the min chandef and allow_p2p_go_ps should be recalculated
    again after the insertion.

    Before this patch the recalculation happened only in sta_info_move_state
    which occurs before the insertion of the sta and thus even though
    it calls ieee80211_recalc_min_chandef/_p2p_go_ps_allowed functions,
    since sdata->local->sta_list is still empty at this point, it doesn't do
    anything.

    Signed-off-by: Gregory Greenman
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Gregory Greenman
     
  • This was created using the following spatch:
    @find@
    type S;
    expression M, M2;
    position p;
    @@
    offsetof(S, M) + sizeof(M2)@p

    @script:python@
    m << find.M;
    m2 << find.M2;
    @@
    if not m2.endswith('-> ' + m):
    cocci.include_match(False)

    @change@
    type find.S;
    expression find.M, find.M2;
    position find.p;
    @@
    -offsetof(S, M) + sizeof(M2)@p
    +offsetofend(S, M)

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Simplify the locking in ieee80211_sta_tear_down_BA_sessions() and
    lock sta->ampdu_mlme.mtx over the entire function instead of
    locking/unlocking it for each TID etc.

    Signed-off-by: Ilan Peer
    Signed-off-by: Johannes Berg

    Ilan peer
     
  • Add documentation to ieee80211_rx_ba_offl() function and, while at it,
    rename the bit argument to tid, for consistency.

    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Luca Coelho
     
  • One of OCE's optimizations is acception of broadcast probe responses.
    Accept broadcast probe responses but don't set
    NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP. Because a device's firmware
    may filter out the broadcast probe resp - drivers should set this flag.

    Signed-off-by: Roee Zamir
    Signed-off-by: Luca Coelho
    [johannes: make accepting broadcast conditional on the nl80211 scan
    flag that was added for that specific purpose]
    Signed-off-by: Johannes Berg

    Roee Zamir
     
  • There's no need to split off IEs from the ones obtained
    from userspace, if they were already split off, so for
    example IEs that went before HT don't have to be listed
    again to go before VHT. Simplify the code here so it's
    clearer.

    While at it, also clarify the comments regarding the DMG
    (60 GHz) elements.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • For AP_VLAN and monitor interfaces we'll never use the TXQs
    we allocated, so avoid doing so.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

06 Sep, 2017

2 commits

  • When an RX BA session is started by the driver, and it has to tell
    mac80211 about it, the corresponding bit in tid_rx_manage_offl gets
    set and the BA session work is scheduled. Upon testing this bit, it
    will call __ieee80211_start_rx_ba_session(), thus deadlocking as it
    already holds the ampdu_mlme.mtx, which that acquires again.

    Fix this by adding ___ieee80211_start_rx_ba_session(), a version of
    the function that requires the mutex already held.

    Cc: stable@vger.kernel.org
    Fixes: 699cb58c8a52 ("mac80211: manage RX BA session offload without SKB queue")
    Reported-by: Matteo Croce
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Commit 7a7c0a6438b8 ("mac80211: fix TX aggregation start/stop callback race")
    added a cancellation of the ampdu work after the loop that stopped the
    Tx and Rx BA sessions. However, in some cases, e.g., during HW reconfig,
    the low level driver might call mac80211 APIs to complete the stopping
    of the BA sessions, which would queue the ampdu work to handle the actual
    completion. This work needs to be performed as otherwise mac80211 data
    structures would not be properly synced.

    Fix this by checking if BA session STOP_CB bit is set after the BA session
    cancellation and properly clean the session.

    Signed-off-by: Ilan Peer
    [Johannes: the work isn't flushed because that could do other things we
    don't want, and the locking situation isn't clear]
    Signed-off-by: Johannes Berg

    Ilan peer
     

05 Sep, 2017

7 commits

  • When HW ROC is supported it is possible that after the HW notified
    that the ROC has started, the ROC was cancelled and another ROC was
    added while the hw_roc_start worker is waiting on the mutex (since
    cancelling the ROC and adding another one also holds the same mutex).
    As a result, the hw_roc_start worker will continue to run after the
    new ROC is added but before it is actually started by the HW.
    This may result in notifying userspace that the ROC has started before
    it actually does, or in case of management tx ROC, in an attempt to
    tx while not on the right channel.

    In addition, when the driver will notify mac80211 that the second ROC
    has started, mac80211 will warn that this ROC has already been
    notified.

    Fix this by flushing the hw_roc_start work before cancelling an ROC.

    Cc: stable@vger.kernel.org
    Signed-off-by: Avraham Stern
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Avraham Stern
     
  • Since drv_wake_tx_queue() is normally called in the TX path, which
    is already in an RCU critical section, we should call it the same
    way in the aggregation code path, so if the driver expects to be
    able to use RCU, it'll already be protected without having to enter
    a nested critical section.

    Additionally, disable soft-IRQs, since not doing so could cause
    issues in a driver that relies on them already being disabled like
    in the other path.

    Fixes: ba8c3d6f16a1 ("mac80211: add an intermediate software queue implementation")
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • This change adds null pointer check before dereferencing pointer dev on
    netif_tx_start_all_queues() when an interface is added.
    With iTXQ support, netif_tx_start_all_queues() is always called while
    an interface is added. however, the netdev queues are not associated
    and dev is null when the interface is either NL80211_IFTYPE_P2P_DEVICE
    or NL80211_IFTYPE_NAN.

    Signed-off-by: Chunho Lee
    Signed-off-by: Johannes Berg

    Chunho Lee
     
  • VHT MESH support was added, but the order of the IEs
    wasn't enforced. Fix that.

    Signed-off-by: Liad Kaufman
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Liad Kaufman
     
  • Invoking ht_dbg() with too long of a string will print a warning.
    Shorten the messages while retaining the printed patameters.

    Signed-off-by: Sharon Dvir
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Sharon Dvir
     
  • With TXQs, the AP_VLAN interfaces are resolved to their owner AP
    interface when enqueuing the frame, which makes sense since the
    frame really goes out on that as far as the driver is concerned.

    However, this introduces a problem: frames to be encrypted with
    a VLAN-specific GTK will now be encrypted with the AP GTK, since
    the information about which virtual interface to use to select
    the key is taken from the TXQ.

    Fix this by preserving info->control.vif and using that in the
    dequeue function. This now requires doing the driver-mapping
    in the dequeue as well.

    Since there's no way to filter the frames that are sitting on a
    TXQ, drop all frames, which may affect other interfaces, when an
    AP_VLAN is removed.

    Cc: stable@vger.kernel.org
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • this fix minor issue in the log message.
    in ieee80211_rx_mgmt_assoc_resp function, when assigning the
    reassoc value from the mgmt frame control:
    ieee80211_is_reassoc_resp function need to be used, instead of
    ieee80211_is_reassoc_req function.

    Signed-off-by: Simon Dinkin
    Signed-off-by: Johannes Berg

    Simon Dinkin
     

09 Aug, 2017

1 commit


21 Jun, 2017

1 commit