Este não foi um problema libpcap
, mas sim um problema de engenharia sem fio. O canal em que estou trabalhando já é bastante barulhento, já que esta é uma malha não regulamentada (ou seja, ninguém coordena usando RTS / CTS) e então meu cartão wifi, no modo monitor, decidiu voltar para o "listen and wait for silence "abordagem que é obviamente mais lenta e mais propensa a erros. Isso significava que eu não podia transmitir muito rápido, o que significava que meu buffer TX enchia muito rapidamente, dando o erro Resource temporarily unavailable
. Isso é um resultado da detecção de portadora física (CCA), que causa um backoff exponencial.
Mudei para um canal vazio (com apenas um pacote a cada dois segundos) e de repente consegui transmitir mais de mil pacotes por segundo, o que é muito melhor. Minha velocidade de transmissão ainda é muito ruim (no máximo em cerca de 600KB / s), mas é pelo menos rápido o suficiente para ser utilizável para mim. Este post parece sugerir que algumas placas simplesmente não podem injetar tão rápido
Infelizmente, com a placa sem fio e seus drivers, não há maneiras fáceis de desativar esse comportamento de transmissão muito tímido. Alguns drivers permitem que você mexa nos parâmetros de backoff, outros permitem desabilitar o CCA se você tiver um cartão Atheros.