Etherlab源码解析--ecdev_offer()

在linux系统中,网卡及对应的net_device结构体实例是由上层的网络子系统操作的,ecdev_offer()的作用是将网卡转交给ehterlab master操作。

一、预备知识net_device结构体

linux系统中,每一个网卡对应一个net_device结构体的实例,一个网卡要能够被内核识别并收发数据,一般需要经过net_device结构体的创建、初始化、注册到内核、打开设备等步骤:
在这里插入图片描述

其中,net_device的创建一般在网卡驱动程序的probe函数中完成。
net_device是一个很大的结构体,包含很多成员变量和函数指针,因此初始化工作分散在多处完成,与网卡硬件细节无关的通用数据域由内核的网络子系统初始化,如发送队列长度、MTU等,与网卡硬件相关的数据域由网卡的驱动程序初始化,如MAC地址、中断号等。
初始化完成后,net_device将被注册到内核中,并加入到dev_base_head开始的双向链表中,之后上层的协议(如TCP/IP)就可以通过调用net_device中的函数完成数据的收发。
在这里插入图片描述
然而,EtherCAT数据包不需要经过TCP/IP协议栈,因此net_device结构体不需要注册到内核中,而是由ecdev_offer注册到etherlab master中。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值