Я использую драйвер e1000e для нескольких сетевых карт Intel (Intel EXPI9402PT, на базе чипа 82571EB). Проблема в том, что когда я пытаюсь использовать максимальную скорость (1 ГБ) на нескольких интерфейсах, скорость на каждом интерфейсе начинает падать.
У меня есть собственный драйвер в пространстве ядра, предназначенный только для отправки данных пакетов. Он просто распределяет пакеты по:
skb = dev_alloc_skb(packet->len);
и они отправляют их по:
result = dev->hard_start_xmit(skb,dev);
Каждый интерфейс имеет свой собственный экземпляр драйвера.
Для одного интерфейса я получаю: 120435948 байт / сек.
Для двух интерфейсов я получаю: 61080233 байт / с и 60515294 байт / с.
Для трех интерфейсов я получаю: 28564020 байт / с, 27111184 байт / с, 27118907 байт / с.
В чем может быть причина? Функция hard_start_xmit реентерабельна?