aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ixgbe
Commit message (Collapse)AuthorAgeFilesLines
...
* net: Use M_HASHTYPE_OPAQUE_HASH if the mbuf flowid has hash propertiesSepherosa Ziehau2016-06-071-1/+1
| | | | | | | | | Reviewed by: hps, erj, tuexen Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D6688 Notes: svn path=/head/; revision=301538
* dev/e1000,ixgbe: minor spelling fixes.Pedro F. Giffuni2016-05-065-9/+9
| | | | | | | | | No functional change. Differential Revision: https://reviews.freebsd.org/D6177 Notes: svn path=/head/; revision=299200
* Correct possible underflow conditions when checking for available spaceSean Bruno2016-04-181-1/+1
| | | | | | | | | | | | in the tx h/w ring buffer. Reviewed by: gnn jeb.j.cramer@intel.com MFC after: 1 week Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D5918 Notes: svn path=/head/; revision=298224
* Cleanup unnecessary semicolons from the kernel.Pedro F. Giffuni2016-04-102-3/+3
| | | | | | | Found with devel/coccinelle. Notes: svn path=/head/; revision=297793
* tcp/lro: Use tcp_lro_flush_all in device drivers to avoid code duplicationSepherosa Ziehau2016-04-011-5/+1
| | | | | | | | | | | | And factor out tcp_lro_rx_done, which deduplicates the same logic with netinet/tcp_lro.c Reviewed by: gallatin (1st version), hps, zbb, np, Dexuan Cui <decui microsoft com> Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5725 Notes: svn path=/head/; revision=297482
* Prevent invalid ixgbe advertise setting warningSteven Hartland2016-03-161-4/+4
| | | | | | | | | | | | Prevent ixgbe outputting "Invalid advertised speed" warning on boot with no customisations by moving test from sysctl handler to set handler. PR: 208022 MFC after: 3 days Sponsored by: Multiplay Notes: svn path=/head/; revision=296922
* In FreeBSD 10 and higher the driver announces SCTP checksum offloading supportMichael Tuexen2016-02-041-7/+11
| | | | | | | | | | | also for 82598, which doesn't support it. The legacy code has a check for it, which was missed when the code for dealing with CSUM_IP6_* was added. Add the same check for FreeBSD 10 and higher. Differential Revision: https://reviews.freebsd.org/D5192 Notes: svn path=/head/; revision=295273
* Fix ixgbe flow control autoneg reportingSteven Hartland2016-01-311-1/+4
| | | | | | | | | | | | Fix ixgbe reporting of flow control autoneg when running under DBG 1 Reviewed by: erj MFC after: 2 days Sponsored by: Multiplay Differential Revision: https://reviews.freebsd.org/D5089 Notes: svn path=/head/; revision=295094
* Configure ixgbe phy & gbic powerSteven Hartland2016-01-315-4/+36
| | | | | | | | | | | | | | | Setup phy and gbic power as per Linux 4.3.13 driver. This fixes link not detected on X540-AT2 after booting to Linux which turns the phy power off on detach. Reviewed by: sbruno MFC after: 2 days Sponsored by: Multiplay Differential Revision: https://reviews.freebsd.org/D5107 Notes: svn path=/head/; revision=295093
* ixgbe sysctl hardware defaultsSteven Hartland2016-01-262-49/+86
| | | | | | | | | | | | | | | | | | Added hw.ix.flow_control which enables the default flow_control of all ix interfaces to be set in loader.conf. Added hw.ix.advertise_speed which enables the default advertised_speed of all ix interfaces to be set in loader.conf. Made enable_aim device independent based on hw.ix.enable_aim default. Reviewed by: erj MFC after: 1 week Sponsored by: Multiplay Differential Revision: https://reviews.freebsd.org/D5060 Notes: svn path=/head/; revision=294795
* Fix ixgbe compliation with DBG 1Steven Hartland2016-01-251-3/+26
| | | | | | | | | | | Fixed ERROR_REPORTXX macros so that ixgbe compiles with #define DBG 1 MFC after: 1 week Sponsored by: Multiplay Differential Revision: https://reviews.freebsd.org/D5061 Notes: svn path=/head/; revision=294734
* Fix ix advertise value after media changeSteven Hartland2016-01-221-4/+10
| | | | | | | | | | | | | | | | When ifconfig sets media then the values displayed by the advertise_speed value are invalidated. Fix this by setting the bits correctly including setting advertise to 0 for media = auto. Reviewed by: sbruno MFC after: 1 week Sponsored by: Multiplay Differential Revision: https://reviews.freebsd.org/D5034 Notes: svn path=/head/; revision=294578
* Add optimizing LRO wrapper:Hans Petter Selasky2016-01-192-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add optimizing LRO wrapper which pre-sorts all incoming packets according to the hash type and flowid. This prevents exhaustion of the LRO entries due to too many connections at the same time. Testing using a larger number of higher bandwidth TCP connections showed that the incoming ACK packet aggregation rate increased from ~1.3:1 to almost 3:1. Another test showed that for a number of TCP connections greater than 16 per hardware receive ring, where 8 TCP connections was the LRO active entry limit, there was a significant improvement in throughput due to being able to fully aggregate more than 8 TCP stream. For very few very high bandwidth TCP streams, the optimizing LRO wrapper will add CPU usage instead of reducing CPU usage. This is expected. Network drivers which want to use the optimizing LRO wrapper needs to call "tcp_lro_queue_mbuf()" instead of "tcp_lro_rx()" and "tcp_lro_flush_all()" instead of "tcp_lro_flush()". Further the LRO control structure must be initialized using "tcp_lro_init_args()" passing a non-zero number into the "lro_mbufs" argument. - Make LRO statistics 64-bit. Previously 32-bit integers were used for statistics which can be prone to wrap-around. Fix this while at it and update all SYSCTL's which expose LRO statistics. - Ensure all data is freed when destroying a LRO control structures, especially leftover LRO entries. - Reduce number of memory allocations needed when setting up a LRO control structure by precomputing the total amount of memory needed. - Add own memory allocation counter for LRO. - Bump the FreeBSD version to force recompilation of all KLDs due to change of the LRO control structure size. Sponsored by: Mellanox Technologies Reviewed by: gallatin, sbruno, rrs, gnn, transport Tested by: Netflix Differential Revision: https://reviews.freebsd.org/D4914 Notes: svn path=/head/; revision=294327
* Fix VF handling of VLANs.Sean Bruno2016-01-071-3/+2
| | | | | | | | | | | | | This helps immensily with our ability to operate in the Amazon Cloud. Discussed on Intel Networking Community call this morning. Submitted by: Jarrod Petz(petz@nisshoko.net) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D4788 Notes: svn path=/head/; revision=293338
* Fixup SFP module insertion on the 82599 when insertion happens afterSean Bruno2016-01-071-9/+49
| | | | | | | | | | | | | | | the system is booted and running. Add PHY detection logic to ixgbe_handle_mod() and add locking to ixgbe_handle_msf() as well. PR: 150251 Submitted by: aboyer@averesystems.com MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D3188 Notes: svn path=/head/; revision=293334
* Add missing #ifdef INET after r292674 to allow NOIP and NOINET kernelsBjoern A. Zeeb2015-12-261-0/+2
| | | | | | | to build. Notes: svn path=/head/; revision=292751
* Fix NO INET6 build broken at svn r292674Sean Bruno2015-12-241-0/+2
| | | | | | | Reported by: ohartman@zedat.fu-berlin.de Notes: svn path=/head/; revision=292697
* ixgbe(4): Update to version 3.1.13-kSean Bruno2015-12-2320-978/+961
| | | | | | | | | | | | | Add support for two new devices: X552 SFP+ 10 GbE, and the single port version of X550T. Submitted by: erj Reviewed by: gnn Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D4186 Notes: svn path=/head/; revision=292674
* Add support for sysctl knobs to live tune the per interrupt rx/tx packetSean Bruno2015-10-134-17/+47
| | | | | | | | | | | processing limits in ixgbe(4) Differential Revision: https://reviews.freebsd.org/D3719 Submitted by: jason wolfe (j-nitrology.com) MFC after: 2 weeks Notes: svn path=/head/; revision=289238
* A misplaced #endif in ixgbe_ioctl() causes interface MTU to becomeSean Bruno2015-08-031-3/+3
| | | | | | | | | | | | | zero when INET and INET6 are undefined. PR: 162028 Differential Revision: https://reviews.freebsd.org/D3187 Submitted by: hoomanfazaeli@gmail.com pluknet Reviewed by: erj hiren gelbius MFC after: 2 weeks Notes: svn path=/head/; revision=286238
* Remove a couple of TUNABLE_INT() calls which are unnecessary after r267961.Hiren Panchasara2015-07-211-2/+0
| | | | | | | | | | r267961 did remove them but they "reappeared" when ixgbe(4) rewrite happened in r280182. Sponsored by: Limelight Networks Notes: svn path=/head/; revision=285736
* Add netmap support for ixgbe SRIOV VFs (that is, to if_ixv).Patrick Kelsey2015-07-153-2/+62
| | | | | | | | | | Differential Revision: https://reviews.freebsd.org/D2923 Reviewed by: erj, gnn Approved by: jmallett (mentor) Sponsored by: Norse Corp, Inc. Notes: svn path=/head/; revision=285592
* Remove FreeBSD version check for deprecated M_FLOWID.Hiren Panchasara2015-07-151-4/+0
| | | | | | | | Reviewed by: erj Sponsored by: Limelight Networks Notes: svn path=/head/; revision=285591
* Fix igxbe SRIOV VF (if_ixv) initialization bugs. The MAC address forPatrick Kelsey2015-07-153-6/+8
| | | | | | | | | | | | | | | an if_ixv instance can now set at creation time, and the receive ring tail pointer is correctly initialized (previously, things still worked because the receive ring tail pointer was being fixed up as a side effect of other activity). Differential Revision: https://reviews.freebsd.org/D2922 Reviewed by: erj, gnn Approved by: jmallett (mentor) Sponsored by: Norse Corp, Inc. Notes: svn path=/head/; revision=285590
* Expose full 32bit RSS hash from card regardless of whether RSS is defined orHiren Panchasara2015-07-141-45/+52
| | | | | | | | | | | | | | | | not. When doing multiqueue, we are all setup to have full 32bit RSS hash from the card. We do not need to hide that under "ifdef RSS" and should expose that by default so others like lagg(4) can use that and avoid hashing the traffic by themselves. While here, delete the FreeBSD version check and use of deprecated M_FLOWID. Reviewed by: adrian, erj MFC after: 1 week Sponsored by: Limelight Networks Notes: svn path=/head/; revision=285528
* Sync netmap sources with the version in our private tree.Luigi Rizzo2015-07-101-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit contains large contributions from Giuseppe Lettieri and Stefano Garzarella, is partly supported by grants from Verisign and Cisco, and brings in the following: - fix zerocopy monitor ports and introduce copying monitor ports (the latter are lower performance but give access to all traffic in parallel with the application) - exclusive open mode, useful to implement solutions that recover from crashes of the main netmap client (suggested by Patrick Kelsey) - revised memory allocator in preparation for the 'passthrough mode' (ptnetmap) recently presented at bsdcan. ptnetmap is described in S. Garzarella, G. Lettieri, L. Rizzo; Virtual device passthrough for high speed VM networking, ACM/IEEE ANCS 2015, Oakland (CA) May 2015 http://info.iet.unipi.it/~luigi/research.html - fix rx CRC handing on ixl - add module dependencies for netmap when building drivers as modules - minor simplifications to device-specific routines (*txsync, *rxsync) - general code cleanup (remove unused variables, introduce macros to access rings and remove duplicate code, Applications do not need to be recompiled, unless of course they want to use the new features (monitors and exclusive open). Those willing to try this code on stable/10 can just update the sys/dev/netmap/*, sys/net/netmap* with the version in HEAD and apply the small patches to individual device drivers. MFC after: 1 month Sponsored by: (partly) Verisign, Cisco Notes: svn path=/head/; revision=285349
* Catch up to the SRIOV API changes in r283670.John Baldwin2015-06-012-3/+4
| | | | Notes: svn path=/head/; revision=283893
* Delta D2489 - Add SRIOV support to the Intel 10G driver.Jack F Vogel2015-06-016-177/+1380
| | | | | | | | | | NOTE: This is a technology preview, while it has undergone development testing, Intel has not yet completed full validation of the feature. It is being integrated for early access and customer testing. Notes: svn path=/head/; revision=283883
* Revert last commit, to remove added skeleton tree.Jack F Vogel2015-06-016-1382/+181
| | | | Notes: svn path=/head/; revision=283882
* Delta D2489 - Add SRIOV support to the Intel 10G driver.Jack F Vogel2015-06-016-181/+1382
| | | | | | | | | NOTE: This is a technology preview, while it has undergone development tests, Intel has not yet completed full validation of the feature. It is being integrated for early access and customer testing. Notes: svn path=/head/; revision=283881
* Remove the extra extern which makes gcc complain; I assume it came fromBjoern A. Zeeb2015-05-011-4/+0
| | | | | | | | | | r282289. We do include ixgbe.h which does include ixgbe_common.h which has the extern statement for ixgbe_stop_mac_link_on_d3_82599(). Notes: svn path=/head/; revision=282299
* Add support for certain Intel X550 devices.Eric Joyner2015-04-3030-400/+4793
| | | | | | | | | | | | | | | These include standalone X550 adapters, X552 10GbE backplane, and X552/X557-AT 10GBASE-T; with the latter two being integrated into Xeon D SoCs. As well, this bumps the ixgbe version number to 2.8.3, and includes updates to shared code for support for the new devices. Differential Revision: D2414 Reviewed by: gnn, adrian Approved by: jfv (mentor), gnn (mentor) Notes: svn path=/head/; revision=282289
* Various fixes to the stats in igb(4), ixgbe(4), and ixl(4).John Baldwin2015-04-301-0/+11
| | | | | | | | | | | | | | | | | | | | | | - Use hardware counters for ifnet stats in igb(4) when possible. This ensures these stats include packets that bypass the regular stack via netmap. - Don't derefence values off the end of the igb(4) VF stats structure. Instead, add a dedicated if_get_counter method for igb(4) VF interfaces. - Report missed packets on igb(4) as input queue drops rather than an input error. - Report bug_ring drop counts as output queue drops for igb(4) and ixgbe(4). - Export the buf_ring drop stats for individual rings via sysctl on ixgbe(4). - Fix a typo that in ixl(4) that caused output queue drops to be reported as input queue drops and input queue drops to be unreported. Differential Revision: https://reviews.freebsd.org/D2402 Reviewed by: jfv, rstone (6) Sponsored by: Norse Corp, Inc. Notes: svn path=/head/; revision=282280
* Add back ixgbe_rxeof, just remove the assignment to more.Marcelo Araujo2015-04-201-0/+1
| | | | Notes: svn path=/head/; revision=281773
* Remove unused variable.Marcelo Araujo2015-04-201-2/+0
| | | | | | | | Differential Revision: D2331 Reviewed by: erj Notes: svn path=/head/; revision=281772
* Make changes to busdma code in tx/rx path similar to the ones made in r257541.Eric Joyner2015-04-011-4/+3
| | | | | | | | | | | | | - bus_dmamap_create() does not take the BUS_DMA_NOWAIT flag - properly unload maps - do not assign NULL to dma map pointers Submitted by: Konstantin Belousov <kostikbel@gmail.com> Approved by: jfv (mentor) MFC after: 1 week Notes: svn path=/head/; revision=280962
* Fix building ixgbe with gcc, it doesn't like nested extern declarations.Andrew Turner2015-03-191-1/+2
| | | | | | | | The fix is to move the extern declaration ix_crcstrip out of ixgbe_setup_hw_rsc. Notes: svn path=/head/; revision=280252
* Fix i386 LINT build issues, and remove unused variable.Jack F Vogel2015-03-182-5/+4
| | | | Notes: svn path=/head/; revision=280228
* Fix ixgbe(4) to compile - with RSS; with ix+ixv in the kernel.Adrian Chadd2015-03-183-11/+18
| | | | | | | | | | | | | | | | | | * Fix the multiple same-named devclasses; the duplicate name trips up the linker. * Re-do the taskqueue stuff to use the new cpuset API, not the old pinned API. * Add includes for the new location of the RSS configuration routines. This allows ixgbe to compile as a module /and/ linked into the kernel, along with RSS working. Sponsored by: Norse Corp, Inc. Notes: svn path=/head/; revision=280204
* Resolve a few build issues, add module directories back into Makefile,Jack F Vogel2015-03-173-1/+10
| | | | | | | | then correct a NETMAP problem resulting from the split, and finally temporarily disable the X550 functionality. Notes: svn path=/head/; revision=280197
* Update to the Intel ixgbe driver:Jack F Vogel2015-03-1730-8111/+8355
| | | | | | | | | | | | | | | | | | | | | | - Split the driver into independent pf and vf loadables. This is in preparation for SRIOV support which will be following shortly. This also allows us to keep a seperate revision control over the two parts, making for easier sustaining. - Make the TX/RX code a shared/seperated file, in the old code base the ixv code would miss fixes that went into ixgbe, this model will eliminate that problem. - The driver loadables will now match the device names, something that has been requested for some time. - Rather than a modules/ixgbe there is now modules/ix and modules/ixv - It will also be possible to make your static kernel with only one or the other for streamlined installs, or both. Enjoy! Submitted by: jfv and erj Notes: svn path=/head/; revision=280182
* Fix style(9) from my previous commit r279803.Marcelo Araujo2015-03-091-24/+23
| | | | | | | Spotted by: kevlo Notes: svn path=/head/; revision=279805
* Now ifconfig(8) can set the media option as 10Gbase-T for ixgbe(4).Marcelo Araujo2015-03-091-0/+1
| | | | | | | | | | Differential Revision: D823 Reviewed by: jfvogel Approved by: jfvogel Sponsored by: QNAP Systems Inc. Notes: svn path=/head/; revision=279804
* Fix the media detected for copper cables NIC based on chipset X540T.Marcelo Araujo2015-03-091-11/+24
| | | | | | | | | | Phabric: D811 Reviewed by: jfvogel Approved by: jfvogel Sponsored by: QNAP Systems Inc. Notes: svn path=/head/; revision=279803
* Pad RX copy alignment calculation to avoid illegal memory accessesEnji Cooper2015-02-281-2/+3
| | | | | | | | | | | | | | | | | | | | | | | The optimization made in r239940 is valid for struct mbuf's current structure and size in FreeBSD, but hardcodes assumptions about sizes of struct mbuf, which are unfortunately broken if additional data is added to the beginning of struct mbuf X-MFC note (discussed with rwatson): This change requires the MPKTHSIZE definition, which is only available after head@r277203 and will not be MFCed as it breaks mbuf(9) KPI. A direct commit to stable/10 and merges to other branches to add the necessary definitions to work with the code as-is will be done to facilitate this MFC PR: 194314 MFC after: 2 weeks Approved/Reviewed by: erj, jfv Sponsored by: EMC / Isilon Storage Division Notes: svn path=/head/; revision=279393
* Migrate using CPU_ZERO() + CPU_SET() -> CPU_SETOF().Adrian Chadd2015-02-251-2/+1
| | | | | | | | | | | | Tested: * ixgbe, igb, RSS enabled Submitted by: jhb Sponsored by: Norse Corp, Inc. Notes: svn path=/head/; revision=279299
* Change uses of taskqueue_start_threads_pinned() -> ↵Adrian Chadd2015-02-241-2/+7
| | | | | | | | | | taskqueue_start_threads_cpuset() Differential Revision: https://reviews.freebsd.org/D1897 Reviewed by: jfv Notes: svn path=/head/; revision=279255
* Refactor / restructure the RSS code into generic, IPv4 and IPv6 specificAdrian Chadd2015-01-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | bits. The motivation here is to eventually teach netisr and potentially other networking subsystems a bit more about how RSS work queues / buckets are configured so things have a hope of auto-configuring in the future. * net/rss_config.[ch] takes care of the generic bits for doing configuration, hash function selection, etc; * topelitz.[ch] is now in net/ rather than netinet/; * (and would be in libkern if it didn't directly include RSS_KEYSIZE; that's a later thing to fix up.) * netinet/in_rss.[ch] now just contains the IPv4 specific methods; * and netinet/in6_rss.[ch] now just contains the IPv6 specific methods. This should have no functional impact on anyone currently using the RSS support. Differential Revision: D1383 Reviewed by: gnn, jfv (intel driver bits) Notes: svn path=/head/; revision=277331
* Revert r275136, it was not approved, it was sloppy, if a featureJack F Vogel2014-12-021-38/+7
| | | | | | | like this is needed please resubmit for Intel's approval. Notes: svn path=/head/; revision=275431
* Start process of removing the use of the deprecated "M_FLOWID" flagHans Petter Selasky2014-12-012-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from the FreeBSD network code. The flag is still kept around in the "sys/mbuf.h" header file, but does no longer have any users. Instead the "m_pkthdr.rsstype" field in the mbuf structure is now used to decide the meaning of the "m_pkthdr.flowid" field. To modify the "m_pkthdr.rsstype" field please use the existing "M_HASHTYPE_XXX" macros as defined in the "sys/mbuf.h" header file. This patch introduces new behaviour in the transmit direction. Previously network drivers checked if "M_FLOWID" was set in "m_flags" before using the "m_pkthdr.flowid" field. This check has now now been replaced by checking if "M_HASHTYPE_GET(m)" is different from "M_HASHTYPE_NONE". In the future more hashtypes will be added, for example hashtypes for hardware dedicated flows. "M_HASHTYPE_OPAQUE" indicates that the "m_pkthdr.flowid" value is valid and has no particular type. This change removes the need for an "if" statement in TCP transmit code checking for the presence of a valid flowid value. The "if" statement mentioned above is now a direct variable assignment which is then later checked by the respective network drivers like before. Additional notes: - The SCTP code changes will be committed as a separate patch. - Removal of the "M_FLOWID" flag will also be done separately. - The FreeBSD version has been bumped. MFC after: 1 month Sponsored by: Mellanox Technologies Notes: svn path=/head/; revision=275358