英特尔工程师在Linux内核中为从消费者到高端数据中心产品的各种网络硬件维护了多个以太网驱动程序。他们一直在努力彻底改革他们的以太网驱动程序管理,以减少不同驱动程序之间的代码重复,以实现更好的代码共享,并最终实现更统一的目标。
周四发布的是这项正在进行的工作的第六次迭代,该工作被称为“伟大的代码删除”,它删除了英特尔几个以太网Linux驱动程序之间的所有冗余代码。
英特尔网络驱动程序工程师Alexander Lobakin在最新补丁系列中解释道:
“在两个或更多英特尔以太网模块之间存在大量代码重复,这已不是什么秘密。在引入新的更改之前,请开始将已有的重复功能解耦到一个新模块中,该模块将在几个英特尔以太网驱动程序之间共享。我想到的第一个名字是”libie“--”英特尔以太网通用库“。这听起来也像”Lovelie“(一个单词,没有”lib I E“pls),可以扩展为”lib Internet Explorer“:p
这个系列只是一个开始。从现在开始,添加每一个新功能或做任何好的驱动程序重构将删除更多的行比添加相当长的一段时间。已经有了一个基本的路线图,其中已经计划了一些重复数据消除,更不用说触摸每一行了,现在会问:“我可以分享这个吗?“.最终的目标是非常雄心勃勃的:至少有一个统一的驱动程序用于i40e,ice,iavf和idpf,每一代都有一个struct ops。那是不可能的对吧但你至少可以试试。
IAVF土地的PP转换在同一系列内,因为这两者是紧密联系在一起的。Libie将只支持Page Pool模型,因此在库被转换之前,驱动程序不能使用太多的库。Iavf只是一个例子,其余的最终将很快在每个驱动程序的基础上进行转换。这就是事情变得非常有趣的时候。保持科技含量。
目前,补丁导致超过2k行代码被删除,而只为拟议的“libie”通用代码添加了1k行新代码。
In the end this should lead to better drive maintenance and code sharing for the Intel Ethernet drivers. It will be interesting to see what next features they have in mind for their Ethernet drivers once this "Great Code Dedup" is complete.