网络子系统2_设备子系统相关的初始化

简介:
//在socket文件系统注册之后,设备驱动程序注册之前被调用
//start_kernel->rest_init->kernel_thread->init->do_basic_setup->do_initcalls->net_dev_init
2.1 static int __init net_dev_init(void)
{
	...
	//proc文件系统中相关项的初始化
	if (dev_proc_init())
		goto out;
	//注册网络设备类
	if (netdev_sysfs_init())
		goto out;
	//初始化ETH_P_ALL的链表
	INIT_LIST_HEAD(&ptype_all);

	//初始化l3协议的hash表
	//通过dev_add_pack和dev_remove_pack添加l3协议
	//链表元素为struct packet_type 
	for (i = 0; i < 16; i++) 
		INIT_LIST_HEAD(&ptype_base[i]);

	//初始化与设备相关的两个hash表
	//其中一个hash设备名
	for (i = 0; i < ARRAY_SIZE(dev_name_head); i++)
		INIT_HLIST_HEAD(&dev_name_head[i]);
	//另一个hash设备编号
	for (i = 0; i < ARRAY_SIZE(dev_index_head); i++)
		INIT_HLIST_HEAD(&dev_index_head[i]);

	//初始化per-cpu的接收队列
	for (i = 0; i < NR_CPUS; i++) {
		struct softnet_data *queue;

		queue = &per_cpu(softnet_data, i);
		//不适用napi的设备的接收到的流量将会挂载到此queue上
		skb_queue_head_init(&queue->input_pkt_queue);
		//与拥塞管理算法相关的字段
		//表示cpu当前接收队列是否被关闭,当input_pkt_queue满时,throttle=1,
		//标示此cpu的接收功能被关闭,当第一个帧排入空队列时,throttle会被netif_rx消除(注:netif_rx由非napi设备调用)
		queue->throttle = 0;
		//cng_level, avg_blog在get_sample_stats中被更新
		//get_sample_states由netif_rx调用
		queue->cng_level = 0;//拥塞等级
		queue->avg_blog = 10; //平均值
		//缓冲区list,其中为完成传输的skb,等待被释放
		queue->completion_queue = NULL;
		//此list上的设备都带有输入帧接收轮询,中断功能被关闭
		INIT_LIST_HEAD(&queue->poll_list);
		//不使用napi的设备,linux默认提供一个积压设备,完成轮询
		//__LINK_STATE_START表示设备已开启
		set_bit(__LINK_STATE_START, &queue->backlog_dev.state);
		//设置积压设备的权重,weight_p通过proc文件系统修改
		queue->backlog_dev.weight = weight_p;
		//积压设备的轮询函数
		queue->backlog_dev.poll = process_backlog;
		atomic_set(&queue->backlog_dev.refcnt, 1);
	}
	//注册网络传输和接收的软中断
	open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL);
	open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL);

	//注册dst通知链,通知dst_entry子系统有关net_device unregister、ifdown的event
	dst_init();
	//多播的初始化
	dev_mcast_init();
	rc = 0;
out:
	return rc;
}
//subsys_initcall的优先级低于core_initcall
subsys_initcall(net_dev_init);


目录
相关文章
|
12天前
|
网络协议 安全 网络安全
|
17天前
|
存储 网络安全 数据安全/隐私保护
|
14天前
|
运维 监控 负载均衡
|
19天前
|
负载均衡 安全 网络安全
|
2月前
|
安全 物联网 定位技术
2G网络和基站的撤销对物联网设备的影响
2G网络和基站的撤销对物联网设备的影响是多方面的,以下是对这一影响的详细分析:
2G网络和基站的撤销对物联网设备的影响
|
2月前
|
传感器 物联网 人机交互
物联网:物联网,作为新一代信息技术的重要组成部分,通过智能感知、识别技术与普适计算等通信感知技术,将各种信息传感设备与互联网结合起来而形成的一个巨大网络,实现了物物相连、人物相连,开启了万物互联的新时代。
在21世纪,物联网(IoT)作为新一代信息技术的核心,正以前所未有的速度重塑生活、工作和社会结构。本文首先介绍了物联网的概念及其在各领域的广泛应用,强调其技术融合性、广泛的应用范围以及数据驱动的特点。接着,详细阐述了物联网行业的现状和发展趋势,包括政策支持、关键技术突破和应用场景深化。此外,还探讨了物联网面临的挑战与机遇,并展望了其未来在技术创新和模式创新方面的潜力。物联网行业正以其独特魅力引领科技发展潮流,有望成为推动全球经济发展的新引擎。
|
3月前
|
传感器 SQL 运维
常见网络安全设备:IPS(入侵防御系统)零基础入门到精通,收藏这一篇就够了
常见网络安全设备:IPS(入侵防御系统)零基础入门到精通,收藏这一篇就够了
114 3
|
2月前
|
缓存 运维 监控
|
3月前
|
监控 安全 iOS开发
|
3月前
|
监控 安全 网络协议
【网络工程师必备神器】锐捷设备命令大全:一文在手,天下我有!
【8月更文挑战第22天】锐捷网络专攻网络解决方案,其设备广泛应用在教育、政府及企业等领域。本文汇总了锐捷设备常用命令及其应用场景:包括登录与退出设备、查看系统状态、接口与VLAN配置、路由与QoS设定、安全配置及日志监控等。通过示例如telnet/ssh登录、display命令查看信息、配置IP地址与VLAN、设置静态路由与OSPF、限速与队列调度、端口安全与ACL、SNMP监控与重启设备等,助力工程师高效管理与维护网络。
155 4

热门文章

最新文章