#
267654 |
|
19-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
252899 |
|
06-Jul-2013 |
jfv |
MFC e1000 driver revisions: 248906,248908,249074,249339,249509 250108,250109,250168,250413,250414
|
#
247478 |
|
28-Feb-2013 |
jhb |
MFC 240968: Merge similar fixes from 223198 from igb to ixgbe: - Use a dedicated task to handle deferred transmits from the if_transmit method instead of reusing the existing per-queue interrupt task. Reusing the per-queue interrupt task could result in both an interrupt thread and the taskqueue thread trying to handle received packets on a single queue resulting in out-of-order packet processing and lock contention. - Don't define ixgbe_start() at all when if_transmit is used.
|
#
235527 |
|
16-May-2012 |
jfv |
MFC of the e1000 drivers: revisions include 227309,228281,228386,228387,228393,228405, 228415,228788,228803,229606,229767,229939, 230023,230024,230742,231796,232238,233708, 234154,234665,235256
|
#
225736 |
|
22-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
#
223676 |
|
29-Jun-2011 |
jhb |
- Add read-only sysctls for all of the tunables supported by the igb and em drivers. - Make the per-instance 'enable_aim' sysctl truly per-instance by having it change a per-instance variable (which is used to control AIM) rather than having all of the per-instance sysctls operate on a single global variable.
Reviewed by: jfv (earlier version) MFC after: 1 week
|
#
223350 |
|
20-Jun-2011 |
jfv |
Eliminate some global tuneables in favor of adapter-specific, particular flow control and dma coalesce. Also improve the sysctl operation on those too.
Add IPv6 detection in the ioctl code, this was done for ixgbe first, carrying that over.
Add resource ability to disable particular adapter.
Add HW TSO capability so vlans can make use of TSO
|
#
223198 |
|
17-Jun-2011 |
jhb |
- Use a dedicated task to handle deferred transmits from the if_transmit method instead of reusing the existing per-queue interrupt task. Reusing the per-queue interrupt task could result in both an interrupt thread and the taskqueue thread trying to handle received packets on a single queue resulting in out-of-order packet processing. - Don't define igb_start() at all on 8.0 and where if_transmit is used. Replace last remaining call to igb_start() with a loop to kick off transmit on each queue instead. - Call ether_ifdetach() earlier in igb_detach(). - Drain tasks and free taskqueues during igb_detach().
Reviewed by: jfv MFC after: 1 week
|
#
221187 |
|
28-Apr-2011 |
jfv |
Small change to make backporting to stable/7, thanks to Arnaud Lacombe for suggesting it.
|
#
220375 |
|
05-Apr-2011 |
jfv |
Important update for the igb driver: - Add the change made in em to the actual unrefreshed number of descriptors is used as a basis in rxeof on the way out to determine if more refresh is needed. NOTE: there is a difference in the ring setup in igb, this is not accidental, it is necessitated by hardware behavior, when you reset the newer adapters it will not let you write RDH, it ALWAYS sets it to 0. Thus the way em does it is not possible. - Change the sysctl handling of flow control, it will now make the change dynamically when the variable setting changes rather than requiring a reset. - Change the eee sysctl naming, validation found the old unintuitive :) - Last but not least, some important performance tweaks in the TX path, I found that UDP behavior could be drastically hindered or improved with just small changes in the start loop. What I have here is what testing has shown to be the best overall. Its interesting to note that changing the clean threshold to start at a full half of the ring, made a BIG difference in performance. I hope that this will prove to be advantageous for most workloads.
MFC in a week.
|
#
219753 |
|
18-Mar-2011 |
jfv |
This delta updates the em driver to version 7.2.2 which has been undergoing test for some weeks. This improves the RX mbuf handling to avoid system hang due to depletion. Thanks to all those who have been testing the code, and to Beezar Liu for the design changes.
Next the igb driver is updated for similar RX changes, but also to add new features support for our upcoming i350 family of adapters.
MFC after a week
|
#
218530 |
|
10-Feb-2011 |
jfv |
Add support for the new I350 family of 1G interfaces. - this also includes virtualization support on these devices
Correct some vlan issues we were seeing in test, jumbo frames on vlans did not work correctly, this was all due to confused logic around HW filters, the new code should now work for all uses.
Important fix: when mbuf resources are depeleted, it was possible to completely empty the RX ring, and then the RX engine would stall forever. This is fixed by a flag being set whenever the refresh code fails due to an mbuf shortage, also the local timer now makes sure that all queues get an interrupt when it runs, the interrupt code will then always call rxeof, and in that routine the first thing done is now to check the refresh flag and call refresh_mbufs. This has been verified to fix this type 'hang'. Similar code will follow in the other drivers.
Finally, sync up shared code for the I350 support.
Thanks to everyone that has been reporting issues, and helping in the debug/test process!!
|
#
215781 |
|
23-Nov-2010 |
jfv |
- New 82580 devices supported - Fixes from John Baldwin: vlan shadow tables made per/interface, make vlan hw setup only happen when capability enabled, and finally, make a tuneable interrupt rate. Thanks John! - Tweaked watchdog handling to avoid any false positives, now detection is in the TX clean path, with only the final check and init happening in the local timer. - limit queues to 8 for all devices, with 82576 or 82580 on larger machines it can get greater than this, and it seems mostly a resource waste to do so. Even 8 might be high but it can be manually reduced. - use 2k, 4k and now 9k clusters based on the MTU size. - rework the igb_refresh_mbuf() code, its important to make sure the descriptor is rewritten even when reusing mbufs since writeback clobbers things.
MFC: in a few days, this delta needs to get to 8.2
|
#
213234 |
|
27-Sep-2010 |
jfv |
Update code from Intel: - Sync shared code with Intel internal - New client chipset support added - em driver - fixes to 82574, limit queues to 1 but use MSIX - em driver - large changes in TX checksum offload and tso code, thanks to yongari. - some small changes for watchdog issues. - igb driver - local timer watchdog code was missing locking this and a couple other watchdog related fixes. - bug in rx discard found by Andrew Boyer, check for null pointer
MFC: a week
|
#
211913 |
|
27-Aug-2010 |
yongari |
Do not allocate multicast array memory in multicast filter configuration function. For failed memory allocations, em(4)/lem(4) called panic(9) which is not acceptable on production box. igb(4)/ixgb(4)/ix(4) allocated the required memory in stack which consumed 768 bytes of stack memory which looks too big.
To address these issues, allocate multicast array memory in device attach time and make multicast configuration success under any conditions. This change also removes the excessive use of memory in stack.
Reviewed by: jfv
|
#
209616 |
|
30-Jun-2010 |
jfv |
OK, I was a bit sleep this morning and checked in the core changes but left out the shared code, lol. Well, and a couple fixes to the core... hopefully this will all be complete now.
Happy happy joy joy :)
|
#
209611 |
|
30-Jun-2010 |
jfv |
SR-IOV support added to igb
What this provides is support for the 'virtual function' interface that a FreeBSD VM may be assigned from a host like KVM on Linux, or newer versions of Xen with such support.
When the guest is set up with the capability, a special limited function 82576 PCI device is present in its virtual PCI space, so with this driver installed in the guest that device will be detected and function nearly like the bare metal, as it were.
The interface is only allowed a single queue in this configuration however initial performance tests have looked very good.
Enjoy!!
|
#
209241 |
|
16-Jun-2010 |
gnn |
Move statistics into the sysctl tree making it easier to find and use them. Add previously hidden statistics, some of which include interrupt and host/card communication counters.
|
#
209238 |
|
16-Jun-2010 |
jfv |
Changes from John Baldwin adding to last commit, change rxeof api for poll friendliness, and eliminate unnecessary link tasklet use. Thanks John!
|
#
209218 |
|
15-Jun-2010 |
jfv |
Change to have legacy interrupts use the same handler had a flaw, thanks to John Baldwin for finding it. Change which queue legacy tasks are enqueued on.
MFC: soonest
|
#
206001 |
|
31-Mar-2010 |
marius |
Hook the identification LEDs of igb(4), lem(4) and em(4) devices up with led(4) so they can be lit or f.e. made blink via `echo f2 > /dev/led/em0` for localization purposes.
Approved by: jfv MFC afer: 1 week (after r205869)
|
#
205869 |
|
29-Mar-2010 |
jfv |
Update to igb and em:
em revision 7.0.0: - Using driver devclass, seperate legacy (pre-pcie) code into a seperate source file. This will at least help protect against regression issues. It compiles along with em, and is transparent to end use, devices in each appear to be 'emX'. When using em in a modular form this also allows the legacy stuff to be defined out. - Add tx and rx rings as in igb, in the 82574 this becomes actual multiqueue for the first time (2 queues) while in other PCIE adapters its just make code cleaner. - Add RX mbuf handling logic that matches igb, this will eliminate packet drops due to temporary mbuf shortage.
igb revision 1.9.3: - Following the ixgbe code, use a new approach in what was called 'get_buf', the routine now has been made independent of rxeof, it now does the update to the engine TDT register, this design allows temporary mbuf resources to become non-critical, not requiring a packet to be discarded, instead it just returns and does not increment the tail pointer. - With the above change it was also unnecessary to keep 'spare' maps around, since we do not have the discard issue. - Performance tweaks and improvements to the code also.
MFC in a week
|
#
203090 |
|
27-Jan-2010 |
jfv |
Add a link tasklet so updates can be sleepable.
|
#
203049 |
|
26-Jan-2010 |
jfv |
Update the 1G drivers, shared code sync with Intel, igb now has a queue notion that has a single interrupt with an RX/TX pair, this will reduce the total interrupts seen on a system. Both em and igb have a new watchdog method. igb has fixes from Pyun Yong-Hyeon that have improved stability, thank you :)
I wish to MFC this for 7.3 asap, please test if able.
|
#
200243 |
|
07-Dec-2009 |
jfv |
Resync with Intel versions of both the em and igb drivers. These add new hardware support, most importantly the pch (i5 chipset) in the em driver. Also, both drivers now have the simplified (and I hope improved) watchdog code. The igb driver uses the new RX cleanup that I first implemented in ixgbe.
em - version 6.9.24 igb - version 1.8.4
|
#
194865 |
|
24-Jun-2009 |
jfv |
Updates for both the em and igb drivers, add support for multiqueue tx, shared code updates, new device support, and some bug fixes.
|
#
190872 |
|
09-Apr-2009 |
jfv |
This delta syncs the em and igb drivers with Intel, adds header split and SCTP support into the igb driver. Various small improvements and fixes.
MFC after: 2 weeks
|
#
183714 |
|
09-Oct-2008 |
peter |
Clean out some empty mergeinfo records, presumably by people doing local cp/mv operations. The full repo-relative URL should be specified for the source in these cases.
|
#
182416 |
|
28-Aug-2008 |
jfv |
Update to igb driver:
- changes in support of the VLAN filter fix to 126850 - removal of a bunch of legacy code that was cruft, if not possibly harmful. - removal of POLLING from this driver, with multiqueue and MSIX it just makes no sense here. - Fix an LRO bug that I've been working on internally, intermittent panics under stress, the problem was releasing the RX ring lock before the LRO flushing. - Following the above fix I now enable LRO by default - For performance reasons increase the default number of RX queues to 4. - Add AIM - "Adaptive Interrupt Moderation", a fancy way of saying that the EITR value is dynamically changed based on the size of packets in the last interrupt interval.
- Much goodness to try, enjoy!!
|
#
181027 |
|
30-Jul-2008 |
jfv |
Merge of the source for igb and em into dev/e1000, this proved to be necessary to make the static drivers work in EITHER/OR or BOTH configurations. Modules will still build in sys/modules/igb or em as before.
This also updates the igb driver for support for the 82576 adapter, adds shared code fixes, and etc....
MFC after: ASAP
|
#
178523 |
|
25-Apr-2008 |
jfv |
This delta has a few important items:
PR 122839 is fixed in both em and in igb
Second, the issue on building modules since the static kernel build changes is now resolved. I was not able to get the fancier directory hierarchy working, but this works, both em and igb build as modules now.
Third, there is now support in em for two new NICs, Hartwell (or 82574) is a low cost PCIE dual port adapter that has MSIX, for this release it uses 3 vectors only, RX, TX, and LINK. In the next release I will add a second TX and RX queue. Also, there is support here for ICH10, the followon to ICH9. Both of these are early releases, general availability will follow soon.
Fourth: On Hartwell and ICH10 we now have IEEE 1588 PTP support, I have implemented this in a provisional way so that early adopters may try and comment on the functionality. The IOCTL structure may change. This feature is off by default, you need to edit the Makefile and add the EM_TIMESYNC define to get the code.
Enjoy all!!
|
#
176667 |
|
29-Feb-2008 |
jfv |
This change introduces a split to the Intel E1000 driver, now rather than just em, there is an igb driver (this follows behavior with our Linux drivers). All adapters up to the 82575 are supported in em, and new client/desktop support will continue to be in that adapter.
The igb driver is for new server NICs like the 82575 and its followons. Advanced features for virtualization and performance will be in this driver.
Also, both drivers now have shared code that is up to the latest we have released. Some stylistic changes as well.
Enjoy :)
|