1. 14 2月, 2020 1 次提交
  2. 19 12月, 2019 1 次提交
    • A
      mt76: fix LED link time failure · d68f4e43
      Arnd Bergmann 提交于
      The mt76_led_cleanup() function is called unconditionally, which
      leads to a link error when CONFIG_LEDS is a loadable module or
      disabled but mt76 is built-in:
      
      drivers/net/wireless/mediatek/mt76/mac80211.o: In function `mt76_unregister_device':
      mac80211.c:(.text+0x2ac): undefined reference to `led_classdev_unregister'
      
      Use the same trick that is guarding the registration, using an
      IS_ENABLED() check for the CONFIG_MT76_LEDS symbol that indicates
      whether LEDs can be used or not.
      
      Fixes: 36f7e2b2 ("mt76: do not use devm API for led classdev")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NFelix Fietkau <nbd@nbd.name>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      d68f4e43
  3. 20 11月, 2019 13 次提交
  4. 06 9月, 2019 1 次提交
  5. 05 9月, 2019 7 次提交
  6. 27 6月, 2019 3 次提交
  7. 01 5月, 2019 7 次提交
    • R
      mt76: add TX/RX antenna pattern capabilities · f1103fa6
      Ryder Lee 提交于
      Announce antenna pattern cap to adapt PHY and baseband settings.
      Signed-off-by: NRyder Lee <ryder.lee@mediatek.com>
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      f1103fa6
    • S
      mt76usb: fix tx/rx stop · 39d501d9
      Stanislaw Gruszka 提交于
      Disabling tasklets on stopping rx/tx is wrong. If blocked tasklet
      is scheduled and we remove device we will get 100% cpu usage:
      
        PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
          9 root      20   0       0      0      0 R  93.8   0.0   1:47.19 ksoftirqd/0
      
      by infinite loop in tasklet_action_common() and eventuall crash on next
      mt76usb module load:
      
      [ 2068.591964] RIP: 0010:tasklet_action_common.isra.17+0x66/0x100
      [ 2068.591966] Code: 41 89 f5 eb 25 f0 48 0f ba 33 00 0f 83 b1 00 00 00 48 8b 7a 20 48 8b 42 18 e8 56 a3 b5 00 f0 80 23 fd 48 89 ea 48 85 ed 74 53 <48> 8b 2a 48 8d 5a 08 f0 48 0f ba 6a 08 01 72 0b 8b 42 10 85 c0 74
      [ 2068.591968] RSP: 0018:ffff98758c34be58 EFLAGS: 00010206
      [ 2068.591969] RAX: ffff98758e6966d0 RBX: ffff98756e69aef8 RCX: 0000000000000006
      [ 2068.591970] RDX: 01060a053d060305 RSI: 0000000000000006 RDI: ffff98758e6966d0
      [ 2068.591971] RBP: 01060a053d060305 R08: 0000000000000000 R09: 00000000000203c0
      [ 2068.591971] R10: 000003ff65b34f08 R11: 0000000000000001 R12: ffff98758e6966d0
      [ 2068.591972] R13: 0000000000000006 R14: 0000000000000040 R15: 0000000000000006
      [ 2068.591974] FS:  0000000000000000(0000) GS:ffff98758e680000(0000) knlGS:0000000000000000
      [ 2068.591975] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 2068.591975] CR2: 00002c5f73a6cc20 CR3: 00000002f920a001 CR4: 00000000003606e0
      [ 2068.591977] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 2068.591978] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [ 2068.591978] Call Trace:
      [ 2068.591985]  __do_softirq+0xe3/0x30a
      [ 2068.591989]  ? sort_range+0x20/0x20
      [ 2068.591990]  run_ksoftirqd+0x26/0x40
      [ 2068.591992]  smpboot_thread_fn+0xc5/0x160
      [ 2068.591995]  kthread+0x112/0x130
      [ 2068.591997]  ? kthread_create_on_node+0x40/0x40
      [ 2068.591998]  ret_from_fork+0x35/0x40
      [ 2068.591999] Modules linked in: ccm arc4 fuse rfcomm cmac bnep sunrpc snd_hda_codec_hdmi snd_soc_skl snd_soc_core snd_soc_acpi_intel_match snd_hda_codec_realtek snd_soc_acpi snd_hda_codec_generic snd_soc_skl_ipc snd_soc_sst_ipc snd_soc_sst_dsp snd_hda_ext_core iTCO_wdt snd_hda_intel intel_rapl iTCO_vendor_support x86_pkg_temp_thermal intel_powerclamp btusb mei_wdt coretemp btrtl snd_hda_codec btbcm btintel intel_cstate snd_hwdep intel_uncore uvcvideo snd_hda_core videobuf2_vmalloc videobuf2_memops intel_rapl_perf wmi_bmof videobuf2_v4l2 intel_wmi_thunderbolt snd_seq bluetooth joydev videobuf2_common snd_seq_device snd_pcm videodev media i2c_i801 snd_timer idma64 ecdh_generic intel_lpss_pci intel_lpss mei_me mei ucsi_acpi typec_ucsi processor_thermal_device intel_soc_dts_iosf intel_pch_thermal typec thinkpad_acpi wmi snd soundcore rfkill int3403_thermal int340x_thermal_zone int3400_thermal acpi_thermal_rel acpi_pad pcc_cpufreq uas usb_storage crc32c_intel i915 i2c_algo_bit nvme serio_raw
      [ 2068.592033]  drm_kms_helper e1000e nvme_core drm video ipv6 [last unloaded: cfg80211]
      
      Fortunate thing is that this not happen frequently, as scheduling
      tasklet on blocked state is very exceptional, though might happen.
      
      Due to different RX/TX tasklet processing fix is different for those.
      
      For RX we have to assure rx_tasklet do fail to resubmit buffers
      by poisoning urb's and kill the tasklet.
      
      For TX we need to handle all stop cases properly (suspend, module
      unload, device removal).
      Signed-off-by: NStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      39d501d9
    • F
      mt76: use mac80211 txq scheduling · 90fdc171
      Felix Fietkau 提交于
      Performance improvement and preparation for adding airtime fairness support
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      90fdc171
    • F
      mt76: fix tx power issues · cee646d6
      Felix Fietkau 提交于
      - tx power is stored in the channels after ieee80211_register_hw, so
        chan->orig_mpwr needs to be updated as well
      - for non-TSSI devices, mt76x2e needs to use a different target power value
        from the EEPROM
      - fix a rounding error in a few places (need to round up, not down)
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      cee646d6
    • L
      mt76: introduce mt76_free_device routine · def34a2f
      Lorenzo Bianconi 提交于
      Move mt76_tx_free in mt76_free_device routine in order to
      unmap all txwi descriptors at module unload
      Signed-off-by: NLorenzo Bianconi <lorenzo@kernel.org>
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      def34a2f
    • S
      mt76: unify set_tim · 87d53103
      Stanislaw Gruszka 提交于
      All mt76 drivers (now also USB drivers) require empty .set_tim
      callback. Add it to common mt76 module and use on all drivers.
      Signed-off-by: NStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      87d53103
    • L
      mt76: introduce mt76_sw_queue data structure · af005f26
      Lorenzo Bianconi 提交于
      Introduce mt76_sw_queue data structure in order to support new
      chipsets (e.g. mt7615) that have a shared hardware queue for all traffic
      identifiers. mt76_sw_queue will be used to track outstanding packets
      Signed-off-by: NLorenzo Bianconi <lorenzo@kernel.org>
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      af005f26
  8. 19 3月, 2019 1 次提交
    • L
      mt76: fix schedule while atomic in mt76x02_reset_state · 13f61dfc
      Lorenzo Bianconi 提交于
      Fix following schedule while atomic in mt76x02_reset_state
      since synchronize_rcu is run inside a RCU section
      
      [44036.944222] mt76x2e 0000:06:00.0: MCU message 31 (seq 3) timed out
      [44036.944281] BUG: sleeping function called from invalid context at kernel/rcu/tree_exp.h:818
      [44036.944284] in_atomic(): 1, irqs_disabled(): 0, pid: 28066, name: kworker/u4:1
      [44036.944287] INFO: lockdep is turned off.
      [44036.944292] CPU: 1 PID: 28066 Comm: kworker/u4:1 Tainted: G        W         5.0.0-rc7-wdn-t1+ #7
      [44036.944294] Hardware name: Dell Inc. Studio XPS 1340/0K183D, BIOS A11 09/08/2009
      [44036.944305] Workqueue: phy1 mt76x02_wdt_work [mt76x02_lib]
      [44036.944308] Call Trace:
      [44036.944317]  dump_stack+0x67/0x90
      [44036.944322]  ___might_sleep.cold.88+0x9f/0xaf
      [44036.944327]  rcu_blocking_is_gp+0x13/0x50
      [44036.944330]  synchronize_rcu+0x17/0x80
      [44036.944337]  mt76_sta_state+0x138/0x1d0 [mt76]
      [44036.944349]  mt76x02_wdt_work+0x1c9/0x610 [mt76x02_lib]
      [44036.944355]  process_one_work+0x2a5/0x620
      [44036.944361]  worker_thread+0x35/0x3e0
      [44036.944368]  kthread+0x11c/0x140
      [44036.944376]  ret_from_fork+0x3a/0x50
      [44036.944384] BUG: scheduling while atomic: kworker/u4:1/28066/0x00000002
      [44036.944387] INFO: lockdep is turned off.
      [44036.944389] Modules linked in: cmac ctr ccm af_packet snd_hda_codec_hdmi
      
      Introduce __mt76_sta_remove in order to run sta_remove without holding dev->mutex.
      Move __mt76_sta_remove outside of RCU section in mt76x02_reset_state
      
      Fixes: e4ebb8b403d1 ("mt76: mt76x2: implement full device restart on watchdog reset")
      Signed-off-by: NLorenzo Bianconi <lorenzo@kernel.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      13f61dfc
  9. 26 2月, 2019 1 次提交
  10. 19 2月, 2019 2 次提交
  11. 17 1月, 2019 3 次提交