1. 05 9月, 2018 10 次提交
  2. 03 9月, 2018 6 次提交
    • E
      mac80211: shorten the IBSS debug messages · c6e57b38
      Emmanuel Grumbach 提交于
      When tracing is enabled, all the debug messages are recorded and must
      not exceed MAX_MSG_LEN (100) columns. Longer debug messages grant the
      user with:
      
      WARNING: CPU: 3 PID: 32642 at /tmp/wifi-core-20180806094828/src/iwlwifi-stack-dev/net/mac80211/./trace_msg.h:32 trace_event_raw_event_mac80211_msg_event+0xab/0xc0 [mac80211]
      Workqueue: phy1 ieee80211_iface_work [mac80211]
       RIP: 0010:trace_event_raw_event_mac80211_msg_event+0xab/0xc0 [mac80211]
       Call Trace:
        __sdata_dbg+0xbd/0x120 [mac80211]
        ieee80211_ibss_rx_queued_mgmt+0x15f/0x510 [mac80211]
        ieee80211_iface_work+0x21d/0x320 [mac80211]
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      c6e57b38
    • E
      mac80211: don't Tx a deauth frame if the AP forbade Tx · 6c18b27d
      Emmanuel Grumbach 提交于
      If the driver fails to properly prepare for the channel
      switch, mac80211 will disconnect. If the CSA IE had mode
      set to 1, it means that the clients are not allowed to send
      any Tx on the current channel, and that includes the
      deauthentication frame.
      
      Make sure that we don't send the deauthentication frame in
      this case.
      
      In iwlwifi, this caused a failure to flush queues since the
      firmware already closed the queues after having parsed the
      CSA IE. Then mac80211 would wait until the deauthentication
      frame would go out (drv_flush(drop=false)) and that would
      never happen.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      6c18b27d
    • I
      mac80211: Fix station bandwidth setting after channel switch · 0007e943
      Ilan Peer 提交于
      When performing a channel switch flow for a managed interface, the
      flow did not update the bandwidth of the AP station and the rate
      scale algorithm. In case of a channel width downgrade, this would
      result with the rate scale algorithm using a bandwidth that does not
      match the interface channel configuration.
      
      Fix this by updating the AP station bandwidth and rate scaling algorithm
      before the actual channel change in case of a bandwidth downgrade, or
      after the actual channel change in case of a bandwidth upgrade.
      Signed-off-by: NIlan Peer <ilan.peer@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      0007e943
    • E
      mac80211: fix a race between restart and CSA flows · f3ffb6c3
      Emmanuel Grumbach 提交于
      We hit a problem with iwlwifi that was caused by a bug in
      mac80211. A bug in iwlwifi caused the firwmare to crash in
      certain cases in channel switch. Because of that bug,
      drv_pre_channel_switch would fail and trigger the restart
      flow.
      Now we had the hw restart worker which runs on the system's
      workqueue and the csa_connection_drop_work worker that runs
      on mac80211's workqueue that can run together. This is
      obviously problematic since the restart work wants to
      reconfigure the connection, while the csa_connection_drop_work
      worker does the exact opposite: it tries to disconnect.
      
      Fix this by cancelling the csa_connection_drop_work worker
      in the restart worker.
      
      Note that this can sound racy: we could have:
      
      driver   iface_work   CSA_work   restart_work
      +++++++++++++++++++++++++++++++++++++++++++++
                    |
       <--drv_cs ---|
      <FW CRASH!>
      -CS FAILED-->
                    |                       |
                    |                 cancel_work(CSA)
                 schedule                   |
                 CSA work                   |
                               |            |
                              Race between those 2
      
      But this is not possible because we flush the workqueue
      in the restart worker before we cancel the CSA worker.
      That would be bullet proof if we could guarantee that
      we schedule the CSA worker only from the iface_work
      which runs on the workqueue (and not on the system's
      workqueue), but unfortunately we do have an instance
      in which we schedule the CSA work outside the context
      of the workqueue (ieee80211_chswitch_done).
      
      Note also that we should probably cancel other workers
      like beacon_connection_loss_work and possibly others
      for different types of interfaces, at the very least,
      IBSS should suffer from the exact same problem, but for
      now, do the minimum to fix the actual bug that was actually
      experienced and reproduced.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      f3ffb6c3
    • D
      mac80211: fix WMM TXOP calculation · abd76d25
      Dreyfuss, Haim 提交于
      In commit 9236c4523e5b ("mac80211: limit wmm params to comply
      with ETSI requirements"), we have limited the WMM parameters to
      comply with 802.11 and ETSI standard.  Mistakenly the TXOP value
      was caluclated wrong.  Fix it by taking the minimum between
      802.11 to ETSI to make sure we are not violating both.
      
      Fixes: e552af05 ("mac80211: limit wmm params to comply with ETSI requirements")
      Signed-off-by: NHaim Dreyfuss <haim.dreyfuss@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      abd76d25
    • L
      mac80211: fix an off-by-one issue in A-MSDU max_subframe computation · 66eb02d8
      Lorenzo Bianconi 提交于
      Initialize 'n' to 2 in order to take into account also the first
      packet in the estimation of max_subframe limit for a given A-MSDU
      since frag_tail pointer is NULL when ieee80211_amsdu_aggregate
      routine analyzes the second frame.
      
      Fixes: 6e0456b5 ("mac80211: add A-MSDU tx support")
      Signed-off-by: NLorenzo Bianconi <lorenzo.bianconi@redhat.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      66eb02d8
  3. 30 8月, 2018 2 次提交
  4. 29 8月, 2018 4 次提交
    • S
      mac80211: avoid kernel panic when building AMSDU from non-linear SKB · 166ac9d5
      Sara Sharon 提交于
      When building building AMSDU from non-linear SKB, we hit a
      kernel panic when trying to push the padding to the tail.
      Instead, put the padding at the head of the next subframe.
      This also fixes the A-MSDU subframes to not have the padding
      accounted in the length field and not have pad at all for
      the last subframe, both required by the spec.
      
      Fixes: 6e0456b5 ("mac80211: add A-MSDU tx support")
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Reviewed-by: NLorenzo Bianconi <lorenzo.bianconi@redhat.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      166ac9d5
    • Y
      mac80211: mesh: fix HWMP sequence numbering to follow standard · 1f631c32
      Yuan-Chi Pang 提交于
      IEEE 802.11-2016 14.10.8.3 HWMP sequence numbering says:
      If it is a target mesh STA, it shall update its own HWMP SN to
      maximum (current HWMP SN, target HWMP SN in the PREQ element) + 1
      immediately before it generates a PREP element in response to a
      PREQ element.
      Signed-off-by: NYuan-Chi Pang <fu3mo6goo@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      1f631c32
    • B
      cfg80211: clarify frames covered by average ACK signal report · 9c06602b
      Balaji Pothunoori 提交于
      Modify the API to include all ACK frames in average ACK
      signal strength reporting, not just ACKs for data frames.
      Make exposing the data conditional on implementing the
      extended feature flag.
      
      This is how it was really implemented in mac80211, update
      the code there to use the new defines and clean up some of
      the setting code.
      
      Keep nl80211.h source compatibility by keeping the old names.
      Signed-off-by: NBalaji Pothunoori <bpothuno@codeaurora.org>
      [rewrite commit log, change compatibility to be old=new
       instead of the other way around, update kernel-doc,
       roll in mac80211 changes, make mac80211 depend on valid
       bit instead of HW flag]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      9c06602b
    • S
      mac80211: add missing WFA Multi-AP backhaul STA Rx requirement · 1ecef20c
      Sathishkumar Muruganandam 提交于
      The current mac80211 WDS (4-address mode) can be used to cover most of the
      Multi-AP requirements for Data frames per the WFA Multi-AP Specification v1.0.
      When configuring AP/STA interfaces in 4-address mode, they are able to function
      as fronthaul AP/backhaul STA of Multi-AP device complying below
      Tx, Rx requirements except one missing STA Rx requirement added by this patch.
      
      Multi-AP specification section 14.1 describes the following requirements:
      
      Transmitter requirements
      ------------------------
      1. Fronthaul AP
              i) When DA!=RA of backhaul STA, must use 4-address format
              ii) When DA==RA of backhaul STA, shall use either 3-address
                  or 4-address format with RA updated with STA MAC
      
                  (mac80211 support 4-address format via AP/VLAN interface)
      
      2. Backhaul STA
              i) When SA!=TA of backhaul STA, must use 4-address format
              ii) When SA==TA of backhaul STA, shall use either 3-address
                  or 4-address format with RA updated with AP MAC
      
                  (mac80211 support 4-address format via use_4addr)
      
      Receiver requirements
      ---------------------
      1. Fronthaul AP
              i) When SA!=TA of backhaul STA, must support receiving 4-address
                 format frames
              ii) When SA==TA of backhaul STA, must support receiving both
                  3-address and 4-address format frames
      
                  (mac80211 support both 3-addr & 4-addr via AP/VLAN interface)
      
      2. Backhaul STA
              i) When DA!=RA of backhaul STA, must support receiving 4-address
                 format frames
              ii) When DA==RA of backhaul STA,  must support receiving both
                  3-address and 4-address format frames
      
                  (mac80211 support only receiving 4-address format via
                   use_4addr)
      
      This patch addresses the above Rx requirement (ii) for backhaul STA to receive
      unicast (DA==RA) 3-address frames in addition to 4-address frames.
      
      The current design doesn't accept 3-address frames when configured in 4-address
      mode (use_4addr). Hence add a check to allow 3-address frames when DA==RA of
      backhaul STA (adhering to Table 9-26 of IEEE Std 802.11™-2016).
      
      This case was tested with a bridged station interface when associated with
      a non-mac80211 based vendor AP implementation using 3-address frames for WDS.
      
      STA was able to support the Multi-AP Rx requirement when DA==RA. No issues,
      no loops seen when tested with mac80211 based AP as well.
      
      Verified and confirmed all other Tx and Rx requirements of AP and STA for
      Multi-AP respectively. They all work using the current mac80211-WDS design.
      Signed-off-by: NSathishkumar Muruganandam <murugana@codeaurora.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      1ecef20c
  5. 28 8月, 2018 5 次提交
    • M
      mac80211: add stop/start logic for software TXQs · 21a5d4c3
      Manikanta Pubbisetty 提交于
      Sometimes, it is required to stop the transmissions momentarily and
      resume it later; stopping the txqs becomes very critical in scenarios where
      the packet transmission has to be ceased completely. For example, during
      the hardware restart, during off channel operations,
      when initiating CSA(upon detecting a radar on the DFS channel), etc.
      
      The TX queue stop/start logic in mac80211 works well in stopping the TX
      when drivers make use of netdev queues, i.e, when Qdiscs in network layer
      take care of traffic scheduling. Since the devices implementing
      wake_tx_queue can run without Qdiscs, packets will be handed to mac80211
      directly without queueing them in the netdev queues.
      
      Also, mac80211 does not invoke any of the
      netif_stop_*/netif_wake_* APIs if wake_tx_queue is implemented.
      Since the queues are not stopped in this case, transmissions can continue
      and this will impact negatively on the operation of the wireless device.
      
      For example,
      During hardware restart, we stop the netdev queues so that packets are
      not sent to the driver. Since ath10k implements wake_tx_queue,
      TX queues will not be stopped and packets might reach the hardware while
      it is restarting; this can make hardware unresponsive and the only
      possible option for recovery is to reboot the entire system.
      
      There is another problem to this, it is observed that the packets
      were sent on the DFS channel for a prolonged duration after radar
      detection impacting the channel closing time.
      
      We can still invoke netif stop/wake APIs when wake_tx_queue is implemented
      but this could lead to packet drops in network layer; adding stop/start
      logic for software TXQs in mac80211 instead makes more sense; the change
      proposed adds the same in mac80211.
      Signed-off-by: NManikanta Pubbisetty <mpubbise@codeaurora.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      21a5d4c3
    • D
      cfg80211/mac80211: make ieee80211_send_layer2_update a public function · 30ca1aa5
      Dedy Lansky 提交于
      Make ieee80211_send_layer2_update() a common function so other drivers
      can re-use it.
      Signed-off-by: NDedy Lansky <dlansky@codeaurora.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      30ca1aa5
    • E
      mac80211: don't update the PM state of a peer upon a multicast frame · 20932750
      Emmanuel Grumbach 提交于
      I changed the way mac80211 updates the PM state of the peer.
      I forgot that we could also have multicast frames from the
      peer and that those frame should of course not change the
      PM state of the peer: A peer goes to power save when it
      needs to scan, but it won't send the broadcast Probe Request
      with the PM bit set.
      
      This made us mark the peer as awake when it wasn't and then
      Intel's firmware would fail to transmit because the peer is
      asleep according to its database. The driver warned about
      this and it looked like this:
      
       WARNING: CPU: 0 PID: 184 at /usr/src/linux-4.16.14/drivers/net/wireless/intel/iwlwifi/mvm/tx.c:1369 iwl_mvm_rx_tx_cmd+0x53b/0x860
       CPU: 0 PID: 184 Comm: irq/124-iwlwifi Not tainted 4.16.14 #1
       RIP: 0010:iwl_mvm_rx_tx_cmd+0x53b/0x860
       Call Trace:
        iwl_pcie_rx_handle+0x220/0x880
        iwl_pcie_irq_handler+0x6c9/0xa20
        ? irq_forced_thread_fn+0x60/0x60
        ? irq_thread_dtor+0x90/0x90
      
      The relevant code that spits the WARNING is:
      
              case TX_STATUS_FAIL_DEST_PS:
                      /* the FW should have stopped the queue and not
                       * return this status
                       */
                      WARN_ON(1);
                      info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
      
      This fixes https://bugzilla.kernel.org/show_bug.cgi?id=199967.
      
      Fixes: 9fef6544 ("mac80211: always update the PM state of a peer on MGMT / DATA frames")
      Cc: <stable@vger.kernel.org>   #4.16+
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      20932750
    • S
      cfg80211: make wmm_rule part of the reg_rule structure · 38cb87ee
      Stanislaw Gruszka 提交于
      Make wmm_rule be part of the reg_rule structure. This simplifies the
      code a lot at the cost of having bigger memory usage. However in most
      cases we have only few reg_rule's and when we do have many like in
      iwlwifi we do not save memory as it allocates a separate wmm_rule for
      each channel anyway.
      
      This also fixes a bug reported in various places where somewhere the
      pointers were corrupted and we ended up doing a null-dereference.
      
      Fixes: 230ebaa1 ("cfg80211: read wmm rules from regulatory database")
      Signed-off-by: NStanislaw Gruszka <sgruszka@redhat.com>
      [rephrase commit message slightly]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      38cb87ee
    • D
      mac80211: correct use of IEEE80211_VHT_CAP_RXSTBC_X · 67d1ba8a
      Danek Duvall 提交于
      The mod mask for VHT capabilities intends to say that you can override
      the number of STBC receive streams, and it does, but only by accident.
      The IEEE80211_VHT_CAP_RXSTBC_X aren't bits to be set, but values (albeit
      left-shifted).  ORing the bits together gets the right answer, but we
      should use the _MASK macro here instead.
      Signed-off-by: NDanek Duvall <duvall@comfychair.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      67d1ba8a
  6. 14 8月, 2018 1 次提交
  7. 25 7月, 2018 1 次提交
  8. 24 7月, 2018 1 次提交
    • M
      mac80211: restrict delayed tailroom needed decrement · 133bf90d
      Manikanta Pubbisetty 提交于
      As explained in ieee80211_delayed_tailroom_dec(), during roam,
      keys of the old AP will be destroyed and new keys will be
      installed. Deletion of the old key causes
      crypto_tx_tailroom_needed_cnt to go from 1 to 0 and the new key
      installation causes a transition from 0 to 1.
      
      Whenever crypto_tx_tailroom_needed_cnt transitions from 0 to 1,
      we invoke synchronize_net(); the reason for doing this is to avoid
      a race in the TX path as explained in increment_tailroom_need_count().
      This synchronize_net() operation can be slow and can affect the station
      roam time. To avoid this, decrementing the crypto_tx_tailroom_needed_cnt
      is delayed for a while so that upon installation of new key the
      transition would be from 1 to 2 instead of 0 to 1 and thereby
      improving the roam time.
      
      This is all correct for a STA iftype, but deferring the tailroom_needed
      decrement for other iftypes may be unnecessary.
      
      For example, let's consider the case of a 4-addr client connecting to
      an AP for which AP_VLAN interface is also created, let the initial
      value for tailroom_needed on the AP be 1.
      
      * 4-addr client connects to the AP (AP: tailroom_needed = 1)
      * AP will clear old keys, delay decrement of tailroom_needed count
      * AP_VLAN is created, it takes the tailroom count from master
        (AP_VLAN: tailroom_needed = 1, AP: tailroom_needed = 1)
      * Install new key for the station, assume key is plumbed in the HW,
        there won't be any change in tailroom_needed count on AP iface
      * Delayed decrement of tailroom_needed count on AP
        (AP: tailroom_needed = 0, AP_VLAN: tailroom_needed = 1)
      
      Because of the delayed decrement on AP iface, tailroom_needed count goes
      out of sync between AP(master iface) and AP_VLAN(slave iface) and
      there would be unnecessary tailroom created for the packets going
      through AP_VLAN iface.
      
      Also, WARN_ONs were observed while trying to bring down the AP_VLAN
      interface:
      (warn_slowpath_common) (warn_slowpath_null+0x18/0x20)
      (warn_slowpath_null) (ieee80211_free_keys+0x114/0x1e4)
      (ieee80211_free_keys) (ieee80211_del_virtual_monitor+0x51c/0x850)
      (ieee80211_del_virtual_monitor) (ieee80211_stop+0x30/0x3c)
      (ieee80211_stop) (__dev_close_many+0x94/0xb8)
      (__dev_close_many) (dev_close_many+0x5c/0xc8)
      
      Restricting delayed decrement to station interface alone fixes the problem
      and it makes sense to do so because delayed decrement is done to improve
      roam time which is applicable only for client devices.
      Signed-off-by: NManikanta Pubbisetty <mpubbise@codeaurora.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      133bf90d
  9. 10 7月, 2018 1 次提交
  10. 09 7月, 2018 1 次提交
  11. 06 7月, 2018 2 次提交
    • D
      nl80211/mac80211: allow non-linear skb in rx_control_port · a948f713
      Denis Kenzior 提交于
      The current implementation of cfg80211_rx_control_port assumed that the
      caller could provide a contiguous region of memory for the control port
      frame to be sent up to userspace.  Unfortunately, many drivers produce
      non-linear skbs, especially for data frames.  This resulted in userspace
      getting notified of control port frames with correct metadata (from
      address, port, etc) yet garbage / nonsense contents, resulting in bad
      handshakes, disconnections, etc.
      
      mac80211 linearizes skbs containing management frames.  But it didn't
      seem worthwhile to do this for control port frames.  Thus the signature
      of cfg80211_rx_control_port was changed to take the skb directly.
      nl80211 then takes care of obtaining control port frame data directly
      from the (linear | non-linear) skb.
      
      The caller is still responsible for freeing the skb,
      cfg80211_rx_control_port does not take ownership of it.
      
      Fixes: 6a671a50 ("nl80211: Add CMD_CONTROL_PORT_FRAME API")
      Signed-off-by: NDenis Kenzior <denkenz@gmail.com>
      [fix some kernel-doc formatting, add fixes tag]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a948f713
    • U
      leds: triggers: let struct led_trigger::activate() return an error code · 2282e125
      Uwe Kleine-König 提交于
      Given that activating a trigger can fail, let the callback return an
      indication. This prevents to have a trigger active according to the
      "trigger" sysfs attribute but not functional.
      
      All users are changed accordingly to return 0 for now. There is no intended
      change in behaviour.
      Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Acked-by: NPavel Machek <pavel@ucw.cz>
      Signed-off-by: NJacek Anaszewski <jacek.anaszewski@gmail.com>
      2282e125
  12. 03 7月, 2018 1 次提交
    • M
      mac80211: add stations tied to AP_VLANs during hw reconfig · 19103a4b
      mpubbise@codeaurora.org 提交于
      As part of hw reconfig, only stations linked to AP interfaces are added
      back to the driver ignoring those which are tied to AP_VLAN interfaces.
      
      It is true that there could be stations tied to the AP_VLAN interface while
      serving 4addr clients or when using AP_VLAN for VLAN operations; we should
      be adding these stations back to the driver as part of hw reconfig, failing
      to do so can cause functional issues.
      
      In the case of ath10k driver, the following errors were observed.
      
      ath10k_pci : failed to install key for non-existent peer XX:XX:XX:XX:XX:XX
      Workqueue: events_freezable ieee80211_restart_work [mac80211]
      (unwind_backtrace) from (show_stack+0x10/0x14)
      (show_stack) (dump_stack+0x80/0xa0)
      (dump_stack) (warn_slowpath_common+0x68/0x8c)
      (warn_slowpath_common) (warn_slowpath_null+0x18/0x20)
      (warn_slowpath_null) (ieee80211_enable_keys+0x88/0x154 [mac80211])
      (ieee80211_enable_keys) (ieee80211_reconfig+0xc90/0x19c8 [mac80211])
      (ieee80211_reconfig]) (ieee80211_restart_work+0x8c/0xa0 [mac80211])
      (ieee80211_restart_work) (process_one_work+0x284/0x488)
      (process_one_work) (worker_thread+0x228/0x360)
      (worker_thread) (kthread+0xd8/0xec)
      (kthread) (ret_from_fork+0x14/0x24)
      
      Also while bringing down the AP VAP, WARN_ONs and errors related to peer
      removal were observed.
      
      ath10k_pci : failed to clear all peer wep keys for vdev 0: -2
      ath10k_pci : failed to disassociate station: 8c:fd:f0:0a:8c:f5 vdev 0: -2
      (unwind_backtrace) (show_stack+0x10/0x14)
      (show_stack) (dump_stack+0x80/0xa0)
      (dump_stack) (warn_slowpath_common+0x68/0x8c)
      (warn_slowpath_common) (warn_slowpath_null+0x18/0x20)
      (warn_slowpath_null) (sta_set_sinfo+0xb98/0xc9c [mac80211])
      (sta_set_sinfo [mac80211]) (__sta_info_flush+0xf0/0x134 [mac80211])
      (__sta_info_flush [mac80211]) (ieee80211_stop_ap+0xe8/0x390 [mac80211])
      (ieee80211_stop_ap [mac80211]) (__cfg80211_stop_ap+0xe0/0x3dc [cfg80211])
      (__cfg80211_stop_ap [cfg80211]) (cfg80211_stop_ap+0x30/0x44 [cfg80211])
      (cfg80211_stop_ap [cfg80211]) (genl_rcv_msg+0x274/0x30c)
      (genl_rcv_msg) (netlink_rcv_skb+0x58/0xac)
      (netlink_rcv_skb) (genl_rcv+0x20/0x34)
      (genl_rcv) (netlink_unicast+0x11c/0x204)
      (netlink_unicast) (netlink_sendmsg+0x30c/0x370)
      (netlink_sendmsg) (sock_sendmsg+0x70/0x84)
      (sock_sendmsg) (___sys_sendmsg.part.3+0x188/0x228)
      (___sys_sendmsg.part.3) (__sys_sendmsg+0x4c/0x70)
      (__sys_sendmsg) (ret_fast_syscall+0x0/0x44)
      
      These issues got fixed by adding the stations which are
      tied to AP_VLANs back to the driver.
      Signed-off-by: NManikanta Pubbisetty <mpubbise@codeaurora.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      19103a4b
  13. 29 6月, 2018 4 次提交
    • O
      mac80211: use BIT_ULL for NL80211_STA_INFO_* attribute types · a4217750
      Omer Efrat 提交于
      The BIT macro uses unsigned long which some architectures handle as 32 bit
      and therefore might cause macro's shift to overflow when used on a value
      equals or larger than 32 (NL80211_STA_INFO_RX_DURATION and afterwards).
      
      Since 'filled' member in station_info changed to u64, BIT_ULL macro
      should be used with all NL80211_STA_INFO_* attribute types instead of BIT
      to prevent future possible bugs when one will use BIT macro for higher
      attributes by mistake.
      
      This commit cleans up all usages of BIT macro with the above field
      in mac80211 by changing it to BIT_ULL instead.
      Signed-off-by: NOmer Efrat <omer.efrat@tandemg.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a4217750
    • J
      mac80211: remove unnecessary NULL check · f0c0407d
      Johannes Berg 提交于
      We don't need to check if he_oper is NULL before calling
      ieee80211_verify_sta_he_mcs_support() as it - now - will
      correctly check this itself. Remove the redundant check.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      f0c0407d
    • G
      mac80211: fix potential null pointer dereference · 47aa7861
      Gustavo A. R. Silva 提交于
      he_op is being dereferenced before it is null checked, hence there
      is a potential null pointer dereference.
      
      Fix this by moving the pointer dereference after he_op has been
      properly null checked.
      
      Notice that, currently, he_op is already being null checked before
      calling this function at 4593:
      
      4593	if (!he_oper ||
      4594	    !ieee80211_verify_sta_he_mcs_support(sband, he_oper))
      4595		ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
      
      but in case ieee80211_verify_sta_he_mcs_support is ever called
      without verifying he_oper is not null, we will end up having a
      null pointer dereference. So, we better don't take any chances.
      
      Addresses-Coverity-ID: 1470068 ("Dereference before null check")
      Signed-off-by: NGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      47aa7861
    • D
      mac80211: disable BHs/preemption in ieee80211_tx_control_port() · e7441c92
      Denis Kenzior 提交于
      On pre-emption enabled kernels the following print was being seen due to
      missing local_bh_disable/local_bh_enable calls.  mac80211 assumes that
      pre-emption is disabled in the data path.
      
          BUG: using smp_processor_id() in preemptible [00000000] code: iwd/517
          caller is __ieee80211_subif_start_xmit+0x144/0x210 [mac80211]
          [...]
          Call Trace:
          dump_stack+0x5c/0x80
          check_preemption_disabled.cold.0+0x46/0x51
          __ieee80211_subif_start_xmit+0x144/0x210 [mac80211]
      
      Fixes: 91180649 ("mac80211: Add support for tx_control_port")
      Signed-off-by: NDenis Kenzior <denkenz@gmail.com>
      [commit message rewrite, fixes tag]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      e7441c92
  14. 19 6月, 2018 1 次提交