基于linux的无线网卡驱动程序

来源 :硅谷 | 被引量 : 0次 | 上传用户:a20090907
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 无线局域网是当前较为常见的一种无线接入技术,具有运行速度高一级灵活性强的优势,研发基于linux的无线局域网产品成为一大热点课题。首先对WLAN无线网卡及linux网络设备进行简单介绍,之后对基于linux的无线网卡驱动程序结构及设计方案进行分析。
  关键词: linux;WLAN;无线网卡;驱动程序
  中图分类号:TN967 文献标识码:A 文章编号:1671-7597(2012)0910013-01
  0 前言
  无线局域网是当前应用范围较广的一种无线接入技术,其最大的优势在于运行速度快以及灵活程度高,对基于linux的无线局域网产品进行研发已经成为当前的一大热点课题。
  1 WLAN无线网卡及linux网络设备
  1.1 WLAN无线网卡
  WLAN,即无线局域网,其重要组成部分之一就是无线网卡,也就是通信网络接口卡,无线局域网除无线网卡之外的另一重要组成部分是接入点/桥接器。借助无线网卡硬件及软件可以确保无线局域网物理层及MAC层的实现;不仅如此,无线网卡还为用户设备提供与接入点/桥接器进行连接的接口。当前应用无线网卡的主要方式是PCMCIA以及CF卡,Atmel芯片组是USB设备无线网卡的基础,除此之外的绝大部分无线网卡都是依托于Intersil Prism或Lucent Hermes芯片组的。无线网卡一大关键硬件就是以802.11标准为设计依据的MAC协议处理芯片,对其性能的要求主要体现为以下两方面:一方面,需要具备将所接收到的来自于射频模块的信号转换为主机所能接收的数据格式能力,另一方面,还需要能够对所接收到的来自于驱动程序的数据包进行转换,并以802.11标准数据包形式传输给射频前端。MAC层全部功能借助MAC协议处理芯片均可以得以实现,对于用户而言,在使用过程中只需要添加memory以及对应的物理层,便可以得到一个完整性的无线局域网连接。
  1.2 linux网络设备
  处于便于管理的考虑,linux全部外围硬件设备被划分为字符设备、块设备以及网络设备等三大类。
  2 基于linux的无线网卡驱动程序结构及设计方案
  无线网卡的种类繁多,网卡不同,相应的支持硬件也有所区别,这也就决定了编写驱动程序也不尽一致。简言之,USB接口的网卡不需要任何模块的支持,CF及PCMCIA接口的网卡驱动需要有Card Service(CS)模块支持,Orinoco接口的网卡除此之外还需要Hermes模块加以辅助。在参考程序的选择上,笔者在此以cisco 350系列pcmcia无线网卡驱动为主,且已将其成功安装在笔记本电脑中,同时其收发包数据格式已通过airopeek测试;以orinoco.c,mpi350.c及Tenda 7722u USB设备驱动程序为辅。和传统的以太网卡驱动程序设计相比较而言,无线网卡中诸如开关网卡、加载及卸载模块等并无明显区别,因此,笔者只选择驱动中诸如函数初始化、收发数据等具有无限特色的内容进行介绍,这些也是驱动程序的核心。
  2.1 网卡初始化
  网卡初始化就是对网卡存在进行检测,主要内容就是对设备结构进行初始化,并将其在系统中进行登记。通常情况下,在对某网卡设备进行登记时,核心会自动发出初始化请求。
  初始化函数主要具有以下功能:
  1)在初始化程序中,以硬件特征为主要依据,对硬件存在与否进行检测,并作出是否将该驱动程序予以启动的决定;
  2)对request-irq及request-region进行调取,完成I/O基地址以及设备中断号的登记,同时对其进行检测;
  3)填充硬件帧头,这也是驱动程序的一项重要工作内容。通常情况喜爱,硬件会将自身硬件帧头添加到待发送的上层数据前,例如以太网就拥有添加在上层ip或ipx数据包前的14字节的帧头。驱动程序提供hard-header方法,该程序会在协议层进行数据发送前被调取。应在dev->hard header len填入硬件帧头的长度信息,以便协议层预留出必要空间,此时hard-header程序只需要对skb-push进行调取同时准确填写硬件帧头即可;
  4)负责对设备结构所接收到的大多数的域段进行填写。以太网接口很多设备结构网络接口信息的设置都是借助ether setup()函数得以实现的,该函数已被归入linux内核内部函数,无需特别指明。
  2.2 数据包传输
  分析OSI七层协议不难发现,在应用层具有数据传输需求的情况下,数据包传输方向是从上到下的,同时在各层都会添加对应的帧头,最终借助dev queue xmit()函数将数据包传输至网络接口。网络接口的作用就是向网卡传送数据包,以确保物理传输的顺利实现。根据设备结构可知,所有的网络接口都具有dev- > hard start xmit硬件传输函数指针,其主要作用是辅助linux进行数据传输。Cisco352驱动程序需要在hard start xmit函数中进行的工作主要有:
  1)确定一个未经使用的FID,并将其添加到MAC芯片链表中。这部分是Cisco352驱动程序的特色之一。
  2)对802.11控制域的结构体struct TXHDR-CTRL进行填充,从而为802.11帧头的构建奠定坚实基础。
  3)对来自于协议层的帧格式进行判断,并将帧头长度确定下来。根据802.11协议,无线网卡只可以对三种帧格式进行传输,分别是数据帧hdrlen=30;管理帧hdrlen=24;控制帧hdrlen=16或10。
  4)在网卡发送缓冲区中填入sk buf中的数据包,同时要注意格式要求;因为linux内核智能提供以太网接口,因此来自于协议层的数据包为802.3或以太网格式,但无线网卡能够支持的数据包格式只有802.11,因此,驱动程序必须在网卡缓冲区中对帧结构进行调整。在传输过程中,MAC芯片处理方式主要是受802.11帧头的帧控制部分所控制。   5)发出硬件发送指令,网卡执行发包。数据发送具体流程详见下图所示。
  在SQL Server 2005中采用了FP-树频集算法(优先关联族算法),该算法的最大优点是在大容量数据中高效率寻找复杂数据项。算法的执行方法是:第一步通过已过精确计算的表达式寻找出项集;第二步是基于频繁项集产生规则。算法关键指标如下所示:
  1)支持度:支持度指标主要是用于描述项集出现频度的指标,最低支持度意为只对达到指定频度的项集感兴趣,如果指定最低支持度为小于1的值则微软关联规则认为你只对频度达到指定百分比的项集感兴趣。比如0.03表示项集支持度只有占到总项集数的3%才能形成项集。最大支持度则指定了项集出现频度的上限,超过上限的项集也不是我们感兴趣的。
  2)概率:概率对规则的形成有影响。一条规则中有A的条件下会有B(A=>B)的概率是指一定的最低概率值就可以限制形成的规则数。
  3)重要性:如果该值为0表示A和B没有关联性,正值表示一旦拥有A则再拥有B的概率会增长,负值表示一旦拥有A则再拥有B的概率会降低。重要性对项集和规则形成都有这很大的影响,所以对于数据库的设计有着很大的意义。
  2.3 接收数据包
  因采取的是硬件中断请求机制,处理工作也可以借用中断服务程序,完成一次把从采集进来的一定量数据搬到内存里面的同时,完成同等数据量的工作,这样就不会再出现迟缓的现象。IIS可以发送和接收采样量化过的数据,具体的采样量化由编码完成。在接收方向,将模拟数据采样量化;在发送方向,将声音数据还原为模拟数据。第一步要对网卡硬件类型进行判断,在对数据包帧头长度进行确定时要以帧控制位为主要依据;第二步,发出sk buff(skb)申请请求,同时将所获取的数据保存在申请的缓冲区中;第三步,对sk buff信息进行填充。数据接收流程详见下图所示。
  3 结语
  综上所述,笔者在此主要对cisco352网卡驱动程序进行分析,并介绍了无线网卡驱动程序的编写方法,对接收和发送数据包的基本原理以及在网卡中的存储方式进行研究,以期对借助无线网络进行相关产品的研发有所帮助。
  参考文献:
  [1]刘金梅、周彤、李紫薇、刘立军,基于Linux操作系统的网卡驱动程序及其安装[J].北华航天工业学院学报,2008(03).
  [2]杨勇、叶梅、张秦艳、初元萍、胡磊,基于ARM的嵌入式Linux无线网卡设备驱动研究[J].核电子学与探测技术,2010(04).
  [3]孙俊琳、衣云芹,基于ARM的嵌入式LINUX系统字符设备驱动程序的探讨[J].科技信息(学术研究),2008(06).
  [4]孙俊琳,嵌入式Linux系统中字符设备驱动程序的设计与实现[J].烟台职业学院学报,2008(02).
  [5]朱香卫、陆卫忠,LINUX系统下的字符设备驱动程序的设计[J].连云港化工高等专科学校学报,2001(01).
其他文献
据相关媒体报道,最新一代Wi-Fi传输标准IEEE802.11ac已成为众多厂商相继支持的新Wi-Fi标准,包括思科、华硕、D-link、Netgear、Buffalo等厂商,都已有支持802.11ac标准的Wi-Fi基地台产品,理论传输值突破1Gbps。而这波新的搭载风潮,也将随着无线基站的推出逐渐延烧到移动终端上。  据了解,搭载此新芯片的手持终端产品,最快在明年第一季就可问世,而这也将驱使新
随着全球IPV4地址即将在“未来几个星期内”用尽,业内普遍认为,IPV4地址的提前告罄将加速IPV6的发展,IPV6是目前唯一能解决IP地址短缺的可行途径。从去年开始,电信运营商中国
无论是公共云还是私有云的搭建和应用都是一项艰巨而复杂的工作,不能一蹴而就。  前几天跟领导一起采访一家国内中间件公司,路上,领导抛出一个新观点:云计算其实就是一个大的中间件。此语一出,当时就让我摸不着头脑,怎么云计算又跟中间件扯上关系了呢?细想之下,这两者还真有些渊源,云计算不正是建立在中间件原则基础之上的吗?换句话说,云计算就是一种新的中间件。  如果从一个IT架构师的角度看,肯定会发现一些相似
1958年9月15日,毛泽东主席从武汉乘船来安徽视察,随行人员有国防委员会副主席张治中、中共中央政治局委员谭震林、中共中央委员张云逸、罗瑞卿(公安部长)等人。16日下午,毛主
近10年来,受油价剧烈波动和金融危机、债务危机的巨大影响,世界经济的增长起伏不定,特别是2008年金融危机后,世界经济的复苏历经波折。在欧洲主要国家领导人的推动下,杰里米·里夫金的“第三次工业革命”模式在欧洲某些地区已率先进行“试点”,并取得了一些成绩。  近10年来,受油价剧烈波动和金融危机、债务危机的巨大影响,世界经济的增长起伏不定,特别是2008年金融危机后,世界经济的复苏历经波折。全球政、
随着信息技术和网络技术的不断发展,流媒体技术以其诸多优点得到广泛的应用,随之也带来数字媒体版权保护和信息安全难题。而DRM(数字版权管理)且能有效的解决这一难题。基于
主要论述微动疲劳的研究的必要性和微动疲劳的基本概念。我们研究微动疲劳主要从4个部分来进行论述,即微动疲劳的影响因素、机理研究、防护方法和寿命预测的发展过程,其中机
摘要: 在计算机编程技术发展过程中出现三种编程思想——面向过程、面向对象和面向方面。对面向过程、面向对象和面向方面三种编程思想的核心理念、相关概念、优缺点及适用性进行分析。  关键词: 计算机编程思想;面向过程;面向对象;面向方面  计算机技术产生于二十世纪四十年代,随着软硬件水平的飞速发展和应用范围的扩大,计算机编程思想也历经变化,先后出现了面向过程编程、面向对象编程和面向方面编程这几种编程思想
期刊
茶园土壤的肥瘠直接关系着土地生产力的高低。据青岛农业大学茶叶研究所对山东省茶园土壤测定结果,全省茶园土壤有机质含量水平仅在0.9%左右,有的仅在0.7%上下,比上世纪五十