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


10

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

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

发布最新版本v29Ubuntu 14和16,但似乎包含v30beta(iwconfig -v)。

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

惠普是否停止了让·图尔希尔斯的资助,所以开发工作停止了?或者,也许已经确定它足够稳定以停止开发,但是如果真是这样,为什么30仍然是beta?

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

版本记录

版本历史


“为什么无线工具版本30在Linux内核中……” -无线工具不在内核中。驱动程序位于内核中,无线工具是(a)用于配置内核空间驱动程序的用户空间组件。
marcelm

1
@marcelm我根据您的评论在问题中添加了一条注释。我猜他确实将WE添加到了内核中,/proc/net/wireless但是无线工具本身并不是内核的一部分。让我知道我是否错了。
菲利普·柯比布里德

1
是的,WE是内核的一部分。更准确地说,“无线扩展”是内核中的无线管道公开的用户空间<->内核空间接口的名称。wireless-tools使用该界面来操作无线设备。它们是独立版本的;在我的系统上,无线工具的版本是30,它与WE版本22的内核(4.9.0)通讯:)
marcelm

Answers:


17

不推荐使用无线工具,iw因为不推荐使用无线扩展,而推荐使用用于无线设备的新nl80211接口。iw内核文档对此进行了说明。

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

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


17

我应该通读我链接更好的Q / A,因为有一个链接链接到一个页面,该页面讨论了为什么放弃该项目

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参数在所有系统上都一样工作同样困难;例如,考虑具有用户空间进程以32位模式运行的64位系统。

什么是无线扩展的替代品

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


旁注 Jean Tourrhiles似乎在1997-2009年间从事该项目。我发现 2014年一篇文章说Tourrhiles仍在HP从事一个名为 OpenFlow的项目:

惠普的让·图尔希尔斯(Jean Tourrhiles)还是扩展性工作组的主席,该工作组充当“编辑”的角色,将最新技术推向未来的OpenFlow版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.