- 博客(79)
- 资源 (14)
- 收藏
- 关注
转载 IEEE802.11协议栈
mac80211:是一个Linux内核子系统,是驱动开发者可用于为SoftMAC无线设备写驱动的框架。mac80211在内核空间实现STA模式,在用户空间实现AP模式(hostapd)。cfg80211:用于对无线设备进行配置管理,与FullMAC,mac80211和nl80211一起工作。nl80211:用于对无线设备进行配置管理,它是一个基本Netlink的用户态协议。
2024-11-13 15:52:59
296
转载 802.11 Tx Rate Control
如果用两个空口抓包器在AP旁边和STA旁边同时抓包,会更有助于分析一些问题的root cause,比如到底是Tx信号质量不好导致对端没有收到本端发送的packet,还是Rx性能不好导致本端没有收到对端发送的ACK。在一定距离内,不同的AP,如果使用同一个802.11 channel,那么它们各自的BSS会相互干扰(而且没有解决的办法)。实际应用到产品中的RCA都是采用Tx端决定速率的算法,即Tx端与Rx端不会进行速率协商,而是Tx端根据历史信息自行评估信道质量或发送成功率并决定下一段时间的Tx速率。
2024-11-13 15:47:41
104
转载 开发调试指令大全--(realtek开发调试命令)
使用位域变量,1 – 802.11b, 2 –802.11g,这个mib在配置为802.11g only和802.11n only模式的时候很有用,因为控制帧和管理帧需要使用802.11b,因此设置802.11g only其实还是需要打开协议栈的80.2.11b模式,此时同时把deny_legacy设置为1,不让802.11b模式的设备连接,这样就完成了模式802.11g only的设置;后面那条命令为设置具体的国家码,2个字符,比如CN就表示中国,US表示美国。
2023-12-29 13:53:26
777
转载 hostapd源代码分析(三):管理帧的收发和处理
802.11的管理帧主要有信标帧(beacon)、探测请求帧(probe request)、探测回应帧(probe response)、请求认证帧(authentication request)、认证回应帧(authentication response)、请求关联帧(association request)和关联回应帧(association response)等。接下来,继续调用ieee802_11_mgmt(位于src/ap/ieee80211.c),根据具体的帧来执行相应的操作。
2023-07-12 11:16:08
761
转载 hostapd源代码分析(二):hostapd的工作机制
一开始我觉得hostapd是以多线程的方式来异步处理各个事件的,但其实hostapd从头到尾都是单一线程——是的,我们的hostapd是移植到的MIPS的嵌入式系统上面(我们用的是RouterStation Pro),这么多的线程在嵌入式Linux上面是不现实的。其实,hostapd是通过socket来接受其他模块发来的消息的,并通过select()或者poll()系统调用来轮询各个socket的描述符,一旦发现众多socket描述符中有可用的描述符时,便调用相应的回调函数来处理相关事件。
2023-07-12 11:02:05
966
转载 hostapd源代码分析(一):网络接口和BSS的初始化
由于笔者分析的hostapd 是基于nl80211 的,所以hapd_init 指向nl80211 的初始化函数i802_init(定义在src/drivers/nl80211_driver.c 中,本文只分析hostapd 在用户空间的工作原理,至于内核空间是如何工作的,不在本文讨论之列。最近在做一个基于OpenFlow 协议的无线AP 的项目,于是就分析了hostapd 的源代码,并在原有的基础上添加上我们的代码。OK,到这里,网络接口和每个BSS 的基本初始化(即为它们分配内存)的工作结束了。
2023-07-12 10:36:13
787
转载 WPA 4次握手
一、why EALOP 4-way handshake 为了解决无线传输不安全,需要对无线连接的接入进行控制,并实现帧传播的加解密。 WPA 4-way handshake有点相当于一个“安全”地协商“交换”秘钥的过程。 这个秘钥就是PTK(PairwiseTransient Key),成对传输秘钥。二、WPA 4-way handshake过程1.一个简单的4-way handshake图图1 4-wayshake overview以WPA/WPA...
2021-01-23 20:55:42
661
1
转载 关于WPA/WPA2 4次握手
关于WPA/WPA2 4次握手简单描述一下WPA/WPA2的4次握手中的一些关键词: WPA/WPA2使用4次握手的方式来产生所需要的密钥。四次握手通过一系列的交互,从PMK(Pairwise Master Key)生成PTK(Pairwise Transient Key)。PMK来自MSK(Master Session Key),是MSK的前256位,32字节。 PTK包含3个部分,KCK(KeyConfirmationKey),KEK(Key EncryptionKey),TK(T...
2021-01-23 17:30:18
610
转载 802.11ax前瞻7:BSS Coloring技术
序言笔者在学习802.11ax过程中,发现有一些英文blog的内容总结还是不错的,所以笔者简单翻译一下,大家可以学习一下。本文参考自:What Is BSS Coloring In 802.11ax?What is BSS Color in 802.11ax?How Does BSS Coloring Work in 802.11ax?BSS Coloring技术介绍BSS Coloring是最初在802.11ah中引入的一种机制,用于为每个BSS分配不同的“颜色”。z该技术目的是增加在密
2020-07-15 22:27:18
2159
原创 关于Linux内核网络架构书籍收集
understanding_linux_network_internals.pdfLinux Networking Architecture 中文版
2016-01-15 15:22:18
898
转载 徐家俊:华为十年
懵懵懂懂到华为 上周,我正式提交了离职报告,准备给自己的职业生涯一个很大的转折,这是我长时间的思考最后所做的决定。但真的提出离职后,回想在公司的十年,还是百感交集。 1997年7月16日,我只身提着一个包从深圳宝安机场下飞机,走出机场,天是那么蓝,白云那么低,空气那么潮,仰头望天,对这个城市,对公司,对即将开展的工作和生活,对自己的前途一片茫然。 到了科技园,发现是个
2015-05-21 10:08:01
5737
转载 PACKET_MMAP实现原理分析
这个是接tcpdump的源码分析的转载地址http://blog.chinaunix.net/uid-20357359-id-1963684.html在上一篇文章中,已经提到了在libpcap-1.0.0中已经增加了部分平台的PACKET_MMAP支持,就一直想写一篇关于PACKET_MMAP实现的文章。PACKET_MMAP实现的代码都在net/packet/af_p
2015-04-20 09:21:29
814
转载 Linux网络编程:原始套接字的魔力【续】
转载至http://blog.chinaunix.net/uid-23069658-id-3293289.html如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了“发”,实在抱歉,所以就有这篇续出来了。 上一节我们主要研究了如何从链路层
2015-04-20 09:19:28
548
转载 Linux网络编程:原始套接字的魔力【下】
可以接收链路层MAC帧的原始套接字 前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP,这样会让系统疑惑,不知道该用什么协议来伺候你了。 今天我们介绍原始套接字的另一种用法
2015-04-20 09:19:13
692
转载 Linux网络编程:原始套接字的魔力【上】
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的I
2015-04-20 09:16:57
611
转载 tcpdump源码分析
linux环境下libpcap 源代码分析 韩大卫@吉林师范大学 libpcap 源代码官方下载地址:git clonehttps://github.com/the-tcpdump-group/libpcap.git tcpdumpm源代码官方下载地址:git clone git://bpf.tcpdump.org/tcpdump tcpdump.c使
2015-04-18 11:20:48
6847
转载 H264 GOP 扫盲
GOP说白了就是两个I帧之间的间隔.比较说GOP为120,如果是720p60的话,那就是2s一次I帧.以下为转载.转载地址:http://blog.youkuaiyun.com/perfectpdl/article/details/8451577 本文 来自 csdn ucser http://blog.youkuaiyun.com/perfectpdl, 转载注明出处,谢谢。
2015-03-04 08:52:37
612
转载 区分/dev/tty、/dev/console、/dev/pts、/dev/ttyn
通常我们在linux下看到的控制台(console)是由几个设备完成的。分别是/dev/ttyN(其中tty0就是/dev /console,tty1,tty2就是不同的虚拟终端(virtual console)).通常使用热键alt+Fn来在这些虚拟终端之间进行切换。所有的这些tty设备都是由linux/drivers/char /console.c和vt.c对应。/dev/pts是
2015-01-22 11:31:40
1067
转载 sbull虚拟的磁盘驱动的编写
原理指导:我们通过vmalloc在内存中开辟一部分空间,作为一个虚拟的磁盘,然后我们以块设备的方式来访问这片内存,例如这个sbull模型。sbull(Simple Block Utility for Loading Localities),该驱动程序实现了一个使用系统内存的块设备,从本质上讲,属于一种 RAM 磁盘驱动程序。字符设备的IO操作则是直接不绕弯的,块设备的IO操作会配对和整合。
2015-01-22 10:08:18
673
转载 IEEE802.11协议基础知识
1. 802.11管理功能–用户接入过程 STA (工作站)启动初始化、开始正式使用、AP 传送数据幀之前,要经过三个阶段才能接入: (1) 扫描(SCAN) (2) 认证(Authentication) (3) 关联(Association) 1.1 802.11管理–扫描(SCAN)
2015-01-08 10:47:32
1068
转载 Linux内核学习四库全书
关于内核学习我建议不要上来就读内核而是先了解内核的构成和特性,然后通过思考发现疑问这时再去读内核源码。即先了解概貌在读局部细节。而且内核分成好多部分,不要只是按照顺序去读,应该针对某一部分比如内存管理或进程管理横向读几本书,这样可以理解很全面。Linux Kernel 四库全书1. Linux内核设计与实现 Edition 2 2. Linux设备驱动 Edition
2015-01-07 10:30:24
495
转载 Linux网络编程必看书籍
首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机网络经典教材。目前已经是第五版,本书作者80年代就开发出MINIX,是一个用于操作系统教学的类UNIX(的小型操作系统。而
2015-01-07 10:26:50
507
转载 音视频 帧率 码率 文件大小 计算
录制 视频 过程中,视频帧率视频设置帧率为25, 而此时 从采集设备过来的 数据流也是25frame/s ,如是 我十分好奇音频有没有类似帧率一说,百度到如下资料:感觉十分 清楚的说明了 该问题: 采样率Sample Rate指单位时间内对媒体对象的采样次数,单位Hz(这句话好像和原来不太一样,郁闷)。 帧率(Frame per second,fps
2014-12-31 16:39:53
4198
转载 linux设备驱动--并发与竞态之原子操作
原子操作指的是在执行过程中不会被别的代码路径所中断的操作。 linux下面有两类原子操作,一类是整形原子操作,一类是位原子操作。 原子操作目前仅仅做个测试验证学习,至于原子操作在哪些场合适合用到,还需要今后更多的驱动以及内核代码的fuck。 整形原子操作的函数说明:[cpp] view plaincopy
2014-12-23 22:38:00
536
原创 arm汇编指令
ldr r1,label ;把label这个地址里面的内容赋给r1ldr r1,=0x2000014 ;将0x2000014付给r1.ldr r1,=label ;把label这个地址值赋给r1
2014-12-03 14:24:27
420
转载 container_of()宏
container_of()宏在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr:
2014-11-20 21:43:33
406
转载 dup and dup2的剖析
dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区
2014-11-19 11:29:33
454
转载 SIGCHLD信号与SIG_IGN处理的使用
signal(SIGCHLD, SIG_IGN); //忽略SIGCHLD信号,这常用于并发服务器的性能的一个技巧//因为并发服务器常常fork很多子进程,子进程终结之后需要//服务器进程去wait清理资源。如果将此信号的处理方式设为//忽略,可让内核把僵尸子进程转交给init进程去处理,省去了//大量僵尸进程占用系统资源。(Linux Only) some code();
2014-11-19 10:16:34
949
原创 Unknown mandatory EABI object attribute 44 报错?
1,可能是Makfile中的交叉工具链不是同一个,比如你链接两个库,两个库用的交叉工具不一样
2014-11-14 10:52:51
1056
转载 配置内核支持NFS启动文件系统
内核支持NFS分区(即编译时在File system中选中[*] Root file system on NFS), 以及支持内核IP_PNP(即编译时在Networking中选中[*] IP: kernel level autoconfiguration) File systems ---> Network File Systems --->
2014-11-05 15:37:41
728
转载 uboot环境变量(设置bootargs向linux内核传递正确的参数)
这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误。查看了很多资料后猜想应该是uboot传递给linux内核的参数有问题,也就是bootargs的设置有问题。#printenvbootargs=noinitrd root=/dev/mtdblock3 init=/linuxr
2014-11-05 12:00:53
1555
转载 ALSA --- amixer控制声卡驱动实现Line-in功能
# amixer --helpUsage: amixer [command]Available options:-h,--help this help-c,--card N select the card-D,--device N select the device, default 'default'-d,--debug debug
2014-08-27 16:13:06
977
原创 printf("%x,%x",ptr1[-1],*ptr2)的思考
int a[5] = {1,2,3,4,5}; int *ptr1 = (int *)(&a+1); int *ptr2 = (int *)((int)a); int *ptr3 = (int *)((int )a +1); printf("ptr:%d, ptr2:%x, ptr3:%x a:%x, a:%x, a1:%x\n", *ptr1, ptr2,
2014-08-21 16:04:00
1573
1
转载 Alsa 小结
2014年中考冲刺综合复习指导 北京地区试题 广东地区试题 江苏地区试题 alsa驱动的,分开设置了) (1)Sample rate: 不用说了(这些,对于default设备也能设的,上面已经说了) (2)Sample format: 不用说了 (3)Number of channels: 不用说了(4)Data access and layout:简
2014-06-24 17:44:54
967
转载 alsa 音频库的移植
Andrew Huangbluedrum@163.comalsa 是在LINUX出现比较晚的音频处理库,主要是针对原有的OSS的库进行改进.性能更好,支持多个播放源等.但相应的,增加的编程的复杂性. 旧的oss是采用标准文件IO接口,设备打开采用open,声音播录是采用数据IO接口(read/write),设备的参数采用ioctl来控制.都是系统调用因此无需额外库和配置文件来操作设备.但
2014-06-18 19:24:08
544
转载 ALSA声音编程介绍
这里了解一下各个参数的含义以及一些基本概念。样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。通道数(channel):该参数为1表示单声道,2则是立体声。桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。采样率(rate):每秒钟采样次数,该次数是针对桢而言。周期(period):音频设备一次处理所需要的桢数,对于音频设备的
2014-06-18 19:23:31
718
转载 U_boot 的 bootcmd 和bootargs参数详解
U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。u-bootcmd 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。u-bootargs bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来
2014-06-12 13:52:24
439
转载 Hi3515移动侦测技术的设计与实现
一、MD(移动侦测): 移动侦测是检测正在视频编码的图像是否发生亮度变化以及相应的运动向量。移动侦测通道就是视频编码通道,最大支持运动侦测路数与编码路数相同。 Hi3520/Hi3515 提供的移动侦测功能以宏块为最小单位,计算指定图像的宏块在指定图像间隔内的亮度变化和运动向量。如需要获取移动侦测的结果,则启用某一视频编码通道的移动侦测功能。移动侦测的结果包括宏块 SAD、宏块
2014-05-21 09:13:24
1621
cea861d,cea861d,cea861d,
2011-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人