为什么无线工具版本 30 成为永久测试版?

Phi*_*ide 10 linux wifi history linux-kernel

我在这个Q/A 中找到了一些关于无线工具的好信息。显然,它是由惠普赞助的 Jean Tourrhiles 于 1997 年引入Linux 内核的

编辑:似乎 WE(无线扩展)是由 Tourrhiles 添加到内核中的,而不是无线工具本身。大多数发行版都提供这些工具,作为与 WE 交流的主要方式。你可以在内核中看到 WE /proc/net/wireless

发布最后一个版本v29Ubuntu 14 和 16 似乎包含v30测试版 ( iwconfig -v)。

我很好奇这个包裹发生了什么?为什么“beta”版本 30 成为使用的事实上的标准版本?

惠普是否停止资助 Jean Tourrhiles 从而停止开发?或者也许决定它足够稳定以停止开发,但如果是这样,为什么 30 仍然是测试版?

我找到了这个Github 页面,但它似乎仅供历史参考。

版本历史

版本历史

Phi*_*ide 17

我应该通读我链接得更好的问答,因为有一个链接到一个页面,讨论为什么这个项目被放弃

WE是否得到进一步发展?

不它不是。WE 只接受错误修复。

为什么我们要放弃 WE

WE 是基于ioctl()并且虽然ioctl()已经被使用并且仍然被用作用户之间通信的标准传输?出于多种原因,内核空间新传输成为首选。

来自 Linux 设备驱动程序 - 第 3 版:

In user space, the ioctl system call has the following prototype:

int ioctl(int fd, unsigned long cmd, ...);
Run Code Online (Sandbox Code Playgroud)

由于圆点,原型在 Unix 系统调用列表中脱颖而出,圆点通常将函数标记为具有可变数量的参数。然而,在实际系统中,系统调用实际上不能具有可变数量的参数。系统调用必须有一个明确定义的原型,因为用户程序只能通过硬件“门”访问它们。因此,原型中的点代表的不是可变数量的参数,而是单个可选参数,传统上标识为char *argp。这些点只是为了防止在编译期间进行类型检查。

它还指出:

ioctl调用的非结构化性质使其在内核开发人员中失宠。每个ioctl命令本质上都是一个单独的、通常没有记录的系统调用,并且没有办法以任何一种全面的方式审计这些调用。也很难使非结构化ioctl参数在所有系统上都相同。例如,考虑一个用户空间进程在 32 位模式下运行的 64 位系统。

什么是 Wireless-Extensions 的替代品

新的开发应该集中在 cfg80211 和 nl80211 上。


旁注 Jean Tourrhiles 似乎在 1997 年至 2009 年左右参与了该项目。我发现2014 年一篇文章说 Tourrhiles 仍在惠普,从事一个名为OpenFlow的项目:

HP 的 Jean Tourrhiles 还担任可扩展性工作组的主席,该工作组作为“编辑”将最新技术推向 OpenFlow 的未来版本


Mun*_*nir 17

无线工具已被弃用,iw因为无线扩展已被弃用,以支持用于无线设备的新 nl80211 接口。iw内核文档就是这么说的。

但是,nl80211 正在积极开发中,并非所有驱动程序都已迁移到它。尚未从无线扩展迁移的设备仍然需要无线工具。

Ubuntu(以及我所知道的几乎所有发行版)提供版本 30 测试版的原因是因为该版本修复了版本 29 中的一个关键错误,如果该区域由于缓冲区而导致网络过多,则会导致 iwconfig 失败溢出。无线工具的 Github 存储库没有显示这一点,但这是来自Arch的相关补丁