Age | Commit message (Collapse) | Author |
|
This syncs PHY and chip dependent parts as well as brings support for the
flow control and additional (untested) bits for 1G fiber versions.
Tested by Hrvoje Popovski <hrvoje at srce ! hr> on 82599/SFP+DA, florian@
and benno@ on 82599/SFP+SR and on 82598/CX4-BP, 82599/SFP+DA and X540/RJ45
by me.
|
|
|
|
|
|
|
|
verified with the upstream driver
|
|
There are a number of bugs that this commit fixes. The main issue
is that ixgbe_tx_ctx_setup sets up a descriptor for TCP and UDP
checksum calculation, but not for IP, therefore it must use TXSM
instead of IXSM. Which is what FreeBSD does now. I've tested this
on 82599 with TCP, UDP, ICMP, ICMP6, VLANs and OSPF with TCP and
UDP checksums turned on against oce(4). ixgbe_tso_setup is updated
as well, albeit remains disabled (as well as checksums themselves).
Parts of the change were obtained from brad's diff he sent me a
while ago.
|
|
|
|
and rxbuf->pmap to rxbuf->map. Tested on 82599 and X540.
|
|
of an error. Previous change made the problem evident.
|
|
OpenBSD and now is finally removed from the upstream.
No real functional change (we've lost some weight though).
Tested on 82599.
|
|
from FreeBSD. This also adds untested and hence disabled
support for multispeed fiber interrupts. With input from
and ok jsg.
|
|
link information reporting in general. Obtained for the most part
from FreeBSD, tested by mxb at alumni ! chalmers ! se on X540 and
me on 82598 (XAUI, KR4), 82599 (SFP+) and X540 (baseT); ok jsg
|
|
and fix tested on 82599 by tony sarendal tony@polarcap.org, tested
on X540 and 82598 by me, ok jsg
|
|
necessarily correct, there might not even be a link when attaching.
ok mikeb@ reyk@
|
|
mxb at alumni ! chalmers ! se. thanks!
|
|
- Some minor tweaking of the use of braces in two spots
ok mikeb@
|
|
and correct an incorrect usage of IXGBE_RXCSUM_PCSD. ok henning
|
|
to get in the way. ok krw, brad
|
|
ok mikeb@
|
|
|
|
Chris Maxwell <chris ! maxwell () hootsuite.com>
ok jsg
|
|
|
|
work against the mclgeti algorithm and besides it doesn't make any
difference if [repaired and] enabled since interrupt mitigation was
fixed some time ago. So remove the leftovers altogether so that
nobody would be tempted to use them.
ok claudio, jsg
|
|
The code was obtained from FreeBSD and tested on the hardware kindly
donated by Tony Sarendal <tony () polarcap ! org>. Thanks a lot!
ok jsg
|
|
|
|
drivers - from brad; while here initialized a stack variable
before usage as pointed out by david hill.
|
|
performance improvement. obtained from freebsd.
|
|
is below the threshold. noticed by brad. tweak threshold values
to get a bit of a performance increase.
|
|
rely on regular rx/tx queue interrupts moderated to 8k intr/s achieving
best performance/latency ratio. this effectively doubles performance
on 82599. tested on 82598 as well.
|
|
no objections from claudio and deraadt; tested on 82598 and 82599
|
|
|
|
would prepend another vlan tag 0 to all frames containing 802.1Q
tags rendering vlans unusable.
ok jsg, deraadt
|
|
in behavior since we don't do split headers; ok dlg, kettenis
|
|
in case we fail to do it at the spot. prevents rx ring
lockups under high load. ok dlg
|
|
lost during update. Originally from claudio, rev1.46.
ok claudio
|
|
Fix the IP ckecksum offloading logic that disables and breaks offloading
if the packet is neither TCP nor UDP because of an erroneous "default" case.
No functional change in the default build because IP checksum offloading
is currently disabled in ix(4).
Tested on 82598 and 82599 (though checksums are still disabled by default).
ok claudio
|
|
Removing a leftover M from my tree makes also my machine happy.
|
|
the rx ring, schedule a timeout to keep trying until it gets some.
a timeout is used here cos the chip doesnt have a way of reporting
if its out of descriptors or when there's a ring overflow. we have
to manage that ourselves in software.
mikeb reported this issue on an ipsec gateway. ipsec would consume
all the mbufs while they were stuck in crypto waiting for the cpu
to catch up, by which time it was too late to give more to the
hardware. without any rx descriptors the chip would never interrupt
and we'd never try to fill the ring again.
the fix was tested by and is ok mikeb@
|
|
in FreeBSD. This seems to fix a lot of problems on 82599 based cards
including the VLAN problems and the corrupted receives.
Putting this in now to work on it in tree since a few additional things
need to be merged. Tested by myself, deraadt@ and jsg@ on both 98er and
99er cards.
OK jsg@, deraadt@
|
|
Found by LLVM/Clang Static Analyzer.
ok henning@ krw@ claudio@
|
|
than looping over them until it runs out of work to do.
in my testing i have found that under what i consider high pps
(>160kpps) ix would loop 4 or 5 times in the interrupt handler,
where each loop does a bus_space_read and the mclgeti loop (ie, rx
dequeue followed by rx ring fill).
looping in the isr is bad for several reasons:
firstly, the chip does interrupt mitigation so you have a
decent/predictable amount of work to do in the isr. your first loop
will do that chunk of work (ie, it pulls off 50ish packets), and
then the successive looping aggressively pull one or two packets
off the rx ring. these extra loops work against the benefit that
interrupt mitigation provides.
bus space reads are slow. we should avoid doing them where possible
(but we should always do them when necessary).
doing the loop 5 times per isr works against the mclgeti semantics.
it knows a nic is busy and therefore needs more rx descriptors by
watching to see when the nic uses all of its descriptors between
interrupts. if we're aggressively pulling packets off by looping
in the isr then we're skewing this check.
ok deraadt@ claudio@
testing by phessler@ bluhm@ and me in production
|
|
ok matthew@ tedu@, also eyeballed by at least krw@ oga@ kettenis@ jsg@
|
|
ok claudio krw
|
|
ok claudio@
|
|
to the maximum value to reduce the number of low latency interrupts
hitting the card when the ring is getting full.
Tested at least by deraadt@ on 99 and myself on 99 and 98 ix(4).
OK mikeb@
|
|
|
|
ok jsg
|
|
case. Adapted from Intel code in FreeBSD and tested on 82598/82599.
|
|
Due to the messy context setup code this was breaking ipv6 forwarding
when ipv4 offloading was enabled. All checksum offloading remains
disabled for now.
Debugged with and ok claudio@
|
|
unit, it just wasn't called.
Problem is present in the FreeBSD driver (but not the Linux one).
|