| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
- s/Recevied/Received/
(cherry picked from commit defe77554d134964d7c197a2f3ca552778e8b41a)
|
| |
|
|
|
|
|
|
|
|
|
| |
The justification is the same as in commit
fb876eef219e ("e1000: Fix some issues in em_newitr()").
Reviewed by: kbowling
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D50548
(cherry picked from commit ef062029ceffacb6bde3a5639a2bd8c4d59ca1df)
|
| |
|
|
|
|
|
|
|
|
|
| |
The justification is the same as in commit
a5b5220b1807 ("e1000: Initialize helper variables in em_newitr()").
Reviewed by: kbowling
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D50547
(cherry picked from commit d6a9f49185797c6b67e517a3d83ef63436c8d4f3)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Depend on the PCI bus driver clearing PME# after resume to remove the
need for clearing PME# from DEVICE_RESUME methods.
Use pci_has_pm and pci_enable_pme.
Reviewed by: Krzysztof Galazka <krzysztof.galazka@intel.com>
Differential Revision: https://reviews.freebsd.org/D49251
(cherry picked from commit ddaf6524682b3ab9e50f7575db319814dbbd053a)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The device IDs for these were in the driver's list of PCI ids to attach
to, but igc_set_mac_type() had never been setup to set the correct mac
type for these devices. Fix this by adding these IDs to the switch block
in order for them to be recognized by the driver instead of returning an
error.
This fixes the igc(4) attach for the I226-K LOM on the ASRock Z790
PG-ITX/TB4 motherboard, allowing it to be recognized and used.
Signed-off-by: Eric Joyner <erj@FreeBSD.org>
Reviewed by: kbowling@
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D49147
(cherry picked from commit 7ee310c80ea7b336972f53cc48b8c3d03029941e)
|
| |
|
|
|
|
|
| |
We don't use legacy receive descriptors and masking out the vlan ID
isn't necessary since the tag is in the standard format, so remove it.
(cherry picked from commit 124b7722aad7d4cf12d96c030659aef78175aa9c)
|
| |
|
|
| |
(cherry picked from commit 850f78d5a191d0058fcd20beb8b1309b795ecdbd)
|
| |
|
|
|
|
|
|
| |
Similar to 548d8a131d536d5f in e1000, disable this by default.
Sponsored by: BBOX.io
(cherry picked from commit e80419da6cef3fb6ea1902bd9a250ca21072a42c)
|
| |
|
|
|
|
|
|
| |
Fix up indentation and reflow long lines.
Sponsored by: BBOX.io
(cherry picked from commit c7fb7b5d9fcd1fc67794228820aa54df388d47b4)
|
| |
|
|
|
|
| |
Sponsored by: BBOX.io
(cherry picked from commit 9efc7325f1acb85ac8772096cc2b54fd0c6a60ff)
|
| |
|
|
|
|
| |
Sponsored by: BBOX.io
(cherry picked from commit d1bb1a501118851b02a182afdd9dd1413e9f4ce0)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add tso_tcp_flags_mask_first_segment, tso_tcp_flags_mask_middle_segment,
and tso_tcp_flags_mask_last_segment sysctl-variables to control the
handling of TCP flags during TSO.
This allows to change the masks appropriate for classical ECN and to
configure appropriate masks for accurate ECN.
Sponsored by: Netflix
(cherry picked from commit ab540d44ba3201ff8313b90ba0096004603b2e34)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As explained in PR 277038, iflib calls IFDI_DETACH() and then
IFDI_QUEUES_FREE(). With igc, the latter writes to a register after it
has been unmapped.
igc_if_detach() already calls igc_release_hw_control(), and looking at
callers of igc_if_queues_free(), that appears to be sufficient. So,
just remove the igc_release_hw_control() call.
PR: 277038
Reported by: Mike Belanger <mibelanger@qnx.com>
Reviewed by: kbowling
Tested by: kbowling
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D47293
(cherry picked from commit 35d05a14ed7e9935be1ed0fe965b91aaaa4c92ef)
|
| |
|
|
|
|
|
|
|
| |
Drop variable names of function prototypes since the file is mixed in
listing them or not and they fall out of sync.
Sponsored by: BBOX.io
(cherry picked from commit 7763b194d8de6fe8034f754064449a7510ca16b9)
|
| |
|
|
|
|
|
|
|
| |
Drop variable names of function prototypes since the file is mixed in
listing them or not and they fall out of sync.
Sponsored by: BBOX.io
(cherry picked from commit 1b0e41ddffbf0ac84c88019df84dfd50ce9f7788)
|
| |
|
|
|
|
|
|
|
|
| |
Rename the 'struct adapter' to 'struct igc_softc' to avoid type
ambiguity in things like kgdb and make sharing code with e1000 and
ixgbe easier.
Sponsored by: BBOX.io
(cherry picked from commit 542f5d56317e94676cf19cb9d66207bf9a6b6758)
|
| |
|
|
|
|
| |
Sponsored by: BBOX.io
(cherry picked from commit 09526a771afc411e641a3d04c905824fe8afc627)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This feature can increase efficiency at the expense of latency
It does not work well with the default interrupt delay, but expose
the otherwise unconnected code in the driver in case people want to
experiment.
See
https://www.intel.com/content/dam/support/us/en/documents/network/adapter/pro100/sb/466827_intel_r__dma_coalescing_white_paper_v003.pdf
Sponsored by: BBOX.io
(cherry picked from commit 68b1f5dc59368ce5175e3300bf95476ea5a560bc)
|
| |
|
|
|
|
|
|
|
|
| |
This should have been commited with bc9402a, need to account for
link_speed of 2500 as well on igc.
Sponsored by: Rubicon Communications, LLC ("Netgate")
Sponsored by: BBOX.io
(cherry picked from commit 669d26e5764f612cc60a4a61cdcf22ae46ddd360)
|
| |
|
|
| |
(cherry picked from commit 516d92304a7fa9b869c934436aa3e1c5202f03c9)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
igc is derived from igb and has never had an AIM implementation. The
same algorithm from e1000 is appropriate here.
Upon more detailed study of the Linux driver which has a newer AIM
implementation, it finally became clear to me this is actually a
holdoff timer and not an interrupt limit as it is conventionally
(statically) programmed and displayed as an interrupt rate. The data
sheets also make this somewhat clear.
Thus, AIM accomplishes two beneficial things for a wide variety of
workloads[1]:
1. At low throughput/packet rates, it will significantly lower latency
(by counter-intuitively "increasing" the interrupt rate.. better
thought of as decreasing the holdoff timer because you will modulate
down before coming anywhere near these interrupt rates).
2. At bulk data rates, it is tuned to achieve a lower interrupt rate
(by increasing the holdoff timer) than the current static 8000/s. This
decreases processing overhead and yields more headroom for other work
such as packet filters or userland.
For a single NIC this might be worth a few sys% on common CPUs, but may
be meaningful when multiplied such as if_lagg, if_bridge and forwarding
setups.
The AIM algorithm was re-introduced from the older igb or out of tree
driver, and then modernized with permission to use Intel code from other
drivers.
[1]: http://iommu.com/datasheets/ethernet/controllers-nics/intel/e1000/gbe-controllers-interrupt-moderation-appl-note.pdf
Relnotes: yes
Sponsored by: Rubicon Communications, LLC ("Netgate")
Sponsored by: BBOX.io
Differential Revision: https://reviews.freebsd.org/D47053
(cherry picked from commit bc9402abdd11630ced33cbecb79b0d72f203f08a)
|
| |
|
|
|
|
|
|
|
|
| |
This chipset suffered an (un)usual number of bugs and iterations. Let's
add our NVM/firmware code from e1000 and the similar igc_nvm function
from DPDK to keep track of issues.
Sponsored by: BBOX.io
(cherry picked from commit 33ed9bdca307bedb3d66a50ed7d4d7b4bf4acf39)
|
| |
|
|
|
|
|
|
|
| |
igc, derived from igb, does not use these registers. All interrupt
timing is governed by EITR or LLI and driven by write-back.
Sponsored by: BBOX.io
(cherry picked from commit a40ecb6f740530fb7e6a95e702113aa3fe24d975)
|
| |
|
|
|
|
|
|
|
|
|
| |
The global hw.igb.rx_process_limit knob never was adhered to by the
in-tree version of this driver but similar functionality is available
via the device-specific dev.igb.N.iflib.rx_budget.
While at it, remove the - besides initialization of tx_process_limit -
unused {r,t}x_process_limit members.
(cherry picked from commit f221d35be7a5749e2a1246c81adc9c03c1dc545c)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In rS360398, a new iflib device method was added to opt out of VLAN
events needing an interface reset.
I am switching the default to not requiring a restart for:
* VLAN events
* unknown events
After fixing various bugs, I do not think this would be a common need
of hardware and it is undesirable from the user's perspective causing
link flaps and much slower VLAN configuration. Currently, there are no
other restart events besides VLAN events, and setting the
ifdi_needs_restart default to false will alleviate the need to churn
every driver if an odd event is added in the future for specific
hardware.
markj points out this could cause churn in the other direction; I will
solve that problem with an event registration system as he mentions in
the review should we need it in the future.
These drivers will opt into restart and need further inspection or work:
* ixv (needs code audit, 61a8231 fixed principal issue; re-init probably
not necessary)
* axgbe (needs code audit; re-init probably not necessary)
* iavf - (needs code audit; interaction with Malicious Driver Detection
mentioned in rS360398)
* mgb - no VLAN functions are currently implemented. Left a comment.
MFC after: 2 weeks
Sponsored by: BBOX.io
Differential Revision: https://reviews.freebsd.org/D41558
|
| |
|
|
|
|
|
|
| |
Since d49e83eac3baf16a22b1c5d42e8438b68b17e6f9, iflib(9) is ready
for this change.
While at it, make isc_driver_version strings (static) const where
not apparently un-const on purpose, too.
This reduces the size of the amd64 GENERIC by about 10 KiB.
|
| |
|
|
| |
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
| |
|
|
| |
Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
|
| |
|
|
|
|
| |
Approved by: grehan
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D31493
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The default per-queue packet rate of 8000 will cause packet loss when
forwarding at 2.5G with a single stream, as is common when using e.g.
iperf3 to test a platform.
Bump this to 20000 (the "low latency" value in the Linux driver) which
avoids packet loss for this type of test.
Future work will use adaptive interrupt rate in a similar fashion
to the ixgbe driver.
Sponsored by: Rubicon Communications, LLC ("Netgate")
Reviewed by: erj, kp
MFC after: 3 weeks
Differential Revision: https://reviews.freebsd.org/D40904
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mechanically convert the following drivers, with trivial changes:
* ipw(4)
* igc(4)
* enetc(4)
* malo(4)
* nfe(4)
* bxe(4)
* awg(4)
* otus(4)
* rtwn(4)
* bnxt(4)
* ath(4)
Sponsored by: Juniper Networks, Inc.
|
| |
|
|
|
|
|
|
|
|
|
| |
Adapt 2796f7cab10785ef40efbba97ef67ab319c96e9c to igc(4)
* Don't reset the entire adapter for vlan changes, fix up the problems
* Remove the VFTA, this hardware doesn't seem to implement it
Approved by: grehan
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D31979
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I225 devices have only one PHY vendor. There is unnecessary to check
_I_PHY_ID during the link establishment and auto-negotiation process,
the checking also caused devices like i225-IT failed. This patch is to
remove the mentioned unnecessary checking.
Cc: stable@dpdk.org
Signed-off-by: Mah Yock Gen <yock.gen.mah@intel.com>
Signed-off-by: Taripin Samuel <samuel.taripin@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Approved by: grehan
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D36923
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The igc driver always sets the promiscious mode during initialization,
ignoring what is set in ifp.
Fix this by checking the interface flags and setting mode appropriately.
Reviewed by: grehan
Obtained from: Semihalf
Sponsored by: Stormshield
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D36591
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During media selection through ifconfig one might not specify
the duplex setting through the mediaopt flag.
In that case the igc driver would default to full-duplex.
The problem with this approach is that e1000(em/igb) driver
defaults to half-duplex.
Because of that if one connects both NICs and sets media to
e.g. 100baseTX on both of them no link will be found.
Fix that by matching igc behaviour with what e1000 does.
Reviewed by: grehan
Approved by: mw(mentor)
Obtained from: Semihalf
Sponsored by: Stormshield
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D35673
|
| |
|
|
|
|
|
|
|
|
| |
Apply 6987c47569b377f4b6eba9966afdedfb1b39fca8 to igc. This is not
expected to have any benefit on current parts with current observed PBA
sizes but will avoid surprises if they are increased in future chips.
Approved by: grehan
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D35217
|
| |
|
|
|
|
| |
Reported by: jenkins
Fixes: bf0aa72f1f59 igc: Update PCI IDs
MFC after: 3 days
|
| |
|
|
|
|
|
|
| |
I226-K PCI ID got clarified by intel. Add a new I226 ID while here.
Approved by: grehan
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D35218
|
| | |
|
| |
|
|
|
|
|
|
| |
something similar a while back, and there are devices in the wild
that otherwise won't attach. This patch is temporary until the
PHY code is further cleared up.
Obtained from: grehan
|
| |
|
|
|
|
|
|
|
|
|
| |
Match igb(4) as in f7926a6d0c10. From Vincenzo, this check is redundant
to setup providing us an IGC_RXD_STAT_VP bit and would make for an
unexpected condition if IFCAP_VLAN_HWTAGGING were not set but the tag
was stripped, which would be passed up the stack breaking isolation.
PR: 260068
Approved by: vmaffione
MFC after: 1 month
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The logic that sets iri_vtag and M_VLANTAG does not handle the
case where the 802.11q VLAN tag is 0. Fix this issue across
the iflib drivers. While there, also improve and align the
VLAN tag check extraction, by moving it outside the RX descriptor
loop, eliminating a local variable and additional checks.
PR: 260068
Reviewed by: kbowling, gallatin
Reported by: erj
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D33156
|
| |
|
|
|
| |
Signed-off-by: John Bentley <johnbentley.public@gmail.com>
Pull Request: https://github.com/freebsd/freebsd-src/pull/559
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The previously used software reset routine wasn't sufficient
to reset the PHY if the bootloader hadn't left the device in
an initialized state. This was seen with the onboard igc port
on an 11th-gen Intel NUC.
The software reset isn't used in the Linux driver so all related
code has been removed.
Tested on: Netgate 6100 onboard ports, a discrete PCIe I225-LM card,
and an 11th-gen Intel NUC.
Reported by: woodsb02
Tested by: woodsb02 (NUC)
MFC after: 3 days
Sponsored by: Rubicon Communications, LLC ("Netgate")
Reviewed by: kbowling
Differential Revision: https://reviews.freebsd.org/D32772
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix clearing of bits in RCTL for the non-bpf/non-allmulti case.
Update RCTL after modifying the multicast filter registers as per
the Linux driver.
This fixes LACP on igc interfaces, where incoming LACP multicasti
control packets were being dropped.
Reviewed by: kbowling
Obtained from: Rubicon Communications, LLC ("Netgate")
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D32574
|
| |
|
|
|
|
| |
Reviewed by: grehan
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D31227
|
|
|
This controller supports 2.5G/1G/100MB/10MB speeds, and allows
tx/rx checksum offload, TSO, LRO, and multi-queue operation.
The driver was derived from code contributed by Intel, and modified
by Netgate to fit into the iflib framework.
Thanks to Mike Karels for testing and feedback on the driver.
Reviewed by: bcr (manpages), kbowling, scottl, erj
MFC after: 1 month
Relnotes: yes
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D30668
|