wifi驱动处理
中断
进中断,收数据存队列,交由中断下半部分处理
sd_rxhandler --------> tasklet_schedule(&precvpriv->recv_tasklet);
tasklet
中断下半部分处理
rtl8192es_recv_tasklet -> recvbuf2recvframe -> rtw_recv_entry -> recv_func -> validate_mpdu -> rtl8192cd_rx_dispatch_toDs -> rtl8192cd_rx_dataframe -> process_datafrme -> rtl_netif_rx - > netif_rx
ip 协议栈
将数据包放入队列
netif_rx -> enqueue_to_backlog
将数据包从队列取出
通过NET_RX_SOFTIRQ软中断处理
sd->backlog.poll = process_backlog -> __netif_receive_skb -> __netif_receive_skb_core -> pt_prev->func(ip_rcv)
ip层处理数据
包括netfilter的过滤处理。
ip_rcv