网络子系统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);


目录
相关文章
|
4月前
|
存储 运维 API
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
97 1
|
1月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
67 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
2月前
|
存储 监控 Linux
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
59 0
|
3月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html
|
5月前
|
存储 安全 Linux
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
144 4
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
|
5月前
|
存储 监控 算法
公司内部网络监控中的二叉搜索树算法:基于 Node.js 的实时设备状态管理
在数字化办公生态系统中,公司内部网络监控已成为企业信息安全管理体系的核心构成要素。随着局域网内终端设备数量呈指数级增长,实现设备状态的实时追踪与异常节点的快速定位,已成为亟待解决的关键技术难题。传统线性数据结构在处理动态更新的设备信息时,存在检索效率低下的固有缺陷;而树形数据结构因其天然的分层特性与高效的检索机制,逐渐成为网络监控领域的研究热点。本文以二叉搜索树(Binary Search Tree, BST)作为研究对象,系统探讨其在公司内部网络监控场景中的应用机制,并基于 Node.js 平台构建一套具备实时更新与快速查询功能的设备状态管理算法框架。
193 3
|
5月前
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
178 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
|
6月前
|
XML 安全 网络安全
Nipper 3.7.0 Windows x64 - 网络设备漏洞评估
Nipper 3.7.0 Windows x64 - 网络设备漏洞评估
143 0
Nipper 3.7.0 Windows x64 - 网络设备漏洞评估
|
8月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
230 20
|
7月前
|
存储 运维 监控
阿里云飞天洛神云网络子系统“齐天”:超大规模云网络智能运维的“定海神针”
阿里云飞天洛神云网络子系统“齐天”:超大规模云网络智能运维的“定海神针”
260 3

热门文章

最新文章