DFS
Dynamic frequency selection(DFS)
动态信道选择(DFS),可以允许未授权设备使用已经分配给雷达的5GHz频段并且不会对这些雷达造成干扰的机制。
DFS的概念是:让未授权的设备在正在使用的信道上检测雷达系统是否存在,如果雷达超过某个阈值,清空信道并选择另一个可用的信道。
DFS的目标
- 在5GHz的信道上和雷达共存
- 执行均匀加载或跨频谱扩展。在5 GHz带宽中,有许多信道可以供无线设备工作。DFS还需要随机选择信道,以便在整个频谱中统一使用信道
5 GHz频段的兼容工作要求接入点设备能够检测到带内雷达信号的存在。通常,这些信号采用长度为1 - 100 μ s的周期性窄带脉冲或50 - 100 μ s的啁啾脉冲的形式。当探测到雷达时,接入点需要在10s内清空和雷达共存的通道,并跳转到不同的通道。
术语
- Channel Availability Check Time : 在启动信道上的通信链路之前,系统应监测该信道是否有雷达存在的时间。这也被简称为CAC。
- Interference Detection Threshold : 假设一个0 dBi天线,系统可以检测到的触发移动到另一个信道的最小信号电平。
- Channel Move Time : 系统清除信道的时间,从检测到雷达到信道上最后传输结束的时间。
- Channel Closing Transmission Time : 信道移动期间,系统的总传输时间
- Non-Occupancy Time : 雷达在通道上检测到该通道不能使用后的一段时间。
- Master Device : 具有雷达探测能力并可以控制网络中的其他设备的设备(例如,一个接入点被认为是一个主设备)
- Client Device : 未经主设备授权,不能在通道上发起通信的设备(例如,笔记本Wi-Fi卡——请注意,支持ad-hoc模式的Wi-Fi卡被视为主设备)
实现
高通技术芯片中的一个专用雷达检测模块负责将雷达脉冲与传入的信标/管理或数据帧区分开来。
每当硬件检测到RADAR PHY错误时,就会产生一个中断,MAC层向软件(中断处理程序)提供下列信息:
- RSSI值
- 脉冲宽度
- 收集数据的时间戳。该信息用于通过比较两个连续脉冲的时间戳来确定PRF/PRI值:
- 重复频率/脉冲重复间隔(PRF/PRI)
- 线性调频脉冲,PRF/PRI 可能不同
- 脉冲强度(RSSI)
- 脉冲宽度
有一个与雷达检测相关联的事件队列。RSSI、脉冲宽度和时间戳由中断处理程序存储在队列中。
有一个DFS定时器任务,用于读取与雷达检测相关的队列中的条目。它根据雷达滤波器表中定义的PRI、RSSI和脉冲宽度值来检查时间戳、RSSI和脉冲宽度值。
雷达PHY处理可以offload到固件。它被称为offloading - dfs。FO (Full-Offload)芯片通常将雷达PHY错误处理offload到固件。在offloaded-DFS中,整个处理过程在固件中进行,如果处理发现过滤器匹配,则从固件向主机发送雷达发现事件(WMI_PDEV_DFS_RADAR_DETECTION_EVENTID)。驻留在主机中的DFS组件解析事件并向MLME发送雷达发现指示。对于partial offload芯片,脉冲在宿主DFS组件中处理。所有芯片(partial offload and fulloffload)的DFS高级统一图如图所示
配置
在加载DFS模块的过程中,有几个参数可能会影响DFS
- domainoverride
0 = Uninitialized (default)
1 = FCC Domain (FCC3, US)
2 = ETSI Domain (Europe)
3 = Japan Domain - usenol
将此参数设置为0,即使检测到雷达,DFS模块也不会改变(空出)通道。这仅用于DFS认证和测试目的 - countrycode
这个参数可以用来设置国家代码。如果设置了该参数,则使用该参数自动选择对应的DFS域。演示频道使用国家代码0x1ff。
Radartool
Radartool可以用来配置DFS模块,以帮助调试DFS问题
Usage: radartool <command> [value]
Command | Values | Description |
---|---|---|
0 | 强制AP使用相同的信道,即使在该信道上检测到雷达后也是如此 | |
usenol | 1 | 正常的操作。AP在探测到雷达时将切换频道 |
2 | 仅用于内部测试),可以配置主机的NOL超时时间,不将通道添加到FW NOL中。 | |
dfsdebug | 0-3 | |
bangradar | None | 这是一个测试软件,模拟成功探测雷达情况下的行为。软件模块被通知雷达探测事件 |
shownol | None | 显示NOL列表中的信道 |
enable | None | 软件中打开打雷达侦测 |
disable | None | 在软件中禁用雷达检测,即使是有效的DFS通道 |
numdetects | None | 打印雷达脉冲检测次数的统计 |
setnol | None | 将指定通道添加到NOL列表中,即使在此通道中未检测到雷达 |