When you deal with NIC devices, there are two data structures that you need to play with:
- The struct sk_buff structure, defined in include/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 in include/linux/netdevice.h, which should also be included in your code:
#include <linux/netdevice.h>
Other files that one 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 ethtools support:
#include...