- Check number of free TX descs before trying to xmit packets
- Recollect TX descs in nfe_start() if nfe(4) is going to enter OACTIVE
- Use dynamic segment limit for bus_dmamap_load() in nfe_encap()
This change gives me following result on AMD64X2 3600+ with MCP51:
10 seconds, TX 64bytes packets, before/after
256 TX desc
imtimer | packets | if_snd full | if_oerrors
-125 1.08M/1.08M 84532/82786 90/0
-250 990K/1.08M
3735886/157125 38872/0
4096 TX desc
imtimer | packets | if_snd full | if_oerrors
-125 1.08M/1.09M 0/0 45/0
-250 1.08M/1.10M 0/0 39/0
It gives great improvement when number of TX desc is 256 (default),
and it at least will not loose any packets if number TX desc is 4096.