1. 18 3月, 2020 6 次提交
    • S
      ath11k: Perform per-msdu rx processing · acc79d98
      Sriram R 提交于
      As Hash based reo destination selection is configured,
      the decapped packets reach different reo destintion rings
      based on the destintaion ring selected for the computed hash (based on
      the 5-tuple {ip src/ip dst/src port/dst port/protocol}) by hw and
      as configured by driver.
      
      Hence the current implementation of amsdu list based processing after all
      the subframes of amsdu are received (since all msdu's for a pdev are
      received in same reo dest ring), is not applicable here and hence is
      replaced with per msdu based handling as these subframes
      can be received in different reo dest rings.
      
      Also, as some of the rx descriptor fields might be valid only for the
      first msdu (for ex. received 80211 header, encryption type, etc),
      it might not be useful now as we cannot sync between different
      subframes received in different rings. Hence do not rely on those
      fields and replace them with fieds valid only on per msdu descriptors.
      Also cache other details such as encryption type for a peer so that
      it can be reused when a packet is received from it.
      Co-developed-by: NTamizh Chelvam Raja <tamizhr@codeaurora.org>
      Signed-off-by: NTamizh Chelvam Raja <tamizhr@codeaurora.org>
      Signed-off-by: NSriram R <srirrama@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      acc79d98
    • S
      ath11k: Configure hash based reo destination ring selection · 26c79927
      Sriram R 提交于
      Current implementation of pdev based reo destination ring
      selection is replaced by hash based ring selection so as to
      ensure all the available rings are utilized for better performance.
      
      The 4 reo destination rings are selected by the HW based on the
      hash value computed from the received packet based on the 5 tuple
      {ip src/ip dst/src port/dst port/protocol}. Out of the 32 hash values
      used by the hw, the driver assigns 8 values per reo destination ring
      to each of the 4 reo destination rings.
      Signed-off-by: NSriram R <srirrama@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      26c79927
    • P
      ath11k: Adding proper validation before accessing tx_stats · fe0ebb51
      Pravas Kumar Panda 提交于
      Before dumping tx_stats proper validation was not been taken care of.
      Due to which we were encountering null pointer dereference(kernel panic).
      This scenario will arise when a station is getting disconnected and
      we are changing the STA state by ath11k_mac_op_sta_state and assigning
      tx_stats as NULL and after this the mac80211 will destroy the
      debugfs entry from where we are trying to read the stats.
      
      If anyone tries to dump tx_stats for that STA in between setting
      tx_stats to NULL and debugfs file removal without checking the NULL
      value it will run into a NULL pointer exception.
      
      Proceeding with the analysis of "ARM Kernel Panic".
      The APSS crash happened due to OOPS on CPU 3.
      Crash Signature : Unable to handle kernel NULL pointer dereference at
      virtual address 00000360
      During the crash,
      PC points to "ath11k_debug_htt_stats_init+0x16ac/0x1acc [ath11k]"
      LR points to "ath11k_debug_htt_stats_init+0x1688/0x1acc [ath11k]".
      The Backtrace obtained is as follows:
      [<ffffffbffcfd8590>] ath11k_debug_htt_stats_init+0x16ac/0x1acc [ath11k]
      [<ffffffc000156320>] do_loop_readv_writev+0x60/0xa4
      [<ffffffc000156a5c>] do_readv_writev+0xd8/0x19c
      [<ffffffc000156b54>] vfs_readv+0x34/0x48
      [<ffffffc00017d6f4>] default_file_splice_read+0x1a8/0x2e4
      [<ffffffc00017c56c>] do_splice_to+0x78/0x98
      [<ffffffc00017c63c>] splice_direct_to_actor+0xb0/0x1a4
      [<ffffffc00017c7b4>] do_splice_direct+0x84/0xa8
      [<ffffffc000156f40>] do_sendfile+0x160/0x2a4
      [<ffffffc000157980>] SyS_sendfile64+0xb4/0xc8
      Signed-off-by: NPravas Kumar Panda <kumarpan@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      fe0ebb51
    • M
      ath11k: dump SRNG stats during FW assert · 5118935b
      Manikanta Pubbisetty 提交于
      Dumping the SRNG stats during FW assert, this would help
      in debugging ring stuck issues.
      Co-developed-by: NKarthikeyan Periyasamy <periyasa@codeaurora.org>
      Signed-off-by: NKarthikeyan Periyasamy <periyasa@codeaurora.org>
      Signed-off-by: NManikanta Pubbisetty <mpubbise@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      5118935b
    • V
      ath11k: fill channel info from rx channel · de06b2f7
      Venkateswara Naralasetty 提交于
      Fill the channel information from rx channel for the packet
      which has invalid channel info from meta data.
      Signed-off-by: NVenkateswara Naralasetty <vnaralas@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      de06b2f7
    • S
      ath11k: Supporting RX ring backpressure HTT event and stats handling · 678e8414
      Sriram R 提交于
      The Firmware sends HTT event to host whenever there is a
      backpressure on RX rings, Handling such event and dumping
      info on the console under the "ATH11K_DBG_DP_HTT"  debug level.
      
      Fetching RX ring backpressure histogram from FW via htt_stats debugfs.
      
       #echo "24" > /sys/kernel/debug/ath11k/ipq8074/macX/htt_stats_type
       #cat /sys/kernel/debug/ath11k/ipq8074/macX/htt_stats
      Signed-off-by: NVikas Patel <vikpatel@codeaurora.org>
      Signed-off-by: NSriram R <srirrama@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      678e8414
  2. 17 3月, 2020 5 次提交
    • J
      ath11k: add handling for BSS color · beb2f772
      John Crispin 提交于
      This patch adds code to handle the BSS_CHANGED_BSS_COLOR flag. It will
      trigger the propagation of BSS color settings into the FW. Handling is
      slightly different between AP and STA interfaces.
      Signed-off-by: NJohn Crispin <john@phrozen.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      beb2f772
    • J
      ath11k: add WMI calls required for handling BSS color · 5a032c8d
      John Crispin 提交于
      If the he_operation field of the beacon sets a BSS color, we need to inform
      the FW of the settings. This patch adds the WMI command handlers required
      to do so.
      Signed-off-by: NJohn Crispin <john@phrozen.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      5a032c8d
    • J
      ath11k: set queue_len to 4096 · 107560d8
      John Crispin 提交于
      The driver currently does not use wake_txq_queue. This leads to the
      tx_queue_len being defaulted to 1000. Setting this parameter will
      change the queue_len to 4096 which is more fitting for HE.
      Signed-off-by: NJohn Crispin <john@phrozen.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      107560d8
    • M
      ath11k: enable PN offload · 1441b2f2
      Manikanta Pubbisetty 提交于
      Enabling PN checking in the hardware; hardware checks
      the PN of the received packets and reports the errors
      to the host for further handling; default action is to
      drop such packets. TSC (TKIP sequence counter)
      validation is also offloaded.
      
      Hardware validates PN/TSC only for unicast packets;
      for group addressed packets, PN validation is done
      in mac80211.
      
      PN errors are reported to the driver via WBM RX release
      ring and can be dumped by using the following command.
      
      "cat /sys/kernel/debug/ath11k/soc_rx_stats | grep -i pn"
      
      Sample Output:
      PN check fail: 210
      Signed-off-by: NManikanta Pubbisetty <mpubbise@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      1441b2f2
    • M
      ath11k: handle RX fragments · 243874c6
      Manikanta Pubbisetty 提交于
      IPQ8074 HW has support to verify the PN of the received frames.
      For all frames except for fragmented ones, HW checks the PN and
      delivers them to the driver. For fragmented frames, driver is
      required to do a little more; it has to reassemble the fragments
      and then reinject them to the HW for verifying the PN. Currently,
      to keep the logic simple, PN verifcation is disabled in HW and is
      handled in mac80211 for all the frames (fragmented and unfragmented).
      
      On the contrary, offloading PN Validation to the HW brings important
      benefits. It reduces CPU cycles spent on the host CPU for verifying
      the same; helps in enabling features which improve performance like
      mac80211 fast RX path, enabling multiple REO rings for parallel RX
      processing, 802.11 decapsulation offloading. All these features are
      dependent on PN offload which in turn is dependent on handling of
      the received fragments in the driver.
      
      When TKIP security is used, additional handling is required while
      processing the fragments; since MIC is computed on an MSDU in TKIP,
      only the last fragment has the MIC info. In this case, driver has to
      compute the MIC after reassembly and compare it against the MIC
      present in the frame. For this, MICHAEL_MIC kernel crypto library
      APIs are used and the dependencies are appropriately set.
      Signed-off-by: NManikanta Pubbisetty <mpubbise@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      243874c6
  3. 16 3月, 2020 1 次提交
  4. 12 3月, 2020 28 次提交