|
| 1 | +From: Lorenzo Bianconi < [email protected]> |
| 2 | +Date: Wed, 8 Oct 2025 12:41:48 +0200 |
| 3 | +Subject: [PATCH] wifi: mt76: wed: use proper wed reference in mt76 wed driver |
| 4 | + callabacks |
| 5 | + |
| 6 | +MT7996 driver can use both wed and wed_hif2 devices to offload traffic |
| 7 | +from/to the wireless NIC. In the current codebase we assume to always |
| 8 | +use the primary wed device in wed callbacks resulting in the following |
| 9 | +crash if the hw runs wed_hif2 (e.g. 6GHz link). |
| 10 | + |
| 11 | +[ 297.455876] Unable to handle kernel read from unreadable memory at virtual address 000000000000080a |
| 12 | +[ 297.464928] Mem abort info: |
| 13 | +[ 297.467722] ESR = 0x0000000096000005 |
| 14 | +[ 297.471461] EC = 0x25: DABT (current EL), IL = 32 bits |
| 15 | +[ 297.476766] SET = 0, FnV = 0 |
| 16 | +[ 297.479809] EA = 0, S1PTW = 0 |
| 17 | +[ 297.482940] FSC = 0x05: level 1 translation fault |
| 18 | +[ 297.487809] Data abort info: |
| 19 | +[ 297.490679] ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000 |
| 20 | +[ 297.496156] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 |
| 21 | +[ 297.501196] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 |
| 22 | +[ 297.506500] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000107480000 |
| 23 | +[ 297.512927] [000000000000080a] pgd=08000001097fb003, p4d=08000001097fb003, pud=08000001097fb003, pmd=0000000000000000 |
| 24 | +[ 297.523532] Internal error: Oops: 0000000096000005 [#1] SMP |
| 25 | +[ 297.715393] CPU: 2 UID: 0 PID: 45 Comm: kworker/u16:2 Tainted: G O 6.12.50 #0 |
| 26 | +[ 297.723908] Tainted: [O]=OOT_MODULE |
| 27 | +[ 297.727384] Hardware name: Banana Pi BPI-R4 (2x SFP+) (DT) |
| 28 | +[ 297.732857] Workqueue: nf_ft_offload_del nf_flow_rule_route_ipv6 [nf_flow_table] |
| 29 | +[ 297.740254] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) |
| 30 | +[ 297.747205] pc : mt76_wed_offload_disable+0x64/0xa0 [mt76] |
| 31 | +[ 297.752688] lr : mtk_wed_flow_remove+0x58/0x80 |
| 32 | +[ 297.757126] sp : ffffffc080fe3ae0 |
| 33 | +[ 297.760430] x29: ffffffc080fe3ae0 x28: ffffffc080fe3be0 x27: 00000000deadbef7 |
| 34 | +[ 297.767557] x26: ffffff80c5ebca00 x25: 0000000000000001 x24: ffffff80c85f4c00 |
| 35 | +[ 297.774683] x23: ffffff80c1875b78 x22: ffffffc080d42cd0 x21: ffffffc080660018 |
| 36 | +[ 297.781809] x20: ffffff80c6a076d0 x19: ffffff80c6a043c8 x18: 0000000000000000 |
| 37 | +[ 297.788935] x17: 0000000000000000 x16: 0000000000000001 x15: 0000000000000000 |
| 38 | +[ 297.796060] x14: 0000000000000019 x13: ffffff80c0ad8ec0 x12: 00000000fa83b2da |
| 39 | +[ 297.803185] x11: ffffff80c02700c0 x10: ffffff80c0ad8ec0 x9 : ffffff81fef96200 |
| 40 | +[ 297.810311] x8 : ffffff80c02700c0 x7 : ffffff80c02700d0 x6 : 0000000000000002 |
| 41 | +[ 297.817435] x5 : 0000000000000400 x4 : 0000000000000000 x3 : 0000000000000000 |
| 42 | +[ 297.824561] x2 : 0000000000000001 x1 : 0000000000000800 x0 : ffffff80c6a063c8 |
| 43 | +[ 297.831686] Call trace: |
| 44 | +[ 297.834123] mt76_wed_offload_disable+0x64/0xa0 [mt76] |
| 45 | +[ 297.839254] mtk_wed_flow_remove+0x58/0x80 |
| 46 | +[ 297.843342] mtk_flow_offload_cmd+0x434/0x574 |
| 47 | +[ 297.847689] mtk_wed_setup_tc_block_cb+0x30/0x40 |
| 48 | +[ 297.852295] nf_flow_offload_ipv6_hook+0x7f4/0x964 [nf_flow_table] |
| 49 | +[ 297.858466] nf_flow_rule_route_ipv6+0x438/0x4a4 [nf_flow_table] |
| 50 | +[ 297.864463] process_one_work+0x174/0x300 |
| 51 | +[ 297.868465] worker_thread+0x278/0x430 |
| 52 | +[ 297.872204] kthread+0xd8/0xdc |
| 53 | +[ 297.875251] ret_from_fork+0x10/0x20 |
| 54 | +[ 297.878820] Code: 928b5ae0 8b000273 91400a60 f943fa61 (79401421) |
| 55 | +[ 297.884901] ---[ end trace 0000000000000000 ]--- |
| 56 | + |
| 57 | +Fix the issue detecting the proper wed reference to use running wed |
| 58 | +callabacks. |
| 59 | + |
| 60 | +-- Partial backport for data structure change only (rest is in the mt76 package) |
| 61 | + |
| 62 | +Fixes: 83eafc9251d6 ("wifi: mt76: mt7996: add wed tx support") |
| 63 | +Tested-by: Daniel Pawlik < [email protected]> |
| 64 | +Tested-by: Matteo Croce < [email protected]> |
| 65 | +Signed-off-by: Lorenzo Bianconi < [email protected]> |
| 66 | +Link: https://patch.msgid.link/ [email protected] |
| 67 | +Signed-off-by: Felix Fietkau < [email protected]> |
| 68 | +--- |
| 69 | + |
| 70 | +--- a/include/linux/soc/mediatek/mtk_wed.h |
| 71 | ++++ b/include/linux/soc/mediatek/mtk_wed.h |
| 72 | +@@ -154,6 +154,7 @@ struct mtk_wed_device { |
| 73 | + bool wcid_512; |
| 74 | + bool hw_rro; |
| 75 | + bool msi; |
| 76 | ++ bool hif2; |
| 77 | + |
| 78 | + u16 token_start; |
| 79 | + unsigned int nbuf; |
0 commit comments