c - 我的 Linux 内核和 NIC 驱动程序是否支持 NIC RX 时间戳?
问题描述
我想获得 NIC RX 时间戳。此示例显示如何获取它们:
https://github.com/majek/openonload/blob/master/src/tests/onload/hwtimestamping/rx_timestamping.c
它包含以下功能。运行时,我收到错误消息输出。
static void do_ioctl(struct configuration* cfg, int sock)
{
#ifdef SIOCSHWTSTAMP
struct ifreq ifr;
struct hwtstamp_config hwc;
#endif
if( cfg->cfg_ioctl == NULL )
return;
#ifdef SIOCSHWTSTAMP
bzero(&ifr, sizeof(ifr));
snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s", cfg->cfg_ioctl);
/* Standard kernel ioctl options */
hwc.flags = 0;
hwc.tx_type = 0;
hwc.rx_filter = HWTSTAMP_FILTER_ALL;
ifr.ifr_data = (char*)&hwc;
TRY( ioctl(sock, SIOCSHWTSTAMP, &ifr) );
return;
#else
(void) sock;
printf("SIOCHWTSTAMP ioctl not supported on this kernel.\n"); // I get this output
exit(-ENOTSUP);
return;
#endif
}
但是,当我运行代码时,我得到:
此内核不支持 SIOCHWTSTAMP ioctl
“内核”是指网卡驱动程序还是操作系统内核?
我很快就会改用 Solarflare NIC,但我不确定这是否能解决问题,或者问题是否出在我的 Linux 内核上?
如果我破解它和#define SIOCHWTSTAMP
我自己,我会得到无法识别的编译错误struct ifreq
和struct hwtstamp_config
解决方案
推荐阅读
- sql-server - 自动增量批量插入
- windows - 如何在 Windows 中进行系统调用后进行反汇编
- android - Android Studio 重构应用图标
- pandas - Pandas - 将分类数据分成列
- javascript - 将域名连接到 localhost mongodb
- jsonnet - jsonnet可以用shell吗?
- ios - 加载后更改 UICollectionViewCell 高度
- java - Android - 来自 Retrofit 回调响应的令牌
- javascript - ionic2/3 获取和发布不工作
- regex - 重定向和正则表达式的案例问题