WiFi drive through the registration of network devices to the kernel, the application of WiFi-driven operations can be created by the socket, and then through the socket number, the driver to do Ioctrl.
When inserting a card, orinoco_cs, like a traditional network device driver, invokes Register_netdev to obtain the ETHX network interface name assigned to the WLAN interface. It also registers an interrupt service routine address to service the interruption of wireless data. The interrupt handler is part of the Orinoco module and interacts with the Linux network stack. The main data structure used by Linux network stacks is the Sk_buff architecture (defined in Include/linux/skbuff.h, which includes control information about a block of memory attached to it). Sk_buffs provides an effective buffer handling and flow control mechanism for all network layers. The network device driver executes a DEV_ALLOC_SKB and a skb_put to populate a sk_buff with IP data and then transmits the Sk_buff to the TCP/IP stack by calling Netif_rx. The Orinoco Interrupt service routine populates sk_buffs with data received from the WLAN and passes it to the IP stack via NETIF_RX.