ソケットの設定SO_TIMESTAMP
がサポートされていないのはなぜですか? AF_XDP
私のドライバーのユーザー マニュアル ( mlnx 5.0
) には、次のように記載されています。
着信パケットは、PCI バッファの輻輳に応じて、PCI に配信される前にタイムスタンプが付けられます。
私の知る限り、before distributed on the PCI
Linuxカーネルが(まだ)関与していないことを意味します-そうですか?
次のように設定してみました。
int timestamp = SOF_TIMESTAMPING_RX_HARDWARE;
if(setsockopt(xsk_socket__fd(xsk_socket->xsk), SOL_XDP, SO_TIMESTAMP, (int*)×tamp, sizeof(int)) < 0) {
fprintf(stderr, "Failed to set `SO_TIMESTAMP`: %s\n", strerror(errno));
return;
}
そして得る:
設定に失敗しました
SO_TIMESTAMP
: プロトコルが利用できません
SO_XDP
from xsk.c
( https://github.com/libbpf/libbpf/blob/master/src/xsk.c )の定義をコピーしました:
#ifndef SOL_XDP
#define SOL_XDP 283
#endif
なぜサポートされていないのかわかりません...