Attempt to repair rx issues with the igc driver.
Our testcase uses a link between two igc ports on the same platform and forcing the issue by triggering an eee status update.
Although we found an easy trigger, there are likely other events causing the same issue. This commit replaces igc_if_init() with iflib_request_reset() calls to ensure a rebuild of RX state and publishing descriptor tails.
Setup:
sysctl net.fibs=3
ifconfig igc0 media 1000baseT mediaopt full-duplex
ifconfig igc3 media 1000baseT mediaopt full-duplex
ifconfig igc3 fib 1
ifconfig igc0 inet 10.99.99.1/30 up
ifconfig igc3 inet 10.99.99.2/30 up
test correct:
ping -t 3 -c 2 10.99.99.2
[8 lines not shown]
pf: pf_route() "dst" no longer holds the gateway in 15.x #294
Adjust a little more to accomodate af/naf magic later.
While here also make ip6_get_fwdtag() arguments const.
pf: a small touchup on shared forwarding code
The issue I see with pf_route() is that it has become a bit uncontrollable
in outcome since 15 with many edge cases and overlaps such as TTL decrement
before sending, dummynet back and forth and af/naf translations. Ideally,
it should be rewritten and aligned with the network stack instead of still
using the OpenBSD way of firing the packets from here.
Shared forwarding is 10 years old now, never considered upstream, but would
have helped structure this code much better by forcing a natural flow through
the stack.