12 Aug, 2016

1 commit

  • Depending on which method the driver implements, userspace could
    call this (indirectly, by getting station info) before the driver
    knows about the station, possibly causing it to misbehave.

    Therefore, add a check for sta->uploaded which indicates that the
    driver knows about the station.

    Signed-off-by: Maxim Altshul
    [reword commit message]
    Signed-off-by: Johannes Berg

    Maxim Altshul
     

11 Aug, 2016

2 commits


05 Aug, 2016

3 commits

  • The variable is added to allow the driver an easy access to
    it's own hw->priv when the op is invoked.

    This fixes a crash in wlcore because it was relying on a
    station pointer that wasn't initialized yet. It's the wrong
    way to fix the crash, but it solves the problem for now and
    it does make sense to have the hw pointer here.

    Signed-off-by: Maxim Altshul
    [rewrite commit message, fix indentation]
    Signed-off-by: Johannes Berg

    Maxim Altshul
     
  • If QoS frame with EOSP (end of service period) subfield=1 sent by local
    peer was not acked by remote peer, local peer did not end the MPSP. This
    prevents local peer from going to DOZE state. And if the remote peer
    goes away without closing connection, local peer continues AWAKE state
    and wastes battery.

    Signed-off-by: Masashi Honma
    Acked-by: Bob Copeland
    Signed-off-by: Johannes Berg

    Masashi Honma
     
  • The code currently assumes that buffered multicast PS frames don't have
    a pending ACK frame for tx status reporting.
    However, hostapd sends a broadcast deauth frame on teardown for which tx
    status is requested. This can lead to the "Have pending ack frames"
    warning on module reload.
    Fix this by using ieee80211_free_txskb/ieee80211_purge_tx_queue.

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

    Felix Fietkau
     

03 Aug, 2016

1 commit

  • Some drivers (e.g. wl18xx) expect that the last stage in the
    de-initialization process will be stopping the beacons, similar to AP flow.
    Update ieee80211_stop_mesh() flow accordingly.
    As peers can be removed dynamically, this would not impact other drivers.

    Tested also on Ralink RT3572 chipset.

    Signed-off-by: Maital Hahn
    Signed-off-by: Yaniv Machani
    Signed-off-by: Johannes Berg

    Maital Hahn
     

02 Aug, 2016

1 commit


06 Jul, 2016

6 commits

  • Previously, mesh power management functionality works only with kernel
    MPM. Because user space MPM did not report mesh peer AID to kernel,
    the kernel could not identify the bit in TIM element. So this patch
    adds mesh peer AID setting API.

    Signed-off-by: Masashi Honma
    Signed-off-by: Johannes Berg

    Masashi Honma
     
  • Continuing the workaround implemented in commit 23665aaf9170
    ("mac80211: Interoperability workaround for 80+80 and 160 MHz channels")
    use the same code to parse the Wide Bandwidth Channel Switch element
    by converting to VHT Operation element since the spec also just refers
    to that for parsing semantics, particularly with the workaround.

    While at it, remove some dead code - the IEEE80211_STA_DISABLE_40MHZ
    flag can never be set at this point since it's checked earlier and the
    wide_bw_chansw_ie pointer is set to NULL if it's set.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Rather than reporting the scan as having completed, report it as
    being aborted.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Add the following to support beacon report radio measurement
    with the measurement mode field set to passive or active:
    1. Propagate the required scan duration to the device
    2. Report the scan start time (in terms of TSF)
    3. Report each BSS's detection time (also in terms of TSF)

    TSF times refer to the BSS that the interface that requested the
    scan is connected to.

    Signed-off-by: Assaf Krauss
    Signed-off-by: Avraham Stern
    [changed ath9k/10k, at76c59x-usb, iwlegacy, wl1251 and wlcore to match
    the new API]
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Avraham Stern
     
  • Beacon report radio measurement requires reporting observed BSSs
    on the channels specified in the beacon request. If the measurement
    mode is set to passive or active, it requires actually performing a
    scan (passive or active, accordingly), and reporting the time that
    the scan was started and the time each beacon/probe was received
    (both in terms of TSF of the BSS of the requesting AP). If the
    request mode is table, this information is optional.
    In addition, the radio measurement request specifies the channel
    dwell time for the measurement.

    In order to use scan for beacon report when the mode is active or
    passive, add a parameter to scan request that specifies the
    channel dwell time, and add scan start time and beacon received time
    to scan results information.

    Supporting beacon report is required for Multi Band Operation (MBO).

    Signed-off-by: Assaf Krauss
    Signed-off-by: David Spinadel
    Signed-off-by: Avraham Stern
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Avraham Stern
     
  • The current implementation of handling ADDBA Request while a session
    is already active with the peer is wrong - in case the peer is using
    the existing session's dialog token this should be treated as update
    to the session, which can update the timeout value.

    We don't really have a good way of supporting that, so reject, but
    implement the required behaviour in the spec of "Even if the updated
    ADDBA Request frame is not accepted, the original Block ACK setup
    remains active." (802.11-2012 10.5.4)

    Signed-off-by: Johannes Berg

    Johannes Berg
     

30 Jun, 2016

5 commits

  • Some lockdep assertions were not fulfilled and
    resulted in a kernel warning/call trace if driver
    used intermediate software queues (e.g. ath10k).

    Existing code sequences should've guaranteed safety
    but it's always good to be extra careful.

    The call trace could look like this:

    [ 237.335805] ------------[ cut here ]------------
    [ 237.335852] WARNING: CPU: 3 PID: 1921 at include/net/fq_impl.h:22 fq_flow_dequeue+0xed/0x140 [mac80211]
    [ 237.335855] Modules linked in: ath10k_pci(E-) ath10k_core(E) ath(E) mac80211(E) cfg80211(E)
    [ 237.335913] CPU: 3 PID: 1921 Comm: rmmod Tainted: G W E 4.7.0-rc4-wt-ath+ #1377
    [ 237.335916] Hardware name: Hewlett-Packard HP ProBook 6540b/1722, BIOS 68CDD Ver. F.04 01/27/2010
    [ 237.335918] 00200286 00200286 eff85dac c14151e2 f901574e 00000000 eff85de0 c1081075
    [ 237.335928] c1ab91f0 00000003 00000781 f901574e 00000016 f8fbabad f8fbabad 00000016
    [ 237.335938] eb24ff60 00000000 ef3886c0 eff85df4 c10810ba 00000009 00000000 00000000
    [ 237.335948] Call Trace:
    [ 237.335953] [] dump_stack+0x76/0xb4
    [ 237.335957] [] __warn+0xe5/0x100
    [ 237.336002] [] ? fq_flow_dequeue+0xed/0x140 [mac80211]
    [ 237.336046] [] ? fq_flow_dequeue+0xed/0x140 [mac80211]
    [ 237.336053] [] warn_slowpath_null+0x2a/0x30
    [ 237.336095] [] fq_flow_dequeue+0xed/0x140 [mac80211]
    [ 237.336137] [] fq_flow_reset.constprop.56+0x2a/0x90 [mac80211]
    [ 237.336180] [] fq_reset.constprop.59+0x2a/0x50 [mac80211]
    [ 237.336222] [] ieee80211_txq_teardown_flows+0x38/0x40 [mac80211]
    [ 237.336258] [] ieee80211_unregister_hw+0xe4/0x120 [mac80211]
    [ 237.336275] [] ath10k_mac_unregister+0x16/0x50 [ath10k_core]
    [ 237.336292] [] ath10k_core_unregister+0x3d/0x90 [ath10k_core]
    [ 237.336301] [] ath10k_pci_remove+0x36/0xa0 [ath10k_pci]
    [ 237.336307] [] pci_device_remove+0x38/0xb0
    ...

    Fixes: 5caa328e3811 ("mac80211: implement codel on fair queuing flows")
    Fixes: fa962b92120b ("mac80211: implement fair queueing per txq")
    Tested-by: Kalle Valo
    Reported-by: Kalle Valo
    Signed-off-by: Michal Kazior
    Signed-off-by: Johannes Berg

    Michal Kazior
     
  • We've accumulated a couple of different fixes now to mesh_sta_cleanup()
    due to the different paths that user_mpm and !user_mpm cases take -- one
    fix to flush nexthop paths and one to fix the counting.

    The only caller of mesh_plink_deactivate() is mesh_sta_cleanup(), so we
    can push the user_mpm checks down into there in order to share more
    code.

    In doing so, we can remove an extra call to mesh_path_flush_by_nexthop()
    and the (unnecessary) call to mesh_accept_plinks_update(). This will
    also ensure the powersaving state code gets called in the user_mpm case.

    The only cleanup tasks we need to avoid when MPM is in user-space
    are sending the peering frames and stopping the plink timer, so wrap
    those in the appropriate check.

    Signed-off-by: Bob Copeland
    Signed-off-by: Johannes Berg

    Bob Copeland
     
  • Previously, the action frames to group address was not encrypted. But
    [1] "Table 8-38 Category values" indicates "Mesh" and "Multihop" category
    action frames should be encrypted (Group addressed privacy == yes). And the
    encyption key should be MGTK ([1] 10.13 Group addressed robust management frame
    procedures). So this patch modifies the code to make it suitable for spec.

    [1] IEEE Std 802.11-2012

    Signed-off-by: Masashi Honma
    Signed-off-by: Johannes Berg

    Masashi Honma
     
  • We normally return an uninitialized value, but no one checks it so it
    doesn't matter. Anyway, let's silence the static checker warning.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Johannes Berg

    Dan Carpenter
     
  • Several cases of overlapping changes, except the packet scheduler
    conflicts which deal with the addition of the free list parameter
    to qdisc_enqueue().

    Signed-off-by: David S. Miller

    David S. Miller
     

28 Jun, 2016

1 commit

  • If a user space program (e.g., wpa_supplicant) deletes a STA entry that
    is currently in NL80211_PLINK_ESTAB state, the number of established
    plinks counter was not decremented and this could result in rejecting
    new plink establishment before really hitting the real maximum plink
    limit. For !user_mpm case, this decrementation is handled by
    mesh_plink_deactive().

    Fix this by decrementing estab_plinks on STA deletion
    (mesh_sta_cleanup() gets called from there) so that the counter has a
    correct value and the Beacon frame advertisement in Mesh Configuration
    element shows the proper value for capability to accept additional
    peers.

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

    Jouni Malinen
     

11 Jun, 2016

1 commit

  • …inux/kernel/git/jberg/mac80211-next

    Johannes Berg says:

    ====================
    For the next cycle, we have the following:
    * the biggest change is Michał's work on integrating FQ/codel
    with the mac80211 internal software queues
    * cfg80211 connect result gets clarified for the
    "no connection at all" case
    * advertisement of per-interface type capabilities, in case
    they differ (which makes a lot of sense for some capabilities)
    * most of the nl80211 & hwsim unprivileged namespace operation
    changes
    * human-readable VHT capabilities in debugfs
    * some other cleanups, like spelling
    ====================

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

    David S. Miller
     

09 Jun, 2016

4 commits

  • There is no other limit other than a global
    packet count limit when using software queuing.
    This means a single flow queue can grow insanely
    long. This is particularly bad for TCP congestion
    algorithms which requires a little more
    sophisticated frame dropping scheme than a mere
    headdrop on limit overflow.

    Hence apply (a slighly modified, to fit the knobs)
    CoDel5 on flow queues. This improves TCP
    convergence and stability when combined with
    wireless driver which keeps its own tx queue/fifo
    at a minimum fill level for given link conditions.

    Signed-off-by: Michal Kazior
    Signed-off-by: Johannes Berg

    Michal Kazior
     
  • This adds a debugfs entry to read and modify some fq parameters.

    This makes it easy to debug, test and experiment.

    Signed-off-by: Michal Kazior
    [remove module parameter for now]
    Signed-off-by: Johannes Berg

    Michal Kazior
     
  • mac80211's software queues were designed to work
    very closely with device tx queues. They are
    required to make use of 802.11 packet aggregation
    easily and efficiently.

    Due to the way 802.11 aggregation is designed it
    only makes sense to keep fair queuing as close to
    hardware as possible to reduce induced latency and
    inertia and provide the best flow responsiveness.

    This change doesn't translate directly to
    immediate and significant gains. End result
    depends on driver's induced latency. Best results
    can be achieved if driver keeps its own tx
    queue/fifo fill level to a minimum.

    Signed-off-by: Michal Kazior
    Signed-off-by: Johannes Berg

    Michal Kazior
     
  • Qdiscs are designed with no regard to 802.11
    aggregation requirements and hand out
    packet-by-packet with no guarantee they are
    destined to the same tid. This does more bad than
    good no matter how fairly a given qdisc may behave
    on an ethernet interface.

    Software queuing used per-AC netdev subqueue
    congestion control whenever a global AC limit was
    hit. This meant in practice a single station or
    tid queue could starve others rather easily. This
    could resonate with qdiscs in a bad way or could
    just end up with poor aggregation performance.
    Increasing the AC limit would increase induced
    latency which is also bad.

    Disabling qdiscs by default and performing
    taildrop instead of netdev subqueue congestion
    control on the other hand makes it possible for
    tid queues to fill up "in the meantime" while
    preventing stations starving each other.

    This increases aggregation opportunities and
    should allow software queuing based drivers
    achieve better performance by utilizing airtime
    more efficiently with big aggregates.

    Signed-off-by: Michal Kazior
    Signed-off-by: Johannes Berg

    Michal Kazior
     

31 May, 2016

3 commits

  • This makes it a lot easier to understand the capabilities used
    by the station:

    VHT supported
    cap: 0x300819b2
    MAX-MPDU-11454
    80Mhz
    RXLDPC
    SHORT-GI-80
    TXSTBC
    RXSTBC_1
    SU-BEAMFORMER-CAPABLE
    SU-BEAMFORMEE-CAPABLE
    BEAMFORMEE-STS: 0x0
    SOUNDING-DIMENSIONS: 0x0
    MU-BEAMFORMER-CAPABLE
    MPDU-LENGTH-EXPONENT: 0x0
    LINK-ADAPTATION-VHT-MRQ-MFB: 0x0
    RX-ANTENNA-PATTERN
    TX-ANTENNA-PATTERN
    RX MCS: fffe
    TX MCS: fffe

    Signed-off-by: Ben Greear
    Signed-off-by: Johannes Berg

    Ben Greear
     
  • The header field is defined as u8[] but also accessed as struct
    ieee80211_hdr. Enforce an alignment of 2 to prevent unnecessary
    unaligned accesses, which can be very harmful for performance on many
    platforms.

    Fixes: e495c24731a2 ("mac80211: extend fast-xmit for more ciphers")
    Cc: stable@vger.kernel.org
    Signed-off-by: Felix Fietkau
    Signed-off-by: Johannes Berg

    Felix Fietkau
     
  • Currently, the mesh paths associated with a nexthop station are cleaned
    up in the following code path:

    __sta_info_destroy_part1
    synchronize_net()
    __sta_info_destroy_part2
    -> cleanup_single_sta
    -> mesh_sta_cleanup
    -> mesh_plink_deactivate
    -> mesh_path_flush_by_nexthop

    However, there are a couple of problems here:

    1) the paths aren't flushed at all if the MPM is running in userspace
    (e.g. when using wpa_supplicant or authsae)

    2) there is no synchronize_rcu between removing the path and readers
    accessing the nexthop, which means the following race is possible:

    CPU0 CPU1
    ~~~~ ~~~~
    sta_info_destroy_part1()
    synchronize_net()
    rcu_read_lock()
    mesh_nexthop_resolve()
    mpath = mesh_path_lookup()
    [...] -> mesh_path_flush_by_nexthop()
    sta = rcu_dereference(
    mpath->next_hop)
    kfree(sta)
    access sta ] ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211]
    [ 348.530014] *pde = 00000000
    [ 348.530014] Oops: 0000 [#1] PREEMPT
    [ 348.530014] Modules linked in: drbg ansi_cprng ctr ccm ppp_generic slhc ipt_MASQUERADE nf_nat_masquerade_ipv4 8021q ]
    [ 348.530014] CPU: 0 PID: 20597 Comm: wget Tainted: G O 4.6.0-rc5-wt=V1 #1
    [ 348.530014] Hardware name: To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080016 11/07/2014
    [ 348.530014] task: f64fa280 ti: f4f9c000 task.ti: f4f9c000
    [ 348.530014] EIP: 0060:[] EFLAGS: 00010246 CPU: 0
    [ 348.530014] EIP is at ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211]
    [ 348.530014] EAX: f4ce63e0 EBX: 00000088 ECX: f3788416 EDX: 00020008
    [ 348.530014] ESI: 00000000 EDI: 00000088 EBP: f6409a4c ESP: f6409a40
    [ 348.530014] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
    [ 348.530014] CR0: 80050033 CR2: 00020040 CR3: 33190000 CR4: 00000690
    [ 348.530014] Stack:
    [ 348.530014] 00000000 f4ce63e0 f5f9bd80 f6409a64 f9291d80 0000ce67 f5d51e00 f4ce63e0
    [ 348.530014] f3788416 f6409a80 f9291dc1 f4ce8320 f4ce63e0 f5d51e00 f4ce63e0 f4ce8320
    [ 348.530014] f6409a98 f9277f6f 00000000 00000000 0000007c 00000000 f6409b2c f9278dd1
    [ 348.530014] Call Trace:
    [ 348.530014] [] mesh_nexthop_lookup+0xbb/0xc8 [mac80211]
    [ 348.530014] [] mesh_nexthop_resolve+0x34/0xd8 [mac80211]
    [ 348.530014] [] ieee80211_xmit+0x92/0xc1 [mac80211]
    [ 348.530014] [] __ieee80211_subif_start_xmit+0x807/0x83c [mac80211]
    [ 348.530014] [] ? sch_direct_xmit+0xd7/0x1b3
    [ 348.530014] [] ? __local_bh_enable_ip+0x5d/0x7b
    [ 348.530014] [] ? nf_nat_ipv4_out+0x4c/0xd0 [nf_nat_ipv4]
    [ 348.530014] [] ? iptable_nat_ipv4_fn+0xf/0xf [iptable_nat]
    [ 348.530014] [] ? netif_skb_features+0x14d/0x30a
    [ 348.530014] [] ieee80211_subif_start_xmit+0xa/0xe [mac80211]
    [ 348.530014] [] dev_hard_start_xmit+0x1f8/0x267
    [ 348.530014] [] ? validate_xmit_skb.isra.120.part.121+0x10/0x253
    [ 348.530014] [] sch_direct_xmit+0x8b/0x1b3
    [ 348.530014] [] __dev_queue_xmit+0x2c8/0x513
    [ 348.530014] [] dev_queue_xmit+0xa/0xc
    [ 348.530014] [] batadv_send_skb_packet+0xd6/0xec [batman_adv]
    [ 348.530014] [] batadv_send_unicast_skb+0x15/0x4a [batman_adv]
    [ 348.530014] [] batadv_dat_send_data+0x27e/0x310 [batman_adv]
    [ 348.530014] [] ? batadv_tt_global_hash_find.isra.11+0x8/0xa [batman_adv]
    [ 348.530014] [] batadv_dat_snoop_outgoing_arp_request+0x208/0x23d [batman_adv]
    [ 348.530014] [] batadv_interface_tx+0x206/0x385 [batman_adv]
    [ 348.530014] [] dev_hard_start_xmit+0x1f8/0x267
    [ 348.530014] [] ? validate_xmit_skb.isra.120.part.121+0x10/0x253
    [ 348.530014] [] sch_direct_xmit+0x8b/0x1b3
    [ 348.530014] [] __dev_queue_xmit+0x2c8/0x513
    [ 348.530014] [] ? igb_xmit_frame+0x57/0x72 [igb]
    [ 348.530014] [] dev_queue_xmit+0xa/0xc
    [ 348.530014] [] br_dev_queue_push_xmit+0xeb/0xfb [bridge]
    [ 348.530014] [] br_forward_finish+0x29/0x74 [bridge]
    [ 348.530014] [] ? deliver_clone+0x3b/0x3b [bridge]
    [ 348.530014] [] __br_forward+0x89/0xe7 [bridge]
    [ 348.530014] [] ? br_dev_queue_push_xmit+0xfb/0xfb [bridge]
    [ 348.530014] [] deliver_clone+0x34/0x3b [bridge]
    [ 348.530014] [] ? br_flood+0x95/0x95 [bridge]
    [ 348.530014] [] br_flood+0x77/0x95 [bridge]
    [ 348.530014] [] br_flood_forward+0x13/0x1a [bridge]
    [ 348.530014] [] ? br_flood+0x95/0x95 [bridge]
    [ 348.530014] [] br_handle_frame_finish+0x392/0x3db [bridge]
    [ 348.530014] [] ? nf_iterate+0x2b/0x6b
    [ 348.530014] [] br_handle_frame+0x1e6/0x240 [bridge]
    [ 348.530014] [] ? br_handle_local_finish+0x6a/0x6a [bridge]
    [ 348.530014] [] __netif_receive_skb_core+0x43a/0x66b
    [ 348.530014] [] ? br_handle_frame_finish+0x3db/0x3db [bridge]
    [ 348.530014] [] ? resched_curr+0x19/0x37
    [ 348.530014] [] ? check_preempt_wakeup+0xbf/0xfe
    [ 348.530014] [] ? ktime_get_with_offset+0x5c/0xfc
    [ 348.530014] [] __netif_receive_skb+0x47/0x55
    [ 348.530014] [] netif_receive_skb_internal+0x40/0x5a
    [ 348.530014] [] napi_gro_receive+0x3a/0x94
    [ 348.530014] [] igb_poll+0x6fd/0x9ad [igb]
    [ 348.530014] [] ? swake_up_locked+0x14/0x26
    [ 348.530014] [] net_rx_action+0xde/0x250
    [ 348.530014] [] __do_softirq+0x8a/0x163
    [ 348.530014] [] ? __hrtimer_tasklet_trampoline+0x19/0x19
    [ 348.530014] [] do_softirq_own_stack+0x26/0x2c
    [ 348.530014]
    [ 348.530014] [] irq_exit+0x31/0x6f
    [ 348.530014] [] do_IRQ+0x8d/0xa0
    [ 348.530014] [] common_interrupt+0x2c/0x40
    [ 348.530014] Code: e7 8c 00 66 81 ff 88 00 75 12 85 d2 75 0e b2 c3 b8 83 e9 29 f9 e8 a7 5f f9 c6 eb 74 66 81 e3 8c 005
    [ 348.530014] EIP: [] ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211] SS:ESP 0068:f6409a40
    [ 348.530014] CR2: 0000000000020040
    [ 348.530014] ---[ end trace 48556ac26779732e ]---
    [ 348.530014] Kernel panic - not syncing: Fatal exception in interrupt
    [ 348.530014] Kernel Offset: disabled

    Cc: stable@vger.kernel.org
    Reported-by: Fred Veldini
    Tested-by: Fred Veldini
    Signed-off-by: Bob Copeland
    Signed-off-by: Johannes Berg

    Bob Copeland
     

12 May, 2016

4 commits

  • …inux/kernel/git/jberg/mac80211-next

    Johannes Berg says:

    ====================
    Some more work for 4.7, notably:
    * completion and fixups of nla_put_64_64bit() work
    * remove a/b/g/n from wext nickname to avoid confusion
    with 11ac (which wouldn't even fit fully there due to
    string length restrictions)

    along with some other minor changes/cleanups.
    ====================

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

    David S. Miller
     
  • When using RSS, frames might not be processed in the correct order,
    and thus AP_LINK_PS must be used; most likely with firmware keeping
    track of the powersave state, this is the case in iwlwifi now.

    In this case, the driver can use ieee80211_sta_ps_transition() to
    still have mac80211 manage powersave buffering. However, for U-APSD
    and PS-Poll this isn't sufficient. If the device can't manage that
    entirely on its own, mac80211's code should be used.

    To allow this, export two functions: ieee80211_sta_uapsd_trigger()
    and ieee80211_sta_pspoll().

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Some hardware (iwlwifi an example) de-aggregate AMSDUs and copy the IV
    as is to the generated MPDUs, so the same PN appears in multiple
    packets without being a replay attack. Allow driver to explicitly
    indicate that a frame is allowed to have the same PN as the previous
    frame.

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

    Sara Sharon
     
  • In some cases, after a sudden AP disappearing and reconnection to
    another AP in the same ESS, user space gets the old AP in scan
    results (cached). User space may decide to roam to that old AP
    which will cause a disconnection and longer recovery.
    Remove APs that are probably out of range from BSS table.

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

    David Spinadel
     

04 May, 2016

1 commit


27 Apr, 2016

1 commit


12 Apr, 2016

1 commit

  • This enum is already perfectly aliased to enum nl80211_band, and
    the only reason for it is that we get IEEE80211_NUM_BANDS out of
    it. There's no really good reason to not declare the number of
    bands in nl80211 though, so do that and remove the cfg80211 one.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

10 Apr, 2016

1 commit


06 Apr, 2016

4 commits