最近在做can总线驱动开发,趁有时间把英文文档翻译成中文,方便阅读。本文使用的是fsl imx536开发板,英文文档地址:myandroid/kernel_imx/Documentation/networking/netdevices.txt
由于本人刚接触CAN等网络驱动以及英语水平有限,肯定有很多地方翻译的不是很恰当,望高手不吝赐教。
网络设备、内核
介绍
下文是随机收集的关于网络设备的文档。
net_device结构体分配规则
即使卸载模块后也是继续需要网络设备结构体,而且使用kmalloc函数分配。如果设备注册成功,最后会使用free_netdev释放。还需要利索地解决出错情况(例如:mmod mydriver </sys/class/net/myeth/mtu)。
Net_init.c中有处理alloc_etherdev,alloc_netdev常见情况的程序。当网络设备被释放时,需为被释放的驱动私有数据预留额外的地址空间。如果单独分配的数据与网络设备连接(netdev_priv(dev)),则由模块退出处理程序(module exit handler)来释放。
MTU
每个网络设备都有一个最大传输单元(MTU),MTU不包含任一链路层协议开销。上层协议不能传递给设备超过MTU的socket缓存数据。MTU不包含链路层头信息开销,因此,例如在以太网上,如果标准的MTU值是1500字节,由于以太网报文头,实际socket缓存将包含高达151