#
354209 |
|
30-Oct-2019 |
marius |
MFC: r353778 (partial)
In em_handle_link(), only re-arm the link state change interrupt for 82574 and also only if such a device uses MSI-X, i. e. takes advantage of autoclearing. In case of INTx and MSI re-arming isn't appropriate here and setting EM_MSIX_LINK isn't either.
|
#
342790 |
|
05-Jan-2019 |
marius |
MFC: r336610 (partial), r339207, r339267
- Or in the DMA coalescing Rx threshold so the other bits set in E1000_DMACR remain intact as intended in igb_init_dmac(). [1]
- Fix igb corrupting checksums with BPF and VLAN In stable/11, this merely syncs the code with head as the problem was introduced with r311849 in the latter and then fixed by r339207 with a different approach than the code used pre-r311849 and in stable/11.
- Use mbuf defines to construct csum offload masks rather than literals
MF11: r340148
Don't use 9k jumbo clusters
Reported by: Coverity CID: 1304929 [1]
|
#
334251 |
|
26-May-2018 |
sbruno |
Activate Wake On Lan features for Ice Lake and Cannon Lake devices.
This is a direct commit to stable/10 as its not needed in -current.
PR: 228302 Submitted by: Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>
|
#
333214 |
|
03-May-2018 |
marius |
MFC: r327312, r327842, r327865
- Add initial support for Intel Ice Lake and Cannon Lake Ethernet MACs. - Add workaround for Intel Sky Lake and Kabby Lake Ethernet MAC erratum 1.5.4.5. - Fix uses of 1 << 31.
|
#
323293 |
|
08-Sep-2017 |
marius |
- Ever since the workaround for the silicon bug of TSO4 causing MAC hangs was committed in r295133 (MFCed to stable/10 in r295287), CSUM_TSO gets always disabled by em(4) on the first invocation of em_init_locked() as at that point no link is established, yet. In turn, this causes CSUM_TSO also to be off when em(4) is used as a parent device for vlan(4), i. e. besides IFCAP_TSO4, IFCAP_VLAN_HWTSO effectively doesn't work either.
In head an attempt to fix this was made with r308345, but that revision had several problems on its own. One of which was that r308345 caused IFCAP_TSO4 to also be cleared from both the interface capability and capability enable bits. Thus, once a link switched from gigabit to a lower speed, TSO no longer could be enabled, even not via ifconfig(8). So this change moves the aforementioned WAR to em_update_link_status() like r308345 did, but only alters the hardware assist bits accordingly, leaving IFCAP_TSO4 flags alone.
Still, this isn't the only problem r308345 had. Another one is that there just is no way to atomically flush TSO-using descriptors already queued at the point in time a link speed switch to below GbE occurs. Thus, such in-flight descriptors still may hang the MAC. Moreover, at least currently there also is no way of triggering a reconfiguration of vlan(4) when the state of IFCAP_VLAN_HWTSO support changes at runtime, causing vlan(4) to continue employing TSO. Last but not least, testing shows that - despite all the WARs for TSO-related silicon bugs in em(4) - at least 82579 still may hang at gigabit speed with IFCAP_TSO4 enabled. Therefore, this change further removes IFCAP_TSO4 and IFCAP_VLAN_HWTSO from interface capability enable bits as set by em(4). While at it, the use of CSUM_TCP is replaced with CSUM_IP_TSO as em(4) only implements support for IFCAP_TSO4 but not IFCAP_TSO6 (although in principle available with a subset of the supported MACs).
At the bottom line, this change allows IFCAP_TSO4 and IFCAP_VLAN_HWTSO to be used again with em(4), but these hardware offloading capabilities now need to be explicitly enabled via ifconfig(8). Beware that it's only considered safe to do so (and also only may work) in environments where the link speed is not to be expected to change from GbE. Moreover, em(4) appears to still be missing some more TSO workarounds for at least some models, specifically the 82579 (I could not find an errata sheet and "specification update" respectively for these latter, though, and the generic ICH8 one doesn't list any TSO related bugs).
- Let igb_tso_setup() handle EtherType protocols that are unsupported or for which support hasn't been compiled in gracefully instead of calling panic(9).
- Make em_allocate_{legacy,msix}() and lem_allocate_irq() match their prototypes WRT static.
This is a direct commit to stable/10 as corresponding code is no longer present in head.
Approved by: re (gjb, kib)
|
#
323080 |
|
01-Sep-2017 |
marius |
MFC: r308643, r312427, r312641, r322986
- Update WOL support for newer em(4) devices. [1] - Add support for Kaby Lake generation i219 (4) and i219 (5) devices. - Enable WOL features also for the igb(4) class of devices. [1] - Don't set any WOL enabling hardware bits if WOL isn't requested according to the enabled interface capability bits.
PR: 208343 [1] Submitted by: Kaho Tashikazu <kaho@elam.kais.kyoto-u.ac.jp> [1] Approved by: re (kib)
|
#
320117 |
|
19-Jun-2017 |
sbruno |
Direct commit to stable/10 to correctly setting the EIAC and IMS registers to the same values when processing interrupts.
This resolves PR https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211219
PR: 211219 Submitted by: Franco Fitchner <franco@opnsense.org>
|
#
316588 |
|
06-Apr-2017 |
sbruno |
Direct commit of fixes to stable/10, resolving PCI passthrough and initialization issues when trying to passthrough a i340 (igb) to VMware.
While here, cleanup some bits of em(4) to DTRT as well.
PR: 218113 Submitted by: Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>
|
#
314103 |
|
22-Feb-2017 |
marius |
MFC: r311979
Reset the EIAC register to include the LINK status bit and restore link up/down notifications.
|
#
304338 |
|
18-Aug-2016 |
sbruno |
MFC r304149
e1000: Add support for Kaby Lake IDs
Fixup some errors when transitioning to/from low power states.
|
#
303665 |
|
02-Aug-2016 |
sbruno |
MFC r303638
Unbreak NETMAP usage with em(4) broken in r293331.
|
#
303116 |
|
20-Jul-2016 |
sbruno |
Fix em(4) build after r303107
Reported by: Jason Wolf <j@nitrology.com>
|
#
303107 |
|
20-Jul-2016 |
sbruno |
MFC - r302384 to 10-STABLE Do not initialize the adapter on MTU change when adapter status is down. This fixes long-standing problems when changing settings of the adapter.
Discussed in: https://lists.freebsd.org/pipermail/freebsd-net/2016-June/045509.html
Differential Revision: https://reviews.freebsd.org/D7254
|
#
299192 |
|
06-May-2016 |
sbruno |
MFC r298224
Correct possible underflow conditions when checking for available space in the tx h/w ring buffer.
Sponsored by: Limelight Networks
|
#
296073 |
|
25-Feb-2016 |
marius |
MFC: r295906
Fix and clean up usage of DMA and TSO segments: - At Intel it is believed that most of their products support "only" 40 DMA segments so lower {EM,IGB}_MAX_SCATTER accordingly. Actually, 40 is more than plenty to handle full size TSO packets so it doesn't make sense to further distinguish between MAC variants that really can do 64 DMA segments. Moreover, capping at 40 DMA segments limits the stack usage of {em,igb}_xmit() that - given the rare use of more than these - previously hardly was justifiable, while still being sufficient to avoid the problems seen with em(4) and EM_MAX_SCATTER set to 32. - In igb(4), pass the actually supported TSO parameters up the stack. Previously, the defaults set in if_attach_internal() were applied, i. e. a maximum of 35 TSO segments, which made supporting more than these in the driver pointless. However, this might explain why no problems were seen with IGB_MAX_SCATTER at 64. - In em(4), take the 5 m_pullup(9) invocations performed by em_xmit() in the TSO case into account when reporting TSO parameters upwards. In the worst case, each of these calls will add another mbuf and, thus, the requirement for an additional DMA segment. So for best performance, it doesn't make sense to advertize a maximum of TSO segments that typically will require defragmentation in em_xmit(). Again, this leaves enough room to handle full size TSO packets. - Drop TSO macros from if_lem.h given that corresponding MACS don't support TSO in the first place.
Reviewed by: erj, sbruno, jeffrey.e.pieper_intel.com Approved by: re (gjb)
|
#
296055 |
|
25-Feb-2016 |
erj |
MFC r295323: Update em(4) to 7.6.1; update igb(4) to 2.5.3.
Major changes:
- Add i219/i219(2) hardware support. (Found on Skylake generation and newer chipsets.) - Further to the last Skylake support diff, this one also includes support for the Lewisburg chipset (i219(3)).
- Add a workaround to an igb hardware errata. All 1G server products need to have IPv6 extension header parsing turned off. This should be listed in the specification updates for current 1G server products, e.g. for i350 it's errata #37 in this document: http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ethernet-controller-i350-spec-update.pdf
- Avoton (i354) PHY errata workaround added
And a bunch of minor fixes, as well as #defines for things that the current em(4)/igb(4) drivers don't implement.
MFC r287465:
igb(4): Update and fix HW errata - HW errata workaround for IPv6 offload w/ extension headers - Edited start of if_igb.c (Device IDs / #includes) to match ixgbe/ixl
Approved by: re (gjb) Sponsored by: Intel Corporation
|
#
295287 |
|
04-Feb-2016 |
marius |
MFC: r295133
As it turns out, one of the more or less recent changes to em(4) causes watchdog timeouts when using TSO4 at link speeds below Gigabit, at least with 82573E. So disable the assist automatically when at lower speeds.
Submitted by: jfv Approved by: re (kib), erj Obtained from: D3162
|
#
294958 |
|
27-Jan-2016 |
marius |
Sync the e1000 drivers with what's in head as of r294327, modulo parts that don't apply to stable/10 (driver API, if_inc_counter(), RSS changes etc.) and modulo r287465 (which reportedly breaks igb(4)), i. e. assorted fixes and improvements only:
o MFC r267385 (partial): - Don't compare bus_dma map pointers for static DMA allocations against NULL to determine if bus_dmamap_unload() or bus_dmamem_free() should be called. Instead, check the associated bus and virtual addresses. - Don't clear static DMA maps to NULL. o MFC r284933: Delete the refernce to VLAN handling being disabled by default. This is no longer the case. [1] o MFC r285639: Add an adapter CORE lock in the DDB hook em_dump_queue to avoid WITNESS panic in em_init_locked() while debugging. o MFC r285879: - Remove unused txd_saved. - Intialize txd_upper, txd_lower and txd_used at declaration. o MFC r286162: Free mbufs when busdma loading fails. o MFC r286829: Add capability to disable CRC stripping as it breaks IPMI/BMC capabilities on certain adatpers. [2] o MFC r286831: [3] - Increase EM_MAX_SCATTER to 64 such that the size of em_xmit():: segs[EM_MAX_SCATTER] doesn't get overrun by things like NFS that can and do shove more than 32 segs when being used with em(4) and TSO4. - Update tso handling code in em_xmit() with update from jhb@ - Set if_hw_tsomax, if_hw_tsomaxsegcount and if_hw_tsomaxsegsize to appropriate values. - Define a TSO workaround "magic" number of 4 that is used to avoid an alignment issue in hardware. - Change a couple of integer values that were used as booleans to actual bool types. - Ensure that em_enable_intr() enables the appropriate mask of interrupts and not just a hardcoded define of values. o MFC r286832: e1000/if_lem.c bump to 1.1.0 o MFC r286833: Bump all copywrite dates to 2015. o MFC r287112: Style/whitespace cleanup in shared/common code. o MFC r293331: - Switch em(4) to the extended RX descriptor format. - Split rxbuffer and txbuffer apart to support the new RX descriptor format structures. Move rxbuffer manipulation to em_setup_rxdesc() to unify the new behavior changes. - Add a RSSKEYLEN macro for help in generating the RSSKEY data structures in the card. - Change em_receive_checksum() to process the new rxdescriptor format status bit. o MFC r293332: Disable the reuse of checksum offload context descriptors in the case of multiple queues in em(4). Document errata in the code. o MFC r293854: Given that em(4), lem(4) and igb(4) hardware doesn't require the alignment guarantees provided by m_defrag(9), use m_collapse(9) instead for performance reasons. While at it, sanitize the statistics softc members, i. e. retire unused ones and add SYSCTL nodes missing for actually used ones.
PR: 118693 [1], 161277 [2], 195078 [3], 199174 [3], 200221 [3]
|
#
284522 |
|
17-Jun-2015 |
sbruno |
MFC r284179, r283959
Implement multiqueue (max 2 tx/rx queues) for the 82574L chipset.
Change default tuning parameters to handle this new configuration if EM_MULTIQUEUE is set in the kernel configuration. Off by default.
See r283959 changelog for the scope of these changes.
Relnotes: Yes Sponsored by: Limelight Networks
|
#
284444 |
|
16-Jun-2015 |
sbruno |
MFC r283923
Simplify hang detection by stealing the techniques used in ixl(4) and applying them to em(4).
Rely on iterations through the local timer, and the tx queue state to determine if an actual hang has occurred. Any time a descriptor is used (packet sent), the tx queue is flagged as busy. Then when txeof runs, it either clears the flag when all is clean, or resets it to 1 if ANY are cleaned, if nothing is cleaned it increments the flag.
Local timer simply checks to see if busy ever reaches MAX (10, which is compile time configurable), and then sets it as HUNG, at that point there is one more timer cycle in which to have any cleans, if not a watchdog reset will occur.
|
#
283504 |
|
24-May-2015 |
sbruno |
MFC r283290
Bump rx_overruns when indicated by the ICR mask.
PR: 199716 Sponsored by: Limelight Networks
|
#
273736 |
|
27-Oct-2014 |
hselasky |
MFC r263710, r273377, r273378, r273423 and r273455:
- De-vnet hash sizes and hash masks. - Fix multiple issues related to arguments passed to SYSCTL macros.
Sponsored by: Mellanox Technologies
|
#
270252 |
|
20-Aug-2014 |
luigi |
MFC 270063: update of netmap code (vtnet and cxgbe not merged yet because we need some other mfc first)
|
#
269258 |
|
29-Jul-2014 |
rmacklem |
MFC: r268726 Move the "retry:" label so that the calls to m_pullup() are not done after the call to m_defrag(). This fixes a problem where m_pullup() would prepend an mbuf to the list created by m_defrag() making the chain greater than 32 again.
|
#
269196 |
|
28-Jul-2014 |
jfv |
MFC of R267935: Sync the E1000 shared code to Intel internal, and more importantly add new I218 adapter support to em.
|
#
262151 |
|
18-Feb-2014 |
luigi |
MFH: sync the netmap code with the one in HEAD (enhanced VALE switch, netmap pipes, emulated netmap mode). See details in the log for svn 261909.
|
#
259508 |
|
17-Dec-2013 |
kib |
MFC r257541: Fix several issues with the busdma(9) KPI use in the e1000 drivers.
|
#
284522 |
|
17-Jun-2015 |
sbruno |
MFC r284179, r283959
Implement multiqueue (max 2 tx/rx queues) for the 82574L chipset.
Change default tuning parameters to handle this new configuration if EM_MULTIQUEUE is set in the kernel configuration. Off by default.
See r283959 changelog for the scope of these changes.
Relnotes: Yes Sponsored by: Limelight Networks
|
#
284444 |
|
16-Jun-2015 |
sbruno |
MFC r283923
Simplify hang detection by stealing the techniques used in ixl(4) and applying them to em(4).
Rely on iterations through the local timer, and the tx queue state to determine if an actual hang has occurred. Any time a descriptor is used (packet sent), the tx queue is flagged as busy. Then when txeof runs, it either clears the flag when all is clean, or resets it to 1 if ANY are cleaned, if nothing is cleaned it increments the flag.
Local timer simply checks to see if busy ever reaches MAX (10, which is compile time configurable), and then sets it as HUNG, at that point there is one more timer cycle in which to have any cleans, if not a watchdog reset will occur.
|
#
283504 |
|
24-May-2015 |
sbruno |
MFC r283290
Bump rx_overruns when indicated by the ICR mask.
PR: 199716 Sponsored by: Limelight Networks
|
#
273736 |
|
27-Oct-2014 |
hselasky |
MFC r263710, r273377, r273378, r273423 and r273455:
- De-vnet hash sizes and hash masks. - Fix multiple issues related to arguments passed to SYSCTL macros.
Sponsored by: Mellanox Technologies
|
#
270252 |
|
20-Aug-2014 |
luigi |
MFC 270063: update of netmap code (vtnet and cxgbe not merged yet because we need some other mfc first)
|
#
269258 |
|
29-Jul-2014 |
rmacklem |
MFC: r268726 Move the "retry:" label so that the calls to m_pullup() are not done after the call to m_defrag(). This fixes a problem where m_pullup() would prepend an mbuf to the list created by m_defrag() making the chain greater than 32 again.
|
#
269196 |
|
28-Jul-2014 |
jfv |
MFC of R267935: Sync the E1000 shared code to Intel internal, and more importantly add new I218 adapter support to em.
|
#
262151 |
|
18-Feb-2014 |
luigi |
MFH: sync the netmap code with the one in HEAD (enhanced VALE switch, netmap pipes, emulated netmap mode). See details in the log for svn 261909.
|
#
259508 |
|
17-Dec-2013 |
kib |
MFC r257541: Fix several issues with the busdma(9) KPI use in the e1000 drivers.
|