Driver data structures
When you deal with NIC devices, there are two data structures that you need to play with:
- The
struct sk_buff
structure, defined ininclude/linux/skbuff.h
, which is the fundamental data structure in the Linux networking code, and which should be included in your code:
#include <linux/skbuff.h>
Each packet sent or received is handled using this data structure.
- The
struct net_device
structure; this is the structure by which any NIC device is represented in the kernel. It is the interface by which data transit takes place. It is defined ininclude/linux/netdevice.h
, which should also be included in your code:
#include <linux/netdevice.h>
Other files that you should include in the code are include/linux/etherdevice.h
for MAC and Ethernet-related functions (such as alloc_etherdev()
) and include/linux/ethtool.h
for ethtool
support:
#include <linux/ethtool.h> #include <linux/etherdevice.h>
The socket buffer structure
This structure wraps any packet that...