默认情况下,在ath5k中启用快速帧。(http://wireless.kernel.org/en/users/Drivers/ath5k)我找到了禁用它的宏
#define AR5K_EEPROM_FF_DIS(_v) (((_v) >> 2) & 0x1问题是我该怎么处理它?我是否把上面的一行换成
#define AR5K_EEPROM_FF_DIS(_v) 1我是否编译它,传递一些参数?
位移位的表情让我感到困惑。_v是一个变量吗?
关于如何在驱动程序中处理这些宏,这个问题更为普遍。我也在其他密码里见过他们,一直都很困惑。
发布于 2013-08-07 09:46:14
好的,我试着用一个简化的例子来解释
#include <stdio.h>
/* Just for print in binary mode */
char *chartobin(unsigned char c)
{
static char a[9];
int i;
for (i = 0; i < 8; i++)
a[7 - i] = (c & (1 << i)) == (1 << i) ? '1' : '0';
a[8] = '\0';
return a;
}
int main(void)
{
unsigned char u = 0xf;
printf("%s\n", chartobin(u));
u >>= 2; // Shift bits 2 positions (to the right)
printf("%s\n", chartobin(u));
printf("%s\n", chartobin(u & 0x1)); // Check if the last bit is on
return 0;
}输出:
00001111
00000011
00000001我用#define AR5K_EEPROM_FF_DIS(_v) 1替换上面的一行吗?
不!!
如果您用0xb而不是0xf初始化0xb,您将得到:
00001011
00000010
00000000如您所见,(((_v) >> 2) & 0x1 != 1
发布于 2015-04-30 21:38:55
在ath5k上没有启用或使用快速帧。它允许卡同时发送多个帧(将其视为11n 帧聚合的早期版本),该功能是在MadWiFi及其专有驱动程序上实现的,只能与也支持它的接入点一起使用。您所看到的是存储在设备EEPROM上的标志,它指示驱动程序是否可以使用快速帧,您所引用的宏只检查是否设置了该标志。您可以修改头文件以始终返回1,但这不会有任何区别,驱动程序从不使用该信息。
https://stackoverflow.com/questions/18099437
复制相似问题