AF_XDP: установить `SO_TIMESTAMP` не поддерживается для `SO_XDP`: протокол недоступен

Почему настройка 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*)&timestamp, sizeof(int)) < 0) {
    fprintf(stderr, "Failed to set `SO_TIMESTAMP`: %s\n", strerror(errno));
    return;
}

И получить:

Не удалось установить SO_TIMESTAMP: протокол недоступен

Я скопировал определение SO_XDP из xsk.c (https://github.com/libbpf/libbpf/blob/master/src/xsk.c):

#ifndef SOL_XDP
 #define SOL_XDP 283
#endif

Я не понимаю, почему это не поддерживается...


person binaryBigInt    schedule 09.03.2020    source источник


Ответы (1)