经过我对网口插拔的总结,发现很多平台不支持网口socket的ioctl失败.
跟踪内核代码发现,内核中的网口驱动大多写的不完善.
就拿最近用过的两个平台做例子吧.
第一个平台,是在驱动检测到网口的插上或者拔掉之后,没有操作netif_carrier_o(dev)与netif_carrier_off(dev)
第二个平台,就更过份了.直接就是没有把ioctl的结构体没有添加上去.
例如,检测网口插拔的回调:
static const struct ethtool_ops marvell_ethtool_ops = {
.get_link = ethtool_op_get_link,
};
只能自己添加上去.
网口插拔,调用标准的socket IOCTL失败.
最新推荐文章于 2023-04-24 08:09:49 发布