一、注释
struct sk_buff *dev_hard_start_xmit(struct sk_buff *first, struct net_device *dev,
struct netdev_queue *txq, int *ret)
{
struct sk_buff *skb = first; // 初始化skb指针,指向第一个待发送的数据包
int rc = NETDEV_TX_OK; // 初始返回码为NETDEV_TX_OK,表示发送成功
while (skb) { // 遍历所有待发送的数据包
struct sk_buff *next = skb->next; // 保存下一个数据包的指针
skb->next = NULL; // 设置当前数据包的next指针为NULL,因为它将要被发送
rc = xmit_one(skb, dev, txq, next != NULL); // 发送一个数据包,传递是否还有下一个包的信息
if (unlikely(!dev_xmit_complete(rc))) { // 如果发送不成