aboutsummaryrefslogtreecommitdiff
path: root/drivers/net
AgeCommit message (Collapse)AuthorFilesLines
2019-11-20mt76: mt7615: remove unneeded semicolonYueHaibing2-2/+2
remove unneeded semicolon. This is detected by coccinelle. Signed-off-by: YueHaibing <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x0: remove 350ms delay in mt76x0_phy_calibrateLorenzo Bianconi1-1/+0
Since mt76x0 does not save the phy calibration data it is not necessary to wait 350ms in mt76x0_phy_calibrate Tested-by: Sid Hayn <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x02u: update ewma pkt len in mt76x02u_tx_prepare_skbLorenzo Bianconi1-0/+6
Update ewma packet length in mt76x02u_tx_prepare_skb as it is done for pci counterpart in order to properly estimate tx time on current channel Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: remove obsolete .add_buf() from struct mt76_queue_opsFelix Fietkau1-4/+0
It hasn't been used in a while Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: add sanity check for a-mpdu rx wcid indexFelix Fietkau1-1/+1
Avoid dereferencing invalid ids Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: refactor cc_lock locking schemeLorenzo Bianconi2-13/+19
Read busy counters not holding cc_lock spinlock since usb read can't be performed in interrupt context. Move cc_active and cc_rx counters out of cc_lock since they are not modified in interrupt context. Grab cc_lock updating cur_cc_bss_rx in mt76_airtime_report and do not hold rx_lock in mt76_update_survey. Moreover grab mt76 mutex in mt76_get_survey before running mt76_update_survey. This patch fixes the following 'schedule while atomic' [ 291.790866] BUG: scheduling while atomic: iw/2161/0x00000202 [ 291.791002] Preemption disabled at: [ 291.791007] [<0000000000000000>] 0x0 [ 291.791015] CPU: 0 PID: 2161 Comm: iw Tainted: G W 5.4.= 0-rc2-3-ARCH-00104-g9e208aa06c21 #1 [ 291.791017] Hardware name: LENOVO 2349QM6/2349QM6, BIOS G1ETC2WW (2.82=) 08/07/2019 [ 291.791019] Call Trace: [ 291.791042] dump_stack+0x5c/0x80 [ 291.791049] __schedule_bug.cold+0x8e/0x9b [ 291.791055] __schedule+0x5f8/0x770 [ 291.791062] schedule+0x43/0xd0 [ 291.791068] schedule_preempt_disabled+0x14/0x20 [ 291.791074] __mutex_lock.isra.0+0x18a/0x530 [ 291.791099] mt76u_rr+0x1f/0x40 [mt76_usb] [ 291.791113] mt76x02_update_channel+0x22/0x40 [mt76x02_lib] [ 291.791122] mt76_update_survey+0x42/0xe0 [mt76] [ 291.791129] mt76_get_survey+0x2f/0x1b0 [mt76] [ 291.791170] ieee80211_dump_survey+0x5e/0x140 [mac80211] [ 291.791217] nl80211_dump_survey+0x13c/0x2f0 [cfg80211] [ 291.791222] ? __kmalloc_reserve.isra.0+0x2d/0x70 [ 291.791225] ? __alloc_skb+0x96/0x1d0 [ 291.791229] netlink_dump+0x17b/0x370 [ 291.791247] __netlink_dump_start+0x16f/0x1e0 [ 291.791253] genl_family_rcv_msg+0x396/0x410 [ 291.791290] ? nl80211_prepare_wdev_dump+0x1b0/0x1b0 [cfg80211] [ 291.791297] ? _raw_spin_unlock_irqrestore+0x20/0x40 [ 291.791312] ? __wake_up_common_lock+0x8a/0xc0 [ 291.791316] genl_rcv_msg+0x47/0x90 [ 291.791320] ? genl_family_rcv_msg+0x410/0x410 [ 291.791323] netlink_rcv_skb+0x49/0x110 [ 291.791329] genl_rcv+0x24/0x40 [ 291.791333] netlink_unicast+0x171/0x200 [ 291.791340] netlink_sendmsg+0x208/0x3d0 [ 291.791358] sock_sendmsg+0x5e/0x60 [ 291.791361] ___sys_sendmsg+0x2ae/0x330 [ 291.791368] ? filemap_map_pages+0x272/0x390 [ 291.791374] ? _raw_spin_unlock+0x16/0x30 [ 291.791379] ? __handle_mm_fault+0x112f/0x1390 [ 291.791388] __sys_sendmsg+0x59/0xa0 [ 291.791396] do_syscall_64+0x5b/0x1a0 [ 291.791400] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 291.791404] RIP: 0033:0x7f5d0c7f37b7 [ 291.791418] Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 0= 0 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05= <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10 [ 291.791421] RSP: 002b:00007ffe8b5d0538 EFLAGS: 00000246 ORIG_RAX: 0000= 00000000002e [ 291.791426] RAX: ffffffffffffffda RBX: 000055a038e6c390 RCX: 00007f5d0= c7f37b7 [ 291.791430] RDX: 0000000000000000 RSI: 00007ffe8b5d0570 RDI: 000000000= 0000003 [ 291.791434] RBP: 000055a038e718c0 R08: 000055a038e6c02a R09: 000000000= 0000002 [ 291.791438] R10: 000055a03808cb00 R11: 0000000000000246 R12: 000055a03= 8e71780 [ 291.791440] R13: 00007ffe8b5d0570 R14: 000055a038e717d0 R15: 000055a03= 8e718c0 [ 291.791480] NOHZ: local_softirq_pending 202 Fixes: 168aea24f4bb ("mt76: mt76x02u: enable survey support") Tested-by: Markus Theil <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x0: eeprom: add support for MAC address from OFPawel Dembicki1-0/+1
mt76x0e driver only supports MAC addresses from calibration data eeprom. Many routers however do not have a valid stock address set in this field. This patch makes it possible to take a MAC address from OF (e.g. from mtd). Signed-off-by: Pawel Dembicki <[email protected]> [adjusted for kernel submission] Signed-off-by: Adrian Schmutzler <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: avoid enabling interrupt if NAPI poll is still pendingFelix Fietkau1-3/+1
if napi_complete() returns false, it means that polling is still pending. Interrupts should not fire until the polling is no longer scheduled Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: fix aggregation stop issueFelix Fietkau1-4/+6
Cancel the workqueue after the tid has been cleaned up, in order to avoid a possible rescheduling from within the work function. Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: drop rcu read lock in mt76_rx_aggr_stopFelix Fietkau1-7/+3
A rcu read locked section is not allowed to sleep, and the rcu lock here isn't actually necessary, because we're holding dev->mutex. Fixes an issue when the tid work item is still running while freeing a station or stopping the aggregation session Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: add missing locking around ampdu actionFelix Fietkau3-0/+6
This is needed primarily to avoid races in dealing with rx aggregation related data structures Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: do not use devm API for led classdevFelix Fietkau1-1/+10
With the devm API, the unregister happens after the device cleanup is done, after which the struct mt76_dev which contains the led_cdev has already been freed. This leads to a use-after-free bug that can crash the system. Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: enable airtime fairnessFelix Fietkau1-0/+1
It is supported by all hardware drivers now Signed-off-by: Felix Fietkau <[email protected]> Acked-by: Toke Høiland-Jørgensen <[email protected]>
2019-11-20mt76: mt7615: track tx/rx airtime for airtime fairnessLorenzo Bianconi6-3/+137
Poll per-station hardware counters available in WTBL after tx/rx status events in order to report tx/rx airtime to mac80211 layer Co-developed-by: Felix Fietkau <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7615: introduce mt7615_mac_wtbl_update routineLorenzo Bianconi2-5/+12
Introduce mt7615_mac_wtbl_update utility routine in order to update WTBL update register Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7615: fix survey channel busy timeFelix Fietkau2-4/+8
Like on mt7603, MIB status register 16 tracks CCA time, but does not include tx time. Switch to status register 9 to includ NAV and tx time as well. Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7615: report tx_time, bss_rx and busy time to mac80211Lorenzo Bianconi7-4/+45
Report tx time/rx time and obss time from hw mib counters to fill survey info requested by mac80211 Co-developed-by: Felix Fietkau <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x02: track approximate tx airtime for airtime fairness and surveyFelix Fietkau12-9/+116
Estimate by calculating duration for EWMA packet size + estimated A-MPDU length on tx status events Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x02: move MT_CH_TIME_CFG init to mt76x02_mac_cc_resetFelix Fietkau5-32/+9
Reduces code duplication and adds missing bits for USB variants Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: unify channel survey update codeFelix Fietkau8-52/+33
Host time is used to calculate the channel active time on mt7603 and mt7615. Use the same on mt76x02 and move the lock to core code to get rid of some duplicated code. Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7603: switch to a different counter for survey busy timeFelix Fietkau1-1/+1
MT_MIB_STAT_PSCCA only counts rx CCA busy time, which does not include tx time. MT_MIB_STAT_CCA counts full busy time, including Rx, Tx and NAV Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7603: track tx airtime for airtime fairness and surveyFelix Fietkau7-1/+116
Poll per-station hardware counters after tx status events Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: track rx airtime for airtime fairness and surveyFelix Fietkau12-37/+434
Report total rx airtime for valid stations as BSS rx time in survey mt7615 is left out for now, it will be supported later by reading hardware counters instead of calculating airtime in software Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: store current channel survey_state in struct mt76_devFelix Fietkau5-23/+23
Move mt76_channel_state() from mt76.h to mac80211.c Preparation for updating channel state from more places in the drivers/core Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: rename mt76_driver_ops txwi_flags to drv_flags and include tx aligned4Felix Fietkau5-8/+8
This reduces the struct size and is useful for adding more flags later Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: report rx a-mpdu subframe statusFelix Fietkau7-0/+50
This can be used in monitor mode to figure out which subframes were sent as part of which A-MPDU Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7603: remove q_rx field from struct mt7603_devFelix Fietkau1-2/+0
It is no longer used Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7603: collect aggregation statsLorenzo Bianconi5-0/+61
Introduce ampdu_stat entry in mt7603 debugfs in order to dump 802.11 aggr cumulative statistics Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7615: collect aggregation statsLorenzo Bianconi5-0/+66
Introduce ampdu_stat entry in mt7615 debugfs in order to dump 802.11 aggr cumulative statistics Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: move aggr_stats array in mt76_devLorenzo Bianconi4-6/+7
Move aggr_stats array from mt76x02_dev to mt76_dev in order to be reused adding aggregation stats for mt7603/mt7615 drivers Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7615: add queue entry in debugfsLorenzo Bianconi2-0/+72
Introduce mt7615_queues_read routine to dump hw queue related info. Add hw ac queues statistics in mt7615 debugfs Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: move queue debugfs entry to driver specific codeLorenzo Bianconi4-3/+7
Move queue debugfs entry to driver specific code since mt7615 devices rely on a different queue layout Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x02u: move mt76x02u_mac_start in mt76x02-usb moduleLorenzo Bianconi8-37/+25
Unify mt76x02u_mac_start between mt76x2u and mt76x0u since the code is shared between both drivers Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x0u: reset counter starting the deviceLorenzo Bianconi1-2/+1
Remove mt76x02_mac_reset_counters from mt76x0_init_hardware since it will be run starting the device Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x2: move mt76x02_mac_reset_counters in mt76x02_mac_startLorenzo Bianconi4-16/+5
Move mt76x02_mac_reset_counters in mt76x02_mac_start and get rid of mt76x2_mac_start since it is just a wrapper for mt76x02_mac_start Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x02: move mac_reset_counter in mt76x02_lib moduleLorenzo Bianconi5-31/+25
Unify mac_reset_counter routine and move it in mt76x02_lib module since it is shared by all mt76x02 drivers (pci/usb) Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7615: enable SCS by defaultLorenzo Bianconi1-1/+1
Enable Smart Carrier Sense algorithm by default in order to improve performances in a noisy environment Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt76x0e: make array mt76x0_chan_map static const, makes object smallerColin Ian King1-1/+1
Don't populate the array mt76x0_chan_map on the stack but instead make it static const. Makes the object code smaller by 80 bytes. Before: text data bss dec hex filename 7685 1192 0 8877 22ad mediatek/mt76/mt76x0/eeprom.o After: text data bss dec hex filename 7541 1256 0 8797 225d mediatek/mt76/mt76x0/eeprom.o (gcc version 9.2.1, amd64) Signed-off-by: Colin Ian King <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: usb: add lockdep_assert_held in __mt76u_vendor_requestLorenzo Bianconi1-3/+2
Introduce lockdep_assert_held macro in __mt76u_vendor_request routine and remove comments regarding usb_ctrl_mtx lock Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: remove empty flag in mt76_txq_schedule_listLorenzo Bianconi1-16/+7
Remove empty flag in mt76_txq_schedule_list and mt76_txq_send_burst since we just need retry_q length to notify mac80211 to reschedule the current tx queue Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: use cancel_delayed_work_sync in mt76_rx_aggr_shutdownFelix Fietkau1-1/+1
The workqueue item needs to be fully shut down before the struct can be freed. Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: remove aggr_work field from struct mt76_wcidFelix Fietkau1-2/+0
It is unused Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20mt76: mt7615: fix control frame rx in monitor modeFelix Fietkau3-1/+38
Adjust filters and ensure frames don't get sent to MCU instead of host Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20iwlwifi: bump FW API to 52 for 22000 seriesLuca Coelho1-1/+1
Start supporting API version 52 for 22000 series. Signed-off-by: Luca Coelho <[email protected]>
2019-11-20iwlwifi: check kasprintf() return valueJohannes Berg2-0/+6
kasprintf() can fail, we should check the return value. Fixes: 5ed540aecc2a ("iwlwifi: use mac80211 throughput trigger") Fixes: 8ca151b568b6 ("iwlwifi: add the MVM driver") Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2019-11-20iwlwifi: mvm: remove outdated comment referring to wake lockJohannes Berg1-2/+0
There's no multicast wake lock in the driver, remove the comment that refers to it. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2019-11-20iwlwifi: pcie: trace IOVA for iwlwifi_dev_tx_tbJohannes Berg3-22/+20
We trace the whole TFD with all TBs when in iwlwifi_dev_tx, but sometimes we add TBs to it later and then we don't have any of this data. Trace the I/O virtual address (IOVA) (it can be the physical address, or as returned by the IOMMU) here to aid debugging the DMA flows. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2019-11-20iwlwifi: dvm: excessive if in rs_bt_update_lq()Denis Efremov1-1/+1
There is no need to check 'priv->bt_ant_couple_ok' twice in rs_bt_update_lq(). The second check is always true. Thus, the expression can be simplified. Signed-off-by: Denis Efremov <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2019-11-20iwlwifi: mvm: Report tx/rx antennasBen Greear1-0/+13
This makes it easier for user-space to know how many antennas the radio has. Seems to work with the AX200 radio, at least. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2019-11-20iwlwifi: pcie: rx: use rxq queue_size instead of constantJohannes Berg1-1/+1
This is a little less efficient now as it's known to be a multiqueue device in this function, but a future patch will have to use a variable here anyway, so use rxq->queue_size now instead to make it clearer. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>