802.11协议在Linux内核中的实现

合集下载

网络安全管理员考试题含参考答案

网络安全管理员考试题含参考答案

网络安全管理员考试题含参考答案一、单选题(共30题,每题1分,共30分)1、小李在维护信息系统过程中,不小心把操作系统的系统文件删了,这种不安全行为属于()A、损坏B、物理损坏C、泄漏D、意外失误正确答案:D2、以下能有效预防计算机病毒的方法是()。

A、把重要文件压缩处理B、及时清理系统垃圾文件C、及时升级防病毒软件D、尽可能多的做磁盘碎片整理正确答案:C3、做渗透测试的第一步是:A、拒绝服务攻击B、漏洞分析与目标选定C、尝试漏洞利用D、信息收集正确答案:D4、在 window 系统中用于显示本机各网络端口详细情况的命令是:A、ipconfigB、netstatC、netviewD、netshow正确答案:B5、变更经理全面负责变更管理流程所有具体活动执行,保障所有变更依照预定流程顺利执行。

下面不是变更经理职责的是()。

A、确保变更请求得到有效评估,授权和实施B、确保具体的变更活动得以有效、正确的执行C、帮助变更主管协调必要的变更时间、人员等工作D、将工作任务具体分派到每个工作人员正确答案:D6、由于信息系统分为五个安全保护等级,其安全保护能力是()。

A、逐级递减B、与等级无关C、逐级增加D、与安全技术和安全管理相关正确答案:C7、下列不是操作系统安全配置的是()。

A、系统所有用户的密码都必须符合一定的复杂度B、当前在用的操作系统没有已知的安全漏洞C、为了方便用户使用,应启动FTP服务D、禁止启动不用的服务,例如Telnet、SMTP等正确答案:C8、传输层的主要功能是实现主机与目的主机对等实体之间的()。

A、物理连接B、端-端连接C、点-点连接D、网络连接正确答案:B9、2012年6月6日,著名的社交网站LinkedIn公司发生了一次安全事件,包含650万条记录包含哈希的密码被上载到一个俄罗斯的论坛上。

据报道,已有30多万个密码被破解,密码破解的原因是使用了哈希算法SHAI。

从上述案例中可以得出LinkedIn公司存在()安全漏洞。

Linux中Wi-Fi无线网络和AP无线热点的配置教程

Linux中Wi-Fi无线网络和AP无线热点的配置教程

Linux中Wi-Fi⽆线⽹络和AP⽆线热点的配置教程0.Linux下的Wi-Fi配置⽆线⽹络飞速发展的今天,许多设备都提供了连接⽆线⽹络的功能。

那么Linux下的wifi到底该怎么配置、连接呢??开始配置之前,我们要说说iw家族。

iw是linux下常⽤的wifi配置⼯具,⽹上有相应的库和源码。

全名为wirelessTools。

配置wifi模块,并连接相应的⽆线⽹络过程:主要使⽤iwpriv命令(1)扫描可⽤的⽆线⽹络:复制代码代码如下:iwlist wifi-name scanning其中wifi-name为⽆线⽹卡的名字,⽐如⽹卡eth0就是系统默认的⽹卡名字, wifi-name可以⽤ifconfig查看,⼀般为ra0。

(2)看扫描到的⽹络信息,按要连接的⽹络类型进⾏配置。

以下为扫描到的⽹络:复制代码代码如下:iwlist ra0 scanning===>rt_ioctl_giwscan. 11(11) BSS returned, data->length = 1427ra0 Scan completed :Cell 01 - Address: C4:CA:D9:1D:9E:A0Protocol:802.11b/g/nESSID:""Mode:ManagedFrequency:2.412 GHz (Channel 1)Quality=7/100 Signal level=-87 dBm Noise level=-82 dBmEncryption key:offBit Rates:54 Mb/sCell 02 - Address: FC:75:16:A1:A9:16Protocol:802.11b/g/nESSID:"jxj_rd"Mode:ManagedFrequency:2.452 GHz (Channel 9)Quality=94/100 Signal level=-53 dBm Noise level=-92 dBmEncryption key:onBit Rates:54 Mb/sIE: WPA Version 1Group Cipher : TKIPPairwise Ciphers (2) : TKIP CCMPAuthentication Suites (1) : PSKIE: IEEE 802.11i/WPA2 Version 1Group Cipher : TKIPPairwise Ciphers (2) : TKIP CCMPAuthentication Suites (1) : PSKCell 03 - Address: C4:CA:D9:02:2A:70Protocol:802.11b/g/nESSID:""Mode:ManagedFrequency:2.462 GHz (Channel 11)Quality=83/100 Signal level=-57 dBm Noise level=-92 dBmEncryption key:offBit Rates:54 Mb/sCell 04 - Address: 14:D6:4D:75:CA:9CProtocol:802.11b/g/nESSID:"liangym"Mode:ManagedFrequency:2.472 GHz (Channel 13)Quality=100/100 Signal level=-27 dBm Noise level=-92 dBmEncryption key:onBit Rates:54 Mb/sIE: WPA Version 1Group Cipher : CCMPPairwise Ciphers (1) : CCMPAuthentication Suites (1) : PSKIE: IEEE 802.11i/WPA2 Version 1Group Cipher : CCMPPairwise Ciphers (1) : CCMPAuthentication Suites (1) : PSK如上:ESSID项的值即为⽆线⽹络的名字,如上的“jxj_rd”等。

网络与信息安全管理员习题含答案

网络与信息安全管理员习题含答案

网络与信息安全管理员习题含答案一、单选题(共100题,每题1分,共100分)1、如果在具有层次结构的一组元素中,存在着一对一的关系,我们可以认为这样的数据的逻辑类型就是()。

A、集合B、线性结构C、树型结构D、图型结构正确答案:B2、"在配置账户加入本地组,可以右击某用户,在弹出的快捷菜单中选择"属性",打开用户的属性对话框,在该对话框中找到()选项卡添加进组。

"A、环境B、常规C、隶属于D、拨入正确答案:C3、密码策略中,关于密码复杂性的说法不正确的是()。

A、要求密码有最小的长度,如六个字符B、密码复杂性要求在创建新密码或更改密码时强制执行C、建议使用大小写字母、数字和特殊字符组成密码D、复杂密码可以长期使用正确答案:D4、链路聚合端口成员应保证,除了()。

A、端口成员速率一致B、端口成员同属一个VLANC、端口成员所用传输介质相同D、端口成员协商模式一致正确答案:D5、由于操作系统是绝大多数攻击的目标,因此操作系统官方公司不断推出()包以保证系统的安全性。

A、补丁B、兼容C、卸载D、容错正确答案:A6、利用各种通信手段,把地理上分散的计算机有机的连在一起,达到相互通信而且共享硬件、软件和数据等系统属于 ( ) 。

A、分布式计算机系统B、计算机网络C、终端分时系统D、多机系统正确答案:B7、以太网使用的介质控制协议是( )。

A、CSMB/CAB、CSMD/ACC、CSMA/CDD、CSMC/CA正确答案:C8、路径是指从目录中的某个目录层次到达一文件或子目录的描述,以()为分隔符。

A、\B、,C、/D、.正确答案:C9、根据《广东省计算机信息系统安全保护条例》规定,计算机信息系统的运营、使用单位没有向地级市以上人民政府公安机关备案的,由公安机关处以( )。

A、警告B、罚款1500元C、拘留15D、警告或者停机整顿正确答案:D10、关于跨交换机VLAN概念正确的是()。

linux 80211 认证过程

linux 80211 认证过程

linux 80211 认证过程802.11是无线局域网的标准之一,定义了无线网络中设备之间的通信协议和认证过程。

在Linux系统中,认证过程分为四个阶段,即关联(Association),认证(Authentication),授权(Authorization)和密钥交换(Key Exchange)。

下面将详细介绍Linux上的802.11认证过程。

1.关联(Association):关联是客户设备与接入点(Access Point)建立连接的过程。

客户设备扫描附近的无线网络,并查找信号强度最好的接入点。

然后,客户设备向接入点发送关联请求,并提供自己的身份信息,如MAC地址、支持的安全机制等。

接入点验证这些信息,并决定是否与客户设备建立连接。

2.认证(Authentication):认证是指客户设备通过验证自己的身份合法性来获得接入网络的权限。

认证过程有两种方式:开放系统认证和共享密钥认证。

-开放系统认证:客户设备向接入点发送认证请求,接入点无条件通过认证请求。

这种方式不提供任何安全性,任何设备都可以连接到网络。

在Linux系统中,可以通过设置认证方式为“open”的参数来实现开放系统认证。

-共享密钥认证:客户设备向接入点发送认证请求,并提供预共享密钥(Pre-Shared Key,PSK)。

接入点使用相同的PSK对请求进行验证。

如果PSK匹配,认证成功;否则,认证失败。

在Linux系统中,可以通过设置认证方式为“wpa-psk”和提供正确的PSK来实现共享密钥认证。

3.授权(Authorization):授权是指接入点验证客户设备的身份合法性,并为其分配访问网络的权限。

在认证过程中,接入点会根据客户设备的身份信息来决定是否授权。

如果认证和授权都成功,客户设备可以继续后续操作,例如IP地址获取、DNS解析等。

4.密钥交换(Key Exchange):密钥交换是为了保证在接下来的通信过程中数据的加密和解密。

linux 中cfg80211_ops的调用关系

linux 中cfg80211_ops的调用关系

cfg80211 是Linux 内核中用于处理无线局域网(WLAN)配置的子系统。

cfg80211_ops 是这个子系统中的一个关键结构体,它包含了一系列的操作函数指针,用于实现不同的无线功能。

这些操作函数通常会被设备驱动程序实现,并通过cfg80211_ops 结构体注册到cfg80211 子系统中。

下面是cfg80211_ops 中一些重要操作函数的调用关系:add_virtual_intf: 当需要添加虚拟接口时,cfg80211 子系统会调用此函数。

这通常发生在创建新的无线网络接口(如wlan0、wlan1 等)时。

del_virtual_intf: 当需要删除虚拟接口时,cfg80211 子系统会调用此函数。

change_virtual_intf: 当需要修改虚拟接口的属性时,cfg80211 子系统会调用此函数。

add_key 和del_key: 当需要添加或删除加密密钥时,cfg80211 子系统会调用这些函数。

get_station: 当需要获取与某个站点相关的信息时,cfg80211 子系统会调用此函数。

dump_station: 用于导出与站点相关的信息,通常用于调试或诊断目的。

set_wiphy_params: 当需要设置无线硬件参数时,cfg80211 子系统会调用此函数。

set_tx_power: 用于设置发射功率。

get_tx_power: 用于获取当前的发射功率。

set_rts_threshold: 设置RTS 阈值。

set_frag_threshold: 设置分片阈值。

此外,还有许多其他的操作函数,用于处理不同的无线功能和事件,如扫描、连接、断开连接、认证、关联等。

设备驱动程序在实现这些操作函数时,通常会与硬件进行交互,以实现相应的功能。

一旦驱动程序注册了cfg80211_ops 结构体,cfg80211 子系统就可以在需要时调用这些操作函数。

需要注意的是,具体的调用关系可能会因不同的设备和驱动程序而有所差异。

FUSION LINUX软件介绍

FUSION LINUX软件介绍

LINUX下WIFI驱动和配置接口介绍1.概要 (2)2.WIFI驱动程序架构 (2)2.1.驱动架构概要 (2)2.2.底层MAC (3)2.2.1.HAL (3)2.2.2.ATH (3)2.2.3.Rate Control(速率控制) (3)2.2.4.Packet Logging (数据包日志打印) (4)2.2.5.DFS(动态频率选择) (4)2.3.上层MAC (4)2.3.1.802.11层 (4)2.3.2.Shim层 (4)2.4.WBUF (5)3.用户配置接口 (5)3.1.出厂默认配置 (5)3.2.WEB配置 (6)3.2.1.Web服务器设计 (6)3.2.1.1变量名称 (6)3.2.1.2文件标签 (6)3.2.1.3WEB服务器应用 (8)3.2.1.4cfg命令的使用 (10)3.2.1.4.1添加/修改配置参数 (10)3.2.1.4.2删除配置 (10)3.2.1.4.3保存配置 (10)3.2.1.4.4翻译文件 (10)3.2.1.4.5输出配置 (10)3.2.1.4.6重置出厂配置 (10)3.2.2.环境变量 (11)3.2.3.WEB页面接口 (11)3.2.3.1Network页面 (11)3.2.3.2Radio配置页面 (13)3.2.3.3VAP(虚拟AP)配置页面 (15)3.2.3.4状态显示页面 (18)3.2.3.5通道信息页面 (19)3.2.3.6统计信息页面 (19)3.2.4.命令行配置接口 (20)缩写RSN(Robust Security Network)1.概要本文主要是基于PB44 damo板上的LINUX FUSION软件版本,对ATHEROS 的WIFI驱动程序架构和用户配置接口进行详细的描述(着重在用户配置接口)。

2.WIFI驱动程序架构2.1.驱动架构概要FUSION版本下的WIFI驱动使用了ATHTEROS 通用驱动程序框架,该程序适用于多种操作系统平台(如:LINUX,WINDOWS,VXWORKS等)。

nl80211 程序 例子

nl80211 程序 例子

nl80211是一个用于与Linux 内核的nl80211 驱动交互的库。

它允许用户空间程序与无线网卡进行交互,例如扫描无线网络、连接到网络等。

以下是一个简单的nl80211程序示例,该程序扫描可用的无线网络并打印其详细信息:c复制代码#include<stdio.h>#include<stdlib.h>#include<nl80211.h>#include<netlink/netlink.h>#include<netlink/socket.h>#include<netlink/attr.h>int main(void) {struct nl_sock *sk;struct nl_msg *msg;int err;int seq = 1;int flags = NLM_F_DUMP | NLM_F_REQUEST;struct nlattr *nest;struct nlattr *tb[NL80211_ATTR_MAX + 1];struct nl_msg *req;char buf[1024];struct nl_parser *parser;struct nl_cache *cache;int ifindex = 0; // 使用默认的无线网络接口sk = nl_socket_alloc();if (!sk) {fprintf(stderr, "Failed to allocate netlink socket.\n");exit(EXIT_FAILURE);}if (genl_connect(sk) < 0) {fprintf(stderr, "Failed to connect to generic netlink.\n");exit(EXIT_FAILURE);}req = nlmsg_alloc();if (!req) {fprintf(stderr, "Failed to allocate netlink message.\n");exit(EXIT_FAILURE);}nl_msg_put_header(req, sk, &seq, flags, NL80211_CMD_GET_WIPHY);nest = nla_nest_start(req, NL80211_ATTR_WIPHY);nla_put_u32(req, NL80211_WIPHY_INDEX, ifindex);nla_nest_end(req, nest);if ((err = nl_send_auto_complete(sk, req)) < 0) {fprintf(stderr, "Failed to send netlink message: %s.\n", strerror(-err));exit(EXIT_FAILURE);}parser = nl_parser_alloc();if (!parser) {fprintf(stderr, "Failed to allocate netlink parser.\n");exit(EXIT_FAILURE);}if ((err = nl_parser_start(parser, sk)) < 0) {fprintf(stderr, "Failed to start netlink parser: %s.\n", strerror(-err));exit(EXIT_FAILURE);}while (nl_recvmsgs(sk, buf, sizeof buf) > 0) {if ((err = nl_parser_next(parser)) < 0) {fprintf(stderr, "Failed to parse netlink message: %s.\n", strerror(-err));exit(EXIT_FAILURE);} else if (nl_msg_parse(parser, tb) < 0) {fprintf(stderr, "Failed to parse netlink attributes.\n");exit(EXIT_FAILURE);} else if (tb[NL80211_ATTR_WIPHY]) {struct wiphy *wiphy = nla_data(tb[NL80211_ATTR_WIPHY]);struct wiphy_info info;wiphy_info(*wiphy, &info); // 获取 wiphy 的信息并存储在 info 中,这里仅打印 wiphy 的名称和 wiphy 的频率范围。

mac80211分析报告

mac80211分析报告

mac80211源码分析1.概述2.体系结构3.代码结构4.数据结构5.主要流程6.切换点7.主要函数8.速率控制1.1概述•mac80211:是一个Linux内核子系统,是驱动开发者可用于为SoftMAC无线设备写驱动的框架。

mac80211在内核空间实现STA模式,在用户空间实现AP模式(hostapd)。

•cfg80211:用于对无线设备进行配置管理,与FullMAC,mac80211和nl80211一起工作。

•nl80211:用于对无线设备进行配置管理,它是一个基本Netlink的用户态协议。

•MLME:即MAC (Media Access Control) Layer Management Entity,它管理物理层MAC状态机。

•SoftMAC:其MLME由软件实现,mac80211为SoftMAC实现提供了一个API。

即:SoftMAC设备允许对硬件执行更好地控制,允许用软件实现对802.11的帧管理,包括解析和产生802.11无线帧。

目前大多数802.11设备为SoftMAC,而FullMAC设备较少。

•FullMAC:其MLME由硬件管理,当写FullMAC无线驱动时,不需要使用mac80211。

•wpa_supplicant:是用户空间一个应用程序,主要发起MLME命令,然后处理相关结果。

•hostpad:是用户空间一个应用程序,主要实现station接入认证管理。

1.2体系结构HOSTAPD:WPAD:图2-1 系统框架1.3代码结构(/net/mac80211/)•ieee80211_i.h(主要数据结构)•main.c(主函数入口)•iface.c(虚拟接口处理)•key.c,key.h(密钥管理)•sta_info.c,sta_info.h(用户管理)•pm.c(功率管理)•rate.c,rate.h(速率控制函数)•rc80211*(速率控制算法)•rx.c(帧接收路径代码)•tx.c(帧发送路径代码)•scan.c(软件扫描代码)•mlme.c(station/managed模式MLME)•ibss.c(IBSS MLME)•cfg.c,cfg.h,wext.c(配置入口代码)•aes*,tkip*,wep*,michael*,wpa*(WPA/RSN/WEP代码)•wme.c,wme.h(QoS代码)•util.c(公共函数)1.4数据结构ieee80211_local/ieee80211_hw•每个数据结构代表一个无线设备(ieee80211_hw嵌入到ieee80211_local)•ieee80211_hw是ieee80211_local在驱动中的可见部分•包含无线设备的所有操作信息sta_info/ieee80211_sta•代表每一个station•可能是mesh,IBSS,AP,WDS•ieee80211_sta是驱动可见部分ieee80211_conf•硬件配置•当前信道是最重要的字段•硬件特殊参数ieee80211_bss_conf•BSS配置•多BSSes类型(IBSS/AP/managed)•包含比如基础速率位图•per BSS parameters in case hardware supports creating/associating with multiple B SSesieee80211_key/ieee80211_key_conf•代表加密/解密密钥•ieee80211_key_conf提供给驱动用于硬件加速•ieee80211_key包含book-keeping和软件解密状态ieee80211_tx_info•大部分复杂数据结构•skb内部控制缓冲区(cb)•经历三个阶段:1、由mac80211初始化;2、由驱动使用;3、由发送状态通告使用ieee80211_rx_status•包含接收帧状态•驱动通过接收帧传给mac80211ieee80211_sub_if_data/ieee80211_vif•包含每个虚拟接口信息•ieee80211_vif is passed to driver for those virtual interfaces the driver knows about (no monitor,VLAN)•包含的sub-structures取决于模式1.5主要流程配置•所有发起来自用户空间(wext或者nl80211)•managed和IBSS模式:触发状态机(基于workqueue)•有些操作或多或少直接通过驱动传递(比如信道设置)接收路径•ieee80211_tasklet_handler,响应中断,在下半部tasklet处理数据,•通过函数ieee80211_rx()接收帧•调用ieee80211_rx_monitor()拷贝帧传递给所有监听接口•调用invoke_rx_handlers()处理帧•如果是数据帧,转换成802.3帧格式,传递给上层协议栈ieee80211_deliver_skb( rx.c中) netif_receive_skb上送网络。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

24 /42
3.9.1 选择寄存器
选择寄存器(Select0-1 Registers) 用于写入FID/RID的值,它必须在Offset Registers的 busy位为0且在偏移值(data offset)写入Offset Registers 之前进行。 FID用于描述一个特殊的帧缓冲结构。 RID是一个16进制0xFC00–0xFFFF范围内的值,用于 设置或读取硬件的相关参数。
读取传送用于数据的缓冲结构体FID(一般用于TxOK 及TxExc中断事件中)。 其它注意事项与前同(略)。
31 /42
4.传送及接收帧结构体
32 /42
4.传送及接收帧结构体(Cont.)
33 /42
4.1传送帧结构体
Struct hfa384x_tx_frame用于提供构造实际硬件头的必 要信息,它即包括802.11格式又包括802.3格式,当需 要802.11时就用802.11格式,反之亦然。 成员TxControl
9 /42
2.3 数据包的发送和接收
在驱动层次上的发送和接收都是通过底层对硬件的读 写来完成的。 发送数据的时候,在prism2网卡上,通过对网卡的发 送缓冲区写需要发送的数据,然后向command寄存器 写发送命令,将数据包发送到物理网络上。 当网络上有数据包来的时候,会触发硬件中断,根据 注册的中断向量表确定处理函数,进入中断处理程序, 将数据发送到上层协议进行处理。 发送和接收数据函数分别为: static int prism2_tx(struct sk_buff *skb, struct net_device *dev); static int prism2_rx(struct net_device *dev);
20 /42
3.7 事件确认寄存器
事件确认寄存器(EvAck Register) 一个事件发生之后,总是必须确认,一旦确认后随此 事件发生的一切状态及产生的结果就都不再具有任何 意义。 方法是把与事件状态寄存器(EvStat Register)中的相同 位置1,当确认事件完成,硬件会自动把相应位置为0。
17 /42
3.4 指令反馈寄存器
指令反馈寄存器(Resp0-2 Registers) Prism中总共有三个(0, 1, 2)。 这个寄存器用于读取指令执行完后的response resulting。 在状态寄存器中数据有效的情况下,此response resulting 才算有效。
18 /42
3 /42
1.2驱动概念
驱动程序是指一组子程序它们屏蔽了底层硬件处理细 节,同时向上层软件提供硬件无关接口。可形象比喻 为软硬皆吃。 由于无线媒体的特殊性,其网络设备的驱动相对(以 太网)来说要复杂得多。
4 /42
2. 驱动框架
以2002-5-19版 prism2驱动为蓝本,主要分析Ad-hoc 网络设备驱动程序编写方法有两种:通过模块驱动和 通过内核启动时自动检测的方法。 通过模块驱动的优点: 1、减小内核体积; 2、有助于调试。 2 用shell命令的insmod将该模块插入到内核运行空间; 用rmmod命令将该模块卸载。insmod触发的是程序里 面的init_module()函数;而rmmod命令触发的是 cleanup_module()函数。注意:需要root权限。 #insmod ./hostap_cs.o #rmmod hostap_cs
7 /42
2. 1模块的加载和卸载(Cont.)
8 /42
2.2 设备的打开与关闭
在允许发送接收数据之前,需要打开(即激活)网络 设备。对应于打开操作,还有关闭操作。 它们在驱动中对应的函数分别为: static int prism2_open(struct net_device *dev); static int prism2_close(struct net_device *dev); 可以通过ifconfig命令手动激活或关闭。 #ifconfig wlan0 up #ifconfig wlan0 down
当数据传送完成(不论是否成功),可通过成员status可 以获得数据传送的结果。
35 /42
4.2接收帧结构体
成员status
MessageType---数据域中数据的类型 PCF置1,表示此包在CF(自由竞争)期间接收的 MACPort接收数据所用的mac端口 后面两个分别与解密及CRC相关
成员frame_control---可判断接收到的数据包是哪一类 型(管理帧、数据帧、控制帧)。
调 用 hfa384x_setup_bap() 把 申 请到的fid 所代表的地址写入 select0寄存器中,并把偏移写 入offest0寄存器中
IEEE 802.11协议在Linux内核中的实现
Outline
预备知识 驱动框架 寄存器(代码示例) 传送及接收帧结构体 传送及接收数据流程 调试 总结(到目前为止,我们能做什么)
2 /42
1.1 涉及到的内核中的数据结构
套接字缓冲区(sk_buff)---- sockfd = socket(AF_INET,SOCK_STREAM,0) -是以双向链表结构进行管理, 在INET Socket层和硬件层之 间存放数据包,并完成数据 包在不同层次之间的传递的 载体。特点:跨层、指针移 位操作减少内存里的数据 copy,提高效率。 net_device结构------供网 络接口设备使用。特点:每 个网络设备都有且仅有一个 对应的此结构。所有的网络 设备都会添加到一个以 dev_base为表头的链表中。
28 /42
3.11 AllocFID Register
在command register中执行Alloc指令后,可从中获得缓 冲结构体的地址。 其它注意事项与前同(略)。
29 /42
3.11AllocFID Register(Cont.)
30 /42
3.12 TxComplFID Register
15 /42
3.2 参数寄存器
参数寄存器(Param0-2 Registers) 用来存放指令的参数。 Prism中总共有三个(0, 1, 2)。 必须在指令写入指令寄存器之前,且指令寄存器的 busy为0的情况下,才能向参数寄存器写入参数
16 /42
3.3 状态寄存器
状态寄存器(Status Register) 这个寄存器用于读取指令执行后的状态,如Successful、 Card failure、No buffer space、Command error。 CmdCode存放上次执行的指令。 只有在EvStat register的cmd位置1,读取出来的状态才算 有效,另外,一旦EvAck register的CmdAck位被置1,则 表示状态过期无效。
10 /42
2.4中断
11 /42
2.5 统计数据
12 /42
2.6 用户的ioctl命令系统调用
13 /42
3. 寄存器
软硬件之间的交互基本都是通过寄存器进行的,比如 硬件的初始化,激活、关闭、设置或读取硬件的属性 等等。 Prism2硬件里的寄存器均是16位
14 /42
3. 1 指令寄存器
26 /42
3.9.3 数据寄存器
数据寄存器(Data0-1 Registers) 用于读写buffer的数据,读写时内部的指针会自动增 加(有点和文件的读写操作类似)。
27 /42
3.10 RxFID Register
当网络设备接收到数据包,且EvStat register的Rx位被 置1后,即可从中读取用于接收数据缓冲结构体的FID。 在EvAck register的RxAck位被置1后,表示FID无效。
MACPort---用于传送数据的MAC端口。 位StrucType=0,表示用802.3格式;…=1,则反之。 位TxEx---当传送失败是否需要触发TxExc中断,为0表 示不触发。 位TxOK----当传送成功是否需要触发Tx中断,为0表示 不触发。(驱动中未实现)
34 /42
4.1传送帧结构体(Cont.)
5 /42
2. 1模块的加载和卸载(初始化)
6 /42
2. 1模块的加载和卸载(Cont.)
由于此网络设备是PCMCIA规范,所以先向PCMCIA卡 管理器注册该设备 (调用register_pccard_driver),使 driver_info_t结构attach函数指针指向prism2_attach(), detach函数指针指向prism2_detach()。 prism2_attach()调用prism2_init_local_data() 初始化网络 设备的local_info_t结构;调用prism2_setup_dev(),初始 local_info_t prism2_setup_dev() 化网络设备结构struct net_device *dev的多个函数指针 ; 调用prism2_hw_init()建立FID(Frame IDentifiers)与缓冲 区之间的映射,通过RID(Resource IDentifiers)初始化网 络设备的一些属性,如传输速率;注册中断服务类程。 调用prism2_init_dev()把网络设备添加到dev_base为链表 头的链表中,在proc文件系统中建立相应的目录,初始 化数据加密过程等。
21 /42
3.8 实例
22 /42
3.8 实例(Cont.)
23 /42
3.9 缓冲访问通道
缓冲访问路径--Buffer Access Paths (BAPs) 在硬件中有两个BAP0和BAP1(不是指寄存器,我认 为是一种机制),每个又对应有三个寄存器Select0-1 Registers、Offset0-1 Registers及Dataห้องสมุดไป่ตู้-1 Registers。 主要用于把需要发送的数据包写入缓冲(FID),读取接 收的数据包(FID)及读取或设置硬件相关参数(RID) , 如使用频率、传输速率等。 在使用BAP之前,需要调用hfa384x_setup_bap()进行 初始化,把获得的fid和offest写入相应的寄存器中。
相关文档
最新文档