mac80211: add a fix for kernel warnings when forwarding packets in mesh mode
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		| @@ -0,0 +1,62 @@ | |||||||
|  | From: Xing Song <xing.song@mediatek.com> | ||||||
|  | Date: Tue, 23 Nov 2021 11:31:23 +0800 | ||||||
|  | Subject: [PATCH] mac80211: set up the fwd_skb->dev for mesh forwarding | ||||||
|  |  | ||||||
|  | Mesh forwarding requires that the fwd_skb->dev is set up for TX handling, | ||||||
|  | otherwise the following warning will be generated, so set it up for the | ||||||
|  | pending frames. | ||||||
|  |  | ||||||
|  | [   72.835674 ] WARNING: CPU: 0 PID: 1193 at __skb_flow_dissect+0x284/0x1298 | ||||||
|  | [   72.842379 ] Modules linked in: ksmbd pppoe ppp_async l2tp_ppp ... | ||||||
|  | [   72.962020 ] CPU: 0 PID: 1193 Comm: kworker/u5:1 Tainted: P S 5.4.137 #0 | ||||||
|  | [   72.969938 ] Hardware name: MT7622_MT7531 RFB (DT) | ||||||
|  | [   72.974659 ] Workqueue: napi_workq napi_workfn | ||||||
|  | [   72.979025 ] pstate: 60000005 (nZCv daif -PAN -UAO) | ||||||
|  | [   72.983822 ] pc : __skb_flow_dissect+0x284/0x1298 | ||||||
|  | [   72.988444 ] lr : __skb_flow_dissect+0x54/0x1298 | ||||||
|  | [   72.992977 ] sp : ffffffc010c738c0 | ||||||
|  | [   72.996293 ] x29: ffffffc010c738c0 x28: 0000000000000000 | ||||||
|  | [   73.001615 ] x27: 000000000000ffc2 x26: ffffff800c2eb818 | ||||||
|  | [   73.006937 ] x25: ffffffc010a987c8 x24: 00000000000000ce | ||||||
|  | [   73.012259 ] x23: ffffffc010c73a28 x22: ffffffc010a99c60 | ||||||
|  | [   73.017581 ] x21: 000000000000ffc2 x20: ffffff80094da800 | ||||||
|  | [   73.022903 ] x19: 0000000000000000 x18: 0000000000000014 | ||||||
|  | [   73.028226 ] x17: 00000000084d16af x16: 00000000d1fc0bab | ||||||
|  | [   73.033548 ] x15: 00000000715f6034 x14: 000000009dbdd301 | ||||||
|  | [   73.038870 ] x13: 00000000ea4dcbc3 x12: 0000000000000040 | ||||||
|  | [   73.044192 ] x11: 000000000eb00ff0 x10: 0000000000000000 | ||||||
|  | [   73.049513 ] x9 : 000000000eb00073 x8 : 0000000000000088 | ||||||
|  | [   73.054834 ] x7 : 0000000000000000 x6 : 0000000000000001 | ||||||
|  | [   73.060155 ] x5 : 0000000000000000 x4 : 0000000000000000 | ||||||
|  | [   73.065476 ] x3 : ffffffc010a98000 x2 : 0000000000000000 | ||||||
|  | [   73.070797 ] x1 : 0000000000000000 x0 : 0000000000000000 | ||||||
|  | [   73.076120 ] Call trace: | ||||||
|  | [   73.078572 ]  __skb_flow_dissect+0x284/0x1298 | ||||||
|  | [   73.082846 ]  __skb_get_hash+0x7c/0x228 | ||||||
|  | [   73.086629 ]  ieee80211_txq_may_transmit+0x7fc/0x17b8 [mac80211] | ||||||
|  | [   73.092564 ]  ieee80211_tx_prepare_skb+0x20c/0x268 [mac80211] | ||||||
|  | [   73.098238 ]  ieee80211_tx_pending+0x144/0x330 [mac80211] | ||||||
|  | [   73.103560 ]  tasklet_action_common.isra.16+0xb4/0x158 | ||||||
|  | [   73.108618 ]  tasklet_action+0x2c/0x38 | ||||||
|  | [   73.112286 ]  __do_softirq+0x168/0x3b0 | ||||||
|  | [   73.115954 ]  do_softirq.part.15+0x88/0x98 | ||||||
|  | [   73.119969 ]  __local_bh_enable_ip+0xb0/0xb8 | ||||||
|  | [   73.124156 ]  napi_workfn+0x58/0x90 | ||||||
|  | [   73.127565 ]  process_one_work+0x20c/0x478 | ||||||
|  | [   73.131579 ]  worker_thread+0x50/0x4f0 | ||||||
|  | [   73.135249 ]  kthread+0x124/0x128 | ||||||
|  | [   73.138484 ]  ret_from_fork+0x10/0x1c | ||||||
|  |  | ||||||
|  | Signed-off-by: Xing Song <xing.song@mediatek.com> | ||||||
|  | --- | ||||||
|  |  | ||||||
|  | --- a/net/mac80211/rx.c | ||||||
|  | +++ b/net/mac80211/rx.c | ||||||
|  | @@ -2947,6 +2947,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 | ||||||
|  |  	if (!fwd_skb) | ||||||
|  |  		goto out; | ||||||
|  |   | ||||||
|  | +	fwd_skb->dev = sdata->dev; | ||||||
|  |  	fwd_hdr =  (struct ieee80211_hdr *) fwd_skb->data; | ||||||
|  |  	fwd_hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_RETRY); | ||||||
|  |  	info = IEEE80211_SKB_CB(fwd_skb); | ||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau