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

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

我在这里找到了一些有关无线工具的好信息问答。显然它是由 Jean Tourrhiles 在 1997 年由 Hewlett Packard 赞助引入Linux 内核的。

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

最后发布的版本Ubuntu 14 和 16似乎v29还包含v30beta 版 ( iwconfig -v)。

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

惠普是否停止了对 Jean Tourrhiles 的资助,导致开发停止了?或者也许认为它足够稳定而停止开发,但如果是这样的话,为什么 30 仍然是测试版呢?

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

版本历史

版本历史

答案1

无线工具已被弃用,iw因为无线扩展已被弃用,取而代之的是用于无线设备的新 nl80211 接口。这iw 的内核文档这么说。

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

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

答案2

我应该仔细阅读我链接的问答,因为有一个讨论页面的链接为什么这个项目被放弃了

WE正在进一步发展吗?

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

为什么我们要放弃WE

WE 基于ioctl()并且尽管ioctl()已经被使用并且仍然被用作用户←→内核空间之间通信的标准传输,但出于多种原因,新的传输被首选。

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

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

int ioctl(int fd, unsigned long cmd, ...);

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

它还指出:

该调用的非结构化性质ioctl导致它不再受到内核开发人员的青睐。每个ioctl命令本质上都是一个单独的、通常未记录的系统调用,并且无法以任何全面的方式审核这些调用。使非结构化ioctl论证在所有系统上都同样有效也很困难;例如,考虑 64 位系统,其中用户空间进程以 32 位模式运行。

Wireless-Extensions 的替代品是什么

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


边注:Jean Tourrhiles 似乎在 1997 年至 2009 年间致力于该项目。我找到了一个2014年的文章说图尔希尔斯仍在惠普,从事一个名为开放流

HP 的 Jean Tourrhiles 还担任可扩展性工作组的主席,该工作组充当“编辑”的角色,推动最新技术融入 OpenFlow 的未来版本

相关内容