impala : wifi 图形管理工具
https://github.com/pythops/impala
impala
需要提前准备依赖:
sudo dnf install iwd
sudo systemctl enable --now iwd
不然启动会有这个错误:
Can not access the iwd service org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
为什么 wifi 的网卡无法创建网桥
🤒 sudo brctl addif br0 wlo1
can't add wlo1 to bridge br0: Operation not supported
难道说,wifi 走的是难道不是以太网吗?
| 而发现 lcpi -s | grep Eth 直接不会显示 wifi 的 |
04:00.0 Network controller: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter
Subsystem: Lenovo Device e0c6
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 117
IOMMU group: 1
Region 0: Memory at 3ffc02000000 (64-bit, prefetchable) [size=1M]
Region 2: Memory at c1700000 (64-bit, non-prefetchable) [size=32K]
Capabilities: <access denied>
Kernel driver in use: mt7921e
Kernel modules: mt7921e
00:14.3 Network controller: Intel Corporation Alder Lake-S PCH CNVi WiFi (rev 11)
DeviceName: Onboard - Ethernet
Subsystem: Intel Corporation Device 0074
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin C routed to IRQ 18
IOMMU group: 5
Region 0: Memory at 401211c000 (64-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
简单看看传输的过程:
Ethernet driver 是注册了 net_device_ops::igc_xmit_frame 的:
@[
igc_xmit_frame+5
dev_hard_start_xmit+100
sch_direct_xmit+164
__dev_queue_xmit+2381
ip_finish_output2+673
__ip_queue_xmit+373
__tcp_transmit_skb+2722
tcp_write_xmit+1358
__tcp_push_pending_frames+54
tcp_rcv_established+1174
tcp_v4_do_rcv+337
tcp_v4_rcv+3342
ip_protocol_deliver_rcu+50
ip_local_deliver_finish+118
ip_sublist_rcv_finish+126
ip_sublist_rcv+405
ip_list_rcv+317
__netif_receive_skb_list_core+670
netif_receive_skb_list_internal+443
napi_complete_done+114
igc_poll+1574
__napi_poll+40
net_rx_action+676
__do_softirq+199
__irq_exit_rcu+147
common_interrupt+134
asm_common_interrupt+38
cpuidle_enter_state+204
cpuidle_enter+45
do_idle+472
cpu_startup_entry+42
start_secondary+286
secondary_startup_64_no_verify+382
]: 55
@[
igc_xmit_frame+5
dev_hard_start_xmit+100
sch_direct_xmit+164
__qdisc_run+329
net_tx_action+479
__do_softirq+199
__irq_exit_rcu+147
common_interrupt+134
asm_common_interrupt+38
cpuidle_enter_state+204
cpuidle_enter+45
do_idle+472
cpu_startup_entry+42
start_secondary+286
secondary_startup_64_no_verify+382
]: 5781
@[
iwl_txq_gen2_tx+1740
iwl_txq_gen2_tx+1740
iwl_mvm_tx_mpdu+497
iwl_mvm_tx_skb_sta+584
iwl_mvm_tx_skb+23
iwl_mvm_mac_itxq_xmit+139
ieee80211_queue_skb+1395
__ieee80211_xmit_fast+1974
__ieee80211_subif_start_xmit+587
ieee80211_subif_start_xmit+86
dev_hard_start_xmit+100
__dev_queue_xmit+599
ip_finish_output2+673
__ip_queue_xmit+373
__tcp_transmit_skb+2722
tcp_v4_do_rcv+337
tcp_v4_rcv+3342
ip_protocol_deliver_rcu+50
ip_local_deliver_finish+118
__netif_receive_skb_core.constprop.0+949
__netif_receive_skb_list_core+314
netif_receive_skb_list_internal+443
napi_complete_done+114
iwl_pcie_napi_poll_msix+166
__napi_poll+40
net_rx_action+676
__do_softirq+199
do_softirq.part.0+61
__local_bh_enable_ip+104
iwl_pcie_irq_rx_msix_handler+201
irq_thread_fn+32
irq_thread+251
kthread+229
ret_from_fork+49
ret_from_fork_asm+27
]: 160
@[
iwl_txq_gen2_tx+1740
iwl_txq_gen2_tx+1740
iwl_mvm_tx_mpdu+497
iwl_mvm_tx_skb_sta+584
iwl_mvm_tx_skb+23
iwl_mvm_mac_itxq_xmit+139
ieee80211_queue_skb+1395
__ieee80211_xmit_fast+1974
__ieee80211_subif_start_xmit+587
ieee80211_subif_start_xmit+86
dev_hard_start_xmit+100
__dev_queue_xmit+599
ip_finish_output2+673
__ip_queue_xmit+373
__tcp_transmit_skb+2722
tcp_recvmsg_locked+597
tcp_recvmsg+135
inet_recvmsg+86
sock_recvmsg+152
sock_read_iter+150
vfs_read+768
ksys_read+187
do_syscall_64+59
entry_SYSCALL_64_after_hwframe+110
]: 2489
看上去,wifi 在使用 net_device_ops 之后,是重启封装了一次的。
- https://unix.stackexchange.com/questions/731985/cant-add-wlan0-to-bridge-br0-operation-not-supported
- 有人问类似的问题,暂时没有回答
-
https://unix.stackexchange.com/questions/554331/theoretical-tap-interface-w-wifi-parent-interface/555676#555676
- https://networkengineering.stackexchange.com/questions/25100/four-layer-2-addresses-in-802-11-frame-header/25102#25102
兄弟,他们的 frame 都不一样:
-
https://dot11ap.wordpress.com/ieee-802-11-frame-format-vs-ieee-802-3-frame-format/
-
https://networkengineering.stackexchange.com/questions/35618/relation-between-ethernet-and-802-11-headers
好滴,的确不同,但是为什么 tap 以及 br0 都不同啊
阅读一下
- https://hackmd.io/@akiranet/Byn7aznlP#
- https://linuxembedded.fr/2020/05/emulating-wlan-in-linux-part-i-the-80211-stack
有趣的问题
https://www.linux.org/threads/wireless-network-protocols.11548/
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。