An error occurred fetching the project authors.
  1. 25 Jun, 2019 1 commit
    • Venkateswara Naralasetty's avatar
      ath10k: Add wrapper function to ath10k debug · 9d740d63
      Venkateswara Naralasetty authored
      ath10k_dbg() is called in ath10k_process_rx() with huge set of arguments
      which is causing CPU overhead even when debug_mask is not set.
      Good improvement was observed in the receive side performance when call
      to ath10k_dbg() is avoided in the RX path.
      
      Since currently all debug messages are sent via tracing infrastructure,
      we cannot entirely avoid calling ath10k_dbg. Therefore, call to
      ath10k_dbg() is made conditional based on tracing config in the driver.
      
      Trasmit performance remains unchanged with this patch; below are some
      experimental results with this patch and tracing disabled.
      
      mesh mode:
      
      		w/o this patch          with this patch
      Traffic       TP      CPU Usage      TP      CPU usage
      
      TCP          840Mbps    76.53%      960Mbps    78.14%
      UDP          1030Mbps   74.58%      1132Mbps   74.31%
      
      Infra mode:
      
      		w/o this patch          with this patch
      Traffic        TP      CPU Usage      TP      CPU usage
      
      TCP Rx       1241Mbps   80.89%      1270Mbps   73.50%
      UDP Rx       1433Mbps   81.77%      1472Mbps   72.80%
      
      Tested platform	: IPQ8064
      hardware used	: QCA9984
      firmware ver	: ver 10.4-3.5.3-00057
      Signed-off-by: default avatarKan Yan <kyan@chromium.org>
      Signed-off-by: default avatarVenkateswara Naralasetty <vnaralas@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      9d740d63
  2. 07 May, 2019 3 commits
  3. 26 Feb, 2019 1 commit
  4. 20 Feb, 2019 1 commit
  5. 11 Feb, 2019 1 commit
  6. 19 Dec, 2018 1 commit
  7. 13 Oct, 2018 1 commit
  8. 01 Oct, 2018 1 commit
    • Maharaja Kennadyrajan's avatar
      ath10k: add debugfs support to get power save state change of STA · d70c0d46
      Maharaja Kennadyrajan authored
      This patch helps to get the power save state change of each peer
      connected to the AP. With WMI_10_4_PEER_STA_PS_STATECHG_EVENTID
      event, ps state of each peer is reported to user space via
      debugfs.
      
      Use the below command to get the ps state of each sta:
      cat /sys/kernel/debug/ieee80211/phyX/netdev::wlanX/stations/
      XX:XX:XX:XX:XX:XX/peer_ps_state
      
      If STA is in power save state, we get the peer_ps_state value as 1.
      if STA is not in power save state, we get the peer_ps_state value as 0.
      If ps_state event is disabled, we get the peer_ps_state value as 2.
      
      We can enable/disable the ps_state events using the debugfs flag
      "ps_state_enable"
      
      echo Y > /sys/kernel/debug/ieee80211/phyX/ath10k/ps_state_enable
      
      Y = 1 to enable and Y = 0 to disable
      
      Tested in QCA4019 with firmware ver 10.4-3.2.1.1-00011
      Signed-off-by: default avatarMaharaja Kennadyrajan <mkenna@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      d70c0d46
  9. 06 Sep, 2018 1 commit
  10. 30 Jul, 2018 1 commit
    • Maharaja Kennadyrajan's avatar
      ath10k: add debugfs file warm_hw_reset · db251d7d
      Maharaja Kennadyrajan authored
      Debugfs support to do hardware warm reset with WMI command
      WMI_PDEV_PARAM_PDEV_RESET for 10.4 and 10.2.4(if wmi
      service is enabled in the firmware for backward compatibility).
      
      This change is purely for debugging purpose when hardware hangs/mutes.
      
      This hardware reset won't affect the connectivity but there will be small
      pause in data traffic. Here we are doing BB/MAC level reset and hence
      whenever the BB/MAC watchdog is triggered, it does a hardware_chip_reset.
      So the target will be in the active state.
      
      Below command used to warm reset the hardware.
      echo 1 > /sys/kernel/debug/ieee80211/phyX/ath10k/warm_hw_reset
      
      Tested in QCA988X with firmware ver 10.2.4.70.45
      Tested in QCA4019 with firmware ver 10.4-3.2.1.1-00011
      Signed-off-by: default avatarMaharaja Kennadyrajan <mkenna@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      db251d7d
  11. 14 Jun, 2018 1 commit
  12. 27 Apr, 2018 2 commits
    • Tamizh Chelvam's avatar
      ath10k: fix kernel panic while reading tpc_stats · 4b190675
      Tamizh Chelvam authored
      When attempt to read tpc_stats for the chipsets which support
      more than 3 tx chain will trigger kernel panic(kernel stack is corrupted)
      due to writing values on rate_code array out of range.
      This patch changes the array size depends on the WMI_TPC_TX_N_CHAIN and
      added check to avoid write values on the array if the num tx chain
      get in tpc config event is greater than WMI_TPC_TX_N_CHAIN.
      
      Tested on QCA9984 with firmware-5.bin_10.4-3.5.3-00057
      
      Kernel panic log :
      
      [  323.510944] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: bf90c654
      [  323.510944]
      [  323.524390] CPU: 0 PID: 1908 Comm: cat Not tainted 3.14.77 #31
      [  323.530224] [<c021db48>] (unwind_backtrace) from [<c021ac08>] (show_stack+0x10/0x14)
      [  323.537941] [<c021ac08>] (show_stack) from [<c03c53c0>] (dump_stack+0x80/0xa0)
      [  323.545146] [<c03c53c0>] (dump_stack) from [<c022e4ac>] (panic+0x84/0x1e4)
      [  323.552000] [<c022e4ac>] (panic) from [<c022e61c>] (__stack_chk_fail+0x10/0x14)
      [  323.559350] [<c022e61c>] (__stack_chk_fail) from [<bf90c654>] (ath10k_wmi_event_pdev_tpc_config+0x424/0x438 [ath10k_core])
      [  323.570471] [<bf90c654>] (ath10k_wmi_event_pdev_tpc_config [ath10k_core]) from [<bf90d800>] (ath10k_wmi_10_4_op_rx+0x2f0/0x39c [ath10k_core])
      [  323.583047] [<bf90d800>] (ath10k_wmi_10_4_op_rx [ath10k_core]) from [<bf8fcc18>] (ath10k_htc_rx_completion_handler+0x170/0x1a0 [ath10k_core])
      [  323.595702] [<bf8fcc18>] (ath10k_htc_rx_completion_handler [ath10k_core]) from [<bf961f44>] (ath10k_pci_hif_send_complete_check+0x1f0/0x220 [ath10k_pci])
      [  323.609421] [<bf961f44>] (ath10k_pci_hif_send_complete_check [ath10k_pci]) from [<bf96562c>] (ath10k_ce_per_engine_service+0x74/0xc4 [ath10k_pci])
      [  323.622490] [<bf96562c>] (ath10k_ce_per_engine_service [ath10k_pci]) from [<bf9656f0>] (ath10k_ce_per_engine_service_any+0x74/0x80 [ath10k_pci])
      [  323.635423] [<bf9656f0>] (ath10k_ce_per_engine_service_any [ath10k_pci]) from [<bf96365c>] (ath10k_pci_napi_poll+0x44/0xe8 [ath10k_pci])
      [  323.647665] [<bf96365c>] (ath10k_pci_napi_poll [ath10k_pci]) from [<c0599994>] (net_rx_action+0xac/0x160)
      [  323.657208] [<c0599994>] (net_rx_action) from [<c02324a4>] (__do_softirq+0x104/0x294)
      [  323.665017] [<c02324a4>] (__do_softirq) from [<c0232920>] (irq_exit+0x9c/0x11c)
      [  323.672314] [<c0232920>] (irq_exit) from [<c0217fc0>] (handle_IRQ+0x6c/0x90)
      [  323.679341] [<c0217fc0>] (handle_IRQ) from [<c02084e0>] (gic_handle_irq+0x3c/0x60)
      [  323.686893] [<c02084e0>] (gic_handle_irq) from [<c02095c0>] (__irq_svc+0x40/0x70)
      [  323.694349] Exception stack(0xdd489c58 to 0xdd489ca0)
      [  323.699384] 9c40:                                                       00000000 a0000013
      [  323.707547] 9c60: 00000000 dc4bce40 60000013 ddc1d800 dd488000 00000990 00000000 c085c800
      [  323.715707] 9c80: 00000000 dd489d44 0000092d dd489ca0 c026e664 c026e668 60000013 ffffffff
      [  323.723877] [<c02095c0>] (__irq_svc) from [<c026e668>] (rcu_note_context_switch+0x170/0x184)
      [  323.732298] [<c026e668>] (rcu_note_context_switch) from [<c020e928>] (__schedule+0x50/0x4d4)
      [  323.740716] [<c020e928>] (__schedule) from [<c020e490>] (schedule_timeout+0x148/0x178)
      [  323.748611] [<c020e490>] (schedule_timeout) from [<c020f804>] (wait_for_common+0x114/0x154)
      [  323.756972] [<c020f804>] (wait_for_common) from [<bf8f6ef0>] (ath10k_tpc_stats_open+0xc8/0x340 [ath10k_core])
      [  323.766873] [<bf8f6ef0>] (ath10k_tpc_stats_open [ath10k_core]) from [<c02bb598>] (do_dentry_open+0x1ac/0x274)
      [  323.776741] [<c02bb598>] (do_dentry_open) from [<c02c838c>] (do_last+0x8c0/0xb08)
      [  323.784201] [<c02c838c>] (do_last) from [<c02c87e4>] (path_openat+0x210/0x598)
      [  323.791408] [<c02c87e4>] (path_openat) from [<c02c9d1c>] (do_filp_open+0x2c/0x78)
      [  323.798873] [<c02c9d1c>] (do_filp_open) from [<c02bc85c>] (do_sys_open+0x114/0x1b4)
      [  323.806509] [<c02bc85c>] (do_sys_open) from [<c0208c80>] (ret_fast_syscall+0x0/0x44)
      [  323.814241] CPU1: stopping
      [  323.816927] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.77 #31
      [  323.823008] [<c021db48>] (unwind_backtrace) from [<c021ac08>] (show_stack+0x10/0x14)
      [  323.830731] [<c021ac08>] (show_stack) from [<c03c53c0>] (dump_stack+0x80/0xa0)
      [  323.837934] [<c03c53c0>] (dump_stack) from [<c021cfac>] (handle_IPI+0xb8/0x140)
      [  323.845224] [<c021cfac>] (handle_IPI) from [<c02084fc>] (gic_handle_irq+0x58/0x60)
      [  323.852774] [<c02084fc>] (gic_handle_irq) from [<c02095c0>] (__irq_svc+0x40/0x70)
      [  323.860233] Exception stack(0xdd499fa0 to 0xdd499fe8)
      [  323.865273] 9fa0: ffffffed 00000000 1d3c9000 00000000 dd498000 dd498030 10c0387d c08b62c8
      [  323.873432] 9fc0: 4220406a 512f04d0 00000000 00000000 00000001 dd499fe8 c021838c c0218390
      [  323.881588] 9fe0: 60000013 ffffffff
      [  323.885070] [<c02095c0>] (__irq_svc) from [<c0218390>] (arch_cpu_idle+0x30/0x50)
      [  323.892454] [<c0218390>] (arch_cpu_idle) from [<c026500c>] (cpu_startup_entry+0xa4/0x108)
      [  323.900690] [<c026500c>] (cpu_startup_entry) from [<422085a4>] (0x422085a4)
      Signed-off-by: default avatarTamizh chelvam <tamizhr@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      4b190675
    • Venkateswara Naralasetty's avatar
      ath10k: fix information leak in debugfs · 2f177c16
      Venkateswara Naralasetty authored
      During write to some of debugfs in ath10k, few variables exposing stack
      data when process user input. which leads to possible information leak.
      
      This patch fix this issue by initializing buffer and checks
      the return valure of 'simple_write_to_buffer'.
      Signed-off-by: default avatarVenkateswara Naralasetty <vnaralas@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      2f177c16
  13. 26 Mar, 2018 2 commits
    • Maharaja Kennadyrajan's avatar
      ath10k: debugfs support to get final TPC stats for 10.4 variants · bc64d052
      Maharaja Kennadyrajan authored
      Export the final Transmit Power Control (TPC) value, which is the
      minimum of control power and existing TPC value to user space via
      a new debugfs file "tpc_stats_final" to help with debugging.
      It works with the new wmi cmd and event introduced in 10.4 firmware
      branch.
      
      WMI command ID: WMI_PDEV_GET_TPC_TABLE_CMDID
      WMI event ID: WMI_PDEV_TPC_TABLE_EVENTID
      
      cat /sys/kernel/debug/ieee80211/phyX/ath10k/tpc_stats_final
      
      $ cat /sys/kernel/debug/ieee80211/phyX/ath10k/tpc_stats_final
      
      TPC config for channel 5180 mode 10
      
      CTL             =  0x 0 Reg. Domain             = 58
      Antenna Gain    =  0 Reg. Max Antenna Gain      =   0
      Power Limit     = 60 Reg. Max Power             = 60
      Num tx chains   =  2 Num supported rates        = 109
      
      ******************* CDD POWER TABLE ****************
      
      No.  Preamble Rate_code tpc_value1 tpc_value2 tpc_value3
      0    CCK      0x40        0          0
      1    CCK      0x41        0          0
      [...]
      107  HTCUP    0x 0       46          46
      108  HTCUP    0x 0       46          46
      
      ******************* STBC POWER TABLE ****************
      
      No.  Preamble Rate_code tpc_value1 tpc_value2 tpc_value3
      0    CCK      0x40        0          0
      1    CCK      0x41        0          0
      [...]
      107  HTCUP    0x 0        46         46
      108  HTCUP    0x 0        46         46
      
      ***********************************
      TXBF not supported
      **********************************
      
      The existing tpc_stats debugfs file provides the dump
      which is minimum of target power and regulatory domain.
      
      cat /sys/kernel/debug/ieee80211/phyX/ath10k/tpc_stats
      
      Hardware_used: QCA4019
      Firmware version: firmware-5.bin_10.4-3.0-00209
      Signed-off-by: default avatarMaharaja Kennadyrajan <mkenna@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      bc64d052
    • Vasanthakumar Thiagarajan's avatar
      ath10k: add sta rx packet stats per tid · caee728a
      Vasanthakumar Thiagarajan authored
      Added per tid sta counters for the following
      
      - Total number MSDUs received from firmware
      - Number of MSDUs received with errors like decryption, crc, mic ,etc.
      - Number of MSDUs dropped in the driver
      - A-MPDU/A-MSDU subframe stats
      - Number of MSDUS passed to mac80211
      
      All stats other than A-MPDU stats are only for received data frames.
      A-MPDU stats might have stats for management frames when monitor
      interface is active where management frames are notified both in wmi
      and HTT interfaces.
      
      These per tid stats can be enabled with tid bitmask through a debugfs
      like below
      
       echo <tid_bitmask> > /sys/kernel/debug/ieee80211/phyX/ath10k/sta_tid_stats_mask
      
       tid 16 (tid_bitmask 0x10000) is used for non-qos data/management frames
      
      The stats are read from
      /sys/kernel/debug/ieee80211/phyX/netdev\:wlanX/stations/<sta_mac>/dump_tid_stats
      
      Sample output:
      
       To enable rx stats for tid 0, 5 and 6,
      
       echo 0x00000061 > /sys/kernel/debug/ieee80211/phy0/ath10k/sta_tid_stats_mask
      
      cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan15/stations/8c\:fd\:f0\:0a\:8e\:df/dump_tid_stats
      
        		Driver Rx pkt stats per tid, ([tid] count)
                      ------------------------------------------
      MSDUs from FW                   [00] 2567        [05] 3178        [06] 1089
      MSDUs unchained                 [00] 0           [05] 0           [06] 0
      MSDUs locally dropped:chained   [00] 0           [05] 0           [06] 0
      MSDUs locally dropped:filtered  [00] 0           [05] 0           [06] 0
      MSDUs queued for mac80211       [00] 2567        [05] 3178        [06] 1089
      MSDUs with error:fcs_err        [00] 0           [05] 0           [06] 2
      MSDUs with error:tkip_err       [00] 0           [05] 0           [06] 0
      MSDUs with error:crypt_err      [00] 0           [05] 0           [06] 0
      MSDUs with error:peer_idx_inval [00] 0           [05] 0           [06] 0
      
      A-MPDU num subframes upto 10    [00] 2567        [05] 3178        [06] 1087
      A-MPDU num subframes 11-20      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 21-30      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 31-40      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 41-50      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 51-60      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes >60        [00] 0           [05] 0           [06] 0
      
      A-MSDU num subframes 1          [00] 2567        [05] 3178        [06] 1089
      A-MSDU num subframes 2          [00] 0           [05] 0           [06] 0
      A-MSDU num subframes 3          [00] 0           [05] 0           [06] 0
      A-MSDU num subframes 4          [00] 0           [05] 0           [06] 0
      A-MSDU num subframes >4         [00] 0           [05] 0           [06] 0
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vthiagar@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      caee728a
  14. 07 Feb, 2018 1 commit
    • Yu Wang's avatar
      ath10k: fix kernel panic issue during pci probe · 50e79e25
      Yu Wang authored
      If device gone during chip reset, ar->normal_mode_fw.board is not
      initialized, but ath10k_debug_print_hwfw_info() will try to access its
      member, which will cause 'kernel NULL pointer' issue. This was found
      using a faulty device (pci link went down sometimes) in a random
      insmod/rmmod/other-op test.
      To fix it, check ar->normal_mode_fw.board before accessing the member.
      
      pci 0000:02:00.0: BAR 0: assigned [mem 0xf7400000-0xf75fffff 64bit]
      ath10k_pci 0000:02:00.0: enabling device (0000 -> 0002)
      ath10k_pci 0000:02:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
      ath10k_pci 0000:02:00.0: failed to read device register, device is gone
      ath10k_pci 0000:02:00.0: failed to wait for target init: -5
      ath10k_pci 0000:02:00.0: failed to warm reset: -5
      ath10k_pci 0000:02:00.0: firmware crashed during chip reset
      ath10k_pci 0000:02:00.0: firmware crashed! (uuid 5d018951-b8e1-404a-8fde-923078b4423a)
      ath10k_pci 0000:02:00.0: (null) target 0x00000000 chip_id 0x00340aff sub 0000:0000
      ath10k_pci 0000:02:00.0: kconfig debug 1 debugfs 1 tracing 1 dfs 1 testmode 1
      ath10k_pci 0000:02:00.0: firmware ver  api 0 features  crc32 00000000
      ...
      BUG: unable to handle kernel NULL pointer dereference at 00000004
      ...
      Call Trace:
       [<fb4e7882>] ath10k_print_driver_info+0x12/0x20 [ath10k_core]
       [<fb62b7dd>] ath10k_pci_fw_crashed_dump+0x6d/0x4d0 [ath10k_pci]
       [<fb629f07>] ? ath10k_pci_sleep.part.19+0x57/0xc0 [ath10k_pci]
       [<fb62c8ee>] ath10k_pci_hif_power_up+0x14e/0x1b0 [ath10k_pci]
       [<c10477fb>] ? do_page_fault+0xb/0x10
       [<fb4eb934>] ath10k_core_register_work+0x24/0x840 [ath10k_core]
       [<c18a00d8>] ? netlbl_unlhsh_remove+0x178/0x410
       [<c10477f0>] ? __do_page_fault+0x480/0x480
       [<c1068e44>] process_one_work+0x114/0x3e0
       [<c1069d07>] worker_thread+0x37/0x4a0
       [<c106e294>] kthread+0xa4/0xc0
       [<c1069cd0>] ? create_worker+0x180/0x180
       [<c106e1f0>] ? kthread_park+0x50/0x50
       [<c18ab4f7>] ret_from_fork+0x1b/0x28
       Code: 78 80 b8 50 09 00 00 00 75 5d 8d 75 94 c7 44 24 08 aa d7 52 fb c7 44 24 04 64 00 00 00
       89 34 24 e8 82 52 e2 c5 8b 83 dc 08 00 00 <8b> 50 04 8b 08 31 c0 e8 20 57 e3 c5 89 44 24 10 8b 83 58 09 00
       EIP: [<fb4e7754>]-
       ath10k_debug_print_board_info+0x34/0xb0 [ath10k_core]
       SS:ESP 0068:f4921d90
       CR2: 0000000000000004
      Signed-off-by: default avatarYu Wang <yyuwang@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      50e79e25
  15. 27 Dec, 2017 4 commits
  16. 14 Dec, 2017 1 commit
  17. 07 Dec, 2017 1 commit
  18. 08 Aug, 2017 1 commit
  19. 06 Jul, 2017 1 commit
  20. 04 May, 2017 1 commit
  21. 05 Apr, 2017 3 commits
  22. 20 Mar, 2017 1 commit
  23. 16 Mar, 2017 1 commit
    • Mohammed Shafi Shajakhan's avatar
      ath10k: disallow DFS simulation if DFS channel is not enabled · ca07baab
      Mohammed Shafi Shajakhan authored
      If DFS is not enabled in hostapd (ieee80211h=0) DFS channels shall
      not be available for use even though the hardware may have the capability
      to support DFS. With this configuration (DFS disabled in hostapd) trying to
      bring up ath10k device in DFS channel for AP mode fails and trying to
      simulate DFS in ath10k debugfs results in a warning in cfg80211 complaining
      invalid channel and this should be avoided in the driver itself rather than
      false propogating RADAR detection to mac80211/cfg80211. Fix this by
      checking for the first vif 'is_started' state(should work for client mode
      as well) as all the vifs shall be configured for the same channel
      
      sys/kernel/debug/ieee80211/phy1/ath10k# echo 1 > dfs_simulate_radar
      
      WARNING: at net/wireless/chan.c:265 cfg80211_radar_event+0x24/0x60
      Workqueue: phy0 ieee80211_dfs_radar_detected_work [mac80211]
      [<c022f2d4>] (warn_slowpath_null) from
      [<bf72dab8>] (cfg80211_radar_event+0x24/0x60 [cfg80211])
      [<bf72dab8>] (cfg80211_radar_event [cfg80211]) from
      [<bf7813e0>] (ieee80211_dfs_radar_detected_work+0x94/0xa0 [mac80211])
      [<bf7813e0>] (ieee80211_dfs_radar_detected_work [mac80211]) from
      [<c0242320>] (process_one_work+0x20c/0x32c)
      
      WARNING: at net/wireless/nl80211.c:2488 nl80211_get_mpath+0x13c/0x4cc
       Workqueue: phy0 ieee80211_dfs_radar_detected_work [mac80211]
      [<c022f2d4>] (warn_slowpath_null) from
      [<bf72dab8>] (cfg80211_radar_event+0x24/0x60 [cfg80211])
      [<bf72dab8>] (cfg80211_radar_event [cfg80211]) from
      [<bf7813e0>] (ieee80211_dfs_radar_detected_work+0x94/0xa0 [mac80211])
      [<bf7813e0>] (ieee80211_dfs_radar_detected_work [mac80211]) from
      [<c0242320>] (process_one_work+0x20c/0x32c)
      Signed-off-by: default avatarMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      ca07baab
  24. 14 Feb, 2017 1 commit
  25. 19 Jan, 2017 1 commit
    • Mohammed Shafi Shajakhan's avatar
      ath10k: dump Copy Engine registers during firmware crash · c75c398b
      Mohammed Shafi Shajakhan authored
      Dump Copy Engine source and destination ring addresses.
      This is useful information to debug firmware crashes, assertes or hangs over long run
      assessing the Copy Engine Register status. This also enables dumping CE
      register status in debugfs Crash Dump file.
      
      Screenshot:
      
      ath10k_pci 0000:02:00.0: simulating hard firmware crash
      ath10k_pci 0000:02:00.0: firmware crashed! (uuid 84901ff5-d33c-456e-93ee-0165dea643cf)
      ath10k_pci 0000:02:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043202ff sub 0000:0000
      ath10k_pci 0000:02:00.0: kconfig debug 1 debugfs 1 tracing 1 dfs 1 testmode 1
      ath10k_pci 0000:02:00.0: firmware ver 10.2.4.70.59-2 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 4159f498
      ath10k_pci 0000:02:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
      ath10k_pci 0000:02:00.0: htt-ver 2.1 wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1
      ath10k_pci 0000:02:00.0: firmware register dump:
      ath10k_pci 0000:02:00.0: [00]: 0x4100016C 0x00000000 0x009A0F2A 0x00000000
      ath10k_pci 0000:02:00.0: [04]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [08]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [12]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [16]: 0x00000000 0x00000000 0x00000000 0x009A0F2A
      ath10k_pci 0000:02:00.0: [20]: 0x00000000 0x00401930 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [24]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [28]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [32]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [36]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [40]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [44]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [48]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [52]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [56]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: Copy Engine register dump:
      ath10k_pci 0000:02:00.0: [00]: 0x00057400   7   7   3   3
      ath10k_pci 0000:02:00.0: [01]: 0x00057800  18  18  85  86
      ath10k_pci 0000:02:00.0: [02]: 0x00057c00  49  49  48  49
      ath10k_pci 0000:02:00.0: [03]: 0x00058000  16  16  17  16
      ath10k_pci 0000:02:00.0: [04]: 0x00058400   4   4  44   4
      ath10k_pci 0000:02:00.0: [05]: 0x00058800  12  12  11  12
      ath10k_pci 0000:02:00.0: [06]: 0x00058c00   3   3   3   3
      ath10k_pci 0000:02:00.0: [07]: 0x00059000   0   0   0   0
      ieee80211 phy0: Hardware restart was requested
      ath10k_pci 0000:02:00.0: device successfully recovered
      Signed-off-by: default avatarMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      [kvalo@qca.qualcomm.com: simplify the implementation]
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      c75c398b
  26. 13 Jan, 2017 1 commit
  27. 30 Dec, 2016 1 commit
    • Arun Khandavalli's avatar
      ath10k: support dev_coredump for crash dump · 727000e6
      Arun Khandavalli authored
      Whenever firmware crashes, and both CONFIG_ATH10K_DEBUGFS and
      CONFIG_ALLOW_DEV_COREDUMP are enabled, dump information about the crash via a
      devcoredump device. Dump can be read from userspace for further analysis from:
      
      /sys/class/devcoredump/devcd*/data
      
      As until now we have provided the firmware crash dump file via fw_crash_dump
      debugfs keep it still available but deprecate and a warning print that the user
      should switch to using dev_coredump.
      
      Future improvement would be not to depend on CONFIG_ATH10K_DEBUGFS, as there
      might be systems which want to get the firmware crash dump but not enable
      debugfs. How to handle memory consumption is also something which needs to be
      taken into account.
      Signed-off-by: default avatarArun Khandavalli <akhandav@qti.qualcomm.com>
      [kvalo@qca.qualcomm.com: rebase, fixes, improve commit log]
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      727000e6
  28. 13 Oct, 2016 1 commit
    • Marty Faltesek's avatar
      ath10k: cache calibration data when the core is stopped · f67b107d
      Marty Faltesek authored
      Commit 0b8e3c4c ("ath10k: move cal data len to hw_params") broke retrieving
      the calibration data from cal_data debugfs file. The length of file was always
      zero. The reason is:
      
          static ssize_t ath10k_debug_cal_data_read(struct file *file,
                                                char __user *user_buf,
                                                size_t count, loff_t *ppos)
          {
              struct ath10k *ar = file->private_data;
              void *buf = file->private_data;
      
      This is obviously bogus, private_data cannot contain both struct ath10k and the
      buffer. Fix it by caching calibration data to ar->debug.cal_data. This also
      allows it to be accessed when the device is not active (interface is down).
      
      The cal_data buffer is fixed size because during the first firmware probe we
      don't yet know what will be the lenght of the calibration data. It was simplest
      just to use a fixed length. There's a WARN_ON() in
      ath10k_debug_cal_data_fetch() if the buffer is too small.
      
      Tested with qca988x and firmware 10.2.4.70.56.
      Reported-by: default avatarNikolay Martynov <mar.kolya@gmail.com>
      Fixes: 0b8e3c4c ("ath10k: move cal data len to hw_params")
      Cc: stable@vger.kernel.org # 4.7+
      Signed-off-by: default avatarMarty Faltesek <mfaltesek@google.com>
      [kvalo@qca.qualcomm.com: improve commit log and minor other changes]
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      f67b107d
  29. 02 Sep, 2016 1 commit
  30. 04 Aug, 2016 1 commit
    • Masahiro Yamada's avatar
      tree-wide: replace config_enabled() with IS_ENABLED() · 97f2645f
      Masahiro Yamada authored
      The use of config_enabled() against config options is ambiguous.  In
      practical terms, config_enabled() is equivalent to IS_BUILTIN(), but the
      author might have used it for the meaning of IS_ENABLED().  Using
      IS_ENABLED(), IS_BUILTIN(), IS_MODULE() etc.  makes the intention
      clearer.
      
      This commit replaces config_enabled() with IS_ENABLED() where possible.
      This commit is only touching bool config options.
      
      I noticed two cases where config_enabled() is used against a tristate
      option:
      
       - config_enabled(CONFIG_HWMON)
        [ drivers/net/wireless/ath/ath10k/thermal.c ]
      
       - config_enabled(CONFIG_BACKLIGHT_CLASS_DEVICE)
        [ drivers/gpu/drm/gma500/opregion.c ]
      
      I did not touch them because they should be converted to IS_BUILTIN()
      in order to keep the logic, but I was not sure it was the authors'
      intention.
      
      Link: http://lkml.kernel.org/r/1465215656-20569-1-git-send-email-yamada.masahiro@socionext.comSigned-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Cc: Stas Sergeev <stsp@list.ru>
      Cc: Matt Redfearn <matt.redfearn@imgtec.com>
      Cc: Joshua Kinard <kumba@gentoo.org>
      Cc: Jiri Slaby <jslaby@suse.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: "Dmitry V. Levin" <ldv@altlinux.org>
      Cc: yu-cheng yu <yu-cheng.yu@intel.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Brian Gerst <brgerst@gmail.com>
      Cc: Johannes Berg <johannes@sipsolutions.net>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Will Drewry <wad@chromium.org>
      Cc: Nikolay Martynov <mar.kolya@gmail.com>
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Rafal Milecki <zajec5@gmail.com>
      Cc: James Cowgill <James.Cowgill@imgtec.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Alex Smith <alex.smith@imgtec.com>
      Cc: Adam Buchbinder <adam.buchbinder@gmail.com>
      Cc: Qais Yousef <qais.yousef@imgtec.com>
      Cc: Jiang Liu <jiang.liu@linux.intel.com>
      Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Denys Vlasenko <dvlasenk@redhat.com>
      Cc: Brian Norris <computersforpeace@gmail.com>
      Cc: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
      Cc: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Dave Hansen <dave.hansen@linux.intel.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Roland McGrath <roland@hack.frob.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: Kalle Valo <kvalo@qca.qualcomm.com>
      Cc: Viresh Kumar <viresh.kumar@linaro.org>
      Cc: Tony Wu <tung7970@gmail.com>
      Cc: Huaitong Han <huaitong.han@intel.com>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Andrea Gelmini <andrea.gelmini@gelma.net>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Rabin Vincent <rabin@rab.in>
      Cc: "Maciej W. Rozycki" <macro@imgtec.com>
      Cc: David Daney <david.daney@cavium.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      97f2645f
  31. 08 Jul, 2016 1 commit
    • Mohammed Shafi Shajakhan's avatar
      ath10k: fix 10.4 extended peer stats update · 4a49ae94
      Mohammed Shafi Shajakhan authored
      10.4 'extended peer stats' will be not be appended with normal peer stats
      data and they shall be coming in separate chunks. Fix this by maintaining
      a separate linked list 'extender peer stats' for 10.4 and update
      rx_duration for per station statistics. Also parse through beacon filter
      (if enabled), to make sure we parse the extended peer stats properly.
      This issue was exposed when more than one client is connected and
      extended peer stats for 10.4 is enabled
      
      The order for the stats is as below
      S - standard peer stats, E- extended peer stats, B - beacon filter stats
      
      {S1, S2, S3..} -> {B1, B2, B3..}(if available) -> {E1, E2, E3..}
      
      Fixes: f9575793 ("ath10k: enable parsing per station rx duration for 10.4")
      Signed-off-by: default avatarMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      4a49ae94