aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/qlxgbe/ql_os.c
Commit message (Collapse)AuthorAgeFilesLines
* qlxgbe: clean up empty lines in .c and .h filesMateusz Guzik2020-09-011-42/+3
| | | | Notes: svn path=/head/; revision=365167
* Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)Pawel Biernacki2020-02-261-4/+3
| | | | | | | | | | | | | | | | | | | r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are still not MPSAFE (or already are but aren’t properly marked). Use it in preparation for a general review of all nodes. This is non-functional change that adds annotations to SYSCTL_NODE and SYSCTL_PROC nodes using one of the soon-to-be-required flags. Mark all obvious cases as MPSAFE. All entries that haven't been marked as MPSAFE before are by default marked as NEEDGIANT Approved by: kib (mentor, blanket) Commented by: kib, gallatin, melifaro Differential Revision: https://reviews.freebsd.org/D23718 Notes: svn path=/head/; revision=358333
* Use NET_TASK_INIT() and NET_GROUPTASK_INIT() for drivers that processGleb Smirnoff2020-02-111-1/+1
| | | | | | | | | | incoming packets in taskqueue context. Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D23518 Notes: svn path=/head/; revision=357772
* Convert to if_foreach_llmaddr() KPI.Gleb Smirnoff2019-10-211-18/+14
| | | | Notes: svn path=/head/; revision=353856
* ifnet: Replace if_addr_lock rwlock with epoch + mutexMatt Macy2018-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Run on LLNW canaries and tested by pho@ gallatin: Using a 14-core, 28-HTT single socket E5-2697 v3 with a 40GbE MLX5 based ConnectX 4-LX NIC, I see an almost 12% improvement in received packet rate, and a larger improvement in bytes delivered all the way to userspace. When the host receiving 64 streams of netperf -H $DUT -t UDP_STREAM -- -m 1, I see, using nstat -I mce0 1 before the patch: InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree 4.98 0.00 4.42 0.00 4235592 33 83.80 4720653 2149771 1235 247.32 4.73 0.00 4.20 0.00 4025260 33 82.99 4724900 2139833 1204 247.32 4.72 0.00 4.20 0.00 4035252 33 82.14 4719162 2132023 1264 247.32 4.71 0.00 4.21 0.00 4073206 33 83.68 4744973 2123317 1347 247.32 4.72 0.00 4.21 0.00 4061118 33 80.82 4713615 2188091 1490 247.32 4.72 0.00 4.21 0.00 4051675 33 85.29 4727399 2109011 1205 247.32 4.73 0.00 4.21 0.00 4039056 33 84.65 4724735 2102603 1053 247.32 After the patch InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree 5.43 0.00 4.20 0.00 3313143 33 84.96 5434214 1900162 2656 245.51 5.43 0.00 4.20 0.00 3308527 33 85.24 5439695 1809382 2521 245.51 5.42 0.00 4.19 0.00 3316778 33 87.54 5416028 1805835 2256 245.51 5.42 0.00 4.19 0.00 3317673 33 90.44 5426044 1763056 2332 245.51 5.42 0.00 4.19 0.00 3314839 33 88.11 5435732 1792218 2499 245.52 5.44 0.00 4.19 0.00 3293228 33 91.84 5426301 1668597 2121 245.52 Similarly, netperf reports 230Mb/s before the patch, and 270Mb/s after the patch Reviewed by: gallatin Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D15366 Notes: svn path=/head/; revision=333813
* 1. Add additional debug prints.David C Somayajulu2018-03-291-5/+17
| | | | | | | | | 2. Break transmit when IFF_DRV_RUNNING is OFF. 3. set desc_count=0 for default case in switch in ql_rcv_isr() MFC after:5 days Notes: svn path=/head/; revision=331739
* 1. Added support to offline a port if is error recovery on successful.David C Somayajulu2018-02-231-52/+178
| | | | | | | | | | | | | | | | | 2. Sysctls to enable/disable driver_state_dump and error_recovery. 3. Sysctl to control the delay between hw/fw reinitialization and restarting the fastpath. 4. Stop periodic stats retrieval if interface has IFF_DRV_RUNNING flag off. 5. Print contents of PEG_HALT_STATUS1 and PEG_HALT_STATUS2 on heartbeat failure. 6. Speed up slowpath shutdown during error recovery. 7. link_state update using atomic_store. 8. Added timestamp information on driver state and minidump captures. 9. Added support for Slowpath event logging 10.Added additional failure injection types to simulate failures. Notes: svn path=/head/; revision=329855
* sys/dev: further adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-271-1/+3
| | | | | | | | | | | | | | | Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Notes: svn path=/head/; revision=326255
* Added support driver state capture/retrievalDavid C Somayajulu2017-10-111-0/+2
| | | | | | | MFC after:5 days Notes: svn path=/head/; revision=324538
* Add sanity checks in ql_hw_send() qla_send() to ensure that empty slotsDavid C Somayajulu2017-10-111-0/+11
| | | | | | | | | | in Tx Ring map to empty slot in Tx_buf array before Transmits. If the checks fail further Transmission on that Tx Ring is prevented. MFC after:5 days Notes: svn path=/head/; revision=324535
* Revert Commit r324290David C Somayajulu2017-10-101-11/+0
| | | | | | | | | Add sanity checks in ql_hw_send() qla_send() to ensure that empty slots in Tx Ring map to empty slot in Tx_buf array before Transmits. If the checks fail further Transmission on that Tx Ring is prevented. Notes: svn path=/head/; revision=324504
* Add sanity checks in ql_hw_send() qla_send() to ensure that empty slotsDavid C Somayajulu2017-10-041-0/+11
| | | | | | | | in Tx Ring map to empty slot in Tx_buf array before Transmits. If the checks fail further Transmission on that Tx Ring is prevented. Notes: svn path=/head/; revision=324290
* Fix delete all multicast addressesDavid C Somayajulu2017-09-261-1/+13
| | | | | | | | Submitted by:Anand.Khoje@cavium.com MFC after:5 days Notes: svn path=/head/; revision=324026
* 1. ql_hw.c:David C Somayajulu2017-09-201-3/+18
| | | | | | | | | | | | | | | | | In ql_hw_send() return EINVAL when TSO framelength exceeds max supported length by HW.(davidcs) 2. ql_os.c: In qla_send() call bus_dmamap_unload before freeing mbuf or recreating dmmamap.(davidcs) In qla_fp_taskqueue() Add additional checks for IFF_DRV_RUNNING Fix qla_clear_tx_buf() call bus_dmamap_sync() before freeing mbuf. Submitted by:David.Bachu@netapp.com MFC after:5 days Notes: svn path=/head/; revision=323824
* Add sysctl "enable_minidump" to turn on/off automatic minidump retrievalDavid C Somayajulu2017-09-191-1/+9
| | | | | | | MFC after:5 days Notes: svn path=/head/; revision=323782
* Upgrade FW to 5.4.66David C Somayajulu2017-08-211-157/+238
| | | | | | | | | | | | | sysctls to display stats, stats polled every 2 seconds Modify QLA_LOCK()/QLA_UNLOCK() to not sleep after acquiring mtx_lock Add support to turn OFF/ON error recovery following heartbeat failure for debug purposes. Set default max values to 32 Tx/Rx/SDS rings MFC after:5 days Notes: svn path=/head/; revision=322771
* Raise the watchdog timer interval to 2 ticks, there by guaranteeingDavid C Somayajulu2017-07-191-1/+1
| | | | | | | | | | | that it fires between 1ms and 2ms. ` Treat two consecutive occurrences of Heartbeat failures as a legitimate Heartbeat failure MFC after:3 days Notes: svn path=/head/; revision=321233
* Release mtx hw_lock before calling pause() in qla_stop() andDavid C Somayajulu2017-07-061-1/+7
| | | | | | | | | qla_error_recovery() MFC after: 5 days Notes: svn path=/head/; revision=320705
* Allow MTU changes without ifconfig down/upDavid C Somayajulu2017-07-051-5/+2
| | | | | | | MFC after:5 days Notes: svn path=/head/; revision=320694
* Remove register keyword from sys/ and ANSIfy prototypesEd Maste2017-05-171-1/+1
| | | | | | | | | | | | | | | A long long time ago the register keyword told the compiler to store the corresponding variable in a CPU register, but it is not relevant for any compiler used in the FreeBSD world today. ANSIfy related prototypes while here. Reviewed by: cem, jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D10193 Notes: svn path=/head/; revision=318389
* Fix bug where MTX_DEF lock was held while taskqueue_drain() was invoked.David C Somayajulu2017-05-091-13/+11
| | | | | | | | | Check IFF_DRV_RUNNING flag is set prior to calling ql_hw_set_multi() MFC after:3 days Notes: svn path=/head/; revision=317996
* Cleanup QLA_LOCK/QLA_UNLOCK macrosDavid C Somayajulu2017-04-201-49/+55
| | | | | | | | | | remove unused QLA_TX_LOCK/QLA_TX_UNLOCK macros format qla_error_recovery() MFC after:3 days Notes: svn path=/head/; revision=317180
* Add support for optional Soft LRODavid C Somayajulu2017-03-301-1/+2
| | | | | | | MFC after:5 days Notes: svn path=/head/; revision=316309
* add bus_dmamap_unload in ql_free_dmabuf()David C Somayajulu2017-02-211-0/+1
| | | | | | | MFC after:5 days Notes: svn path=/head/; revision=314062
* Added support for if_transmit and if_qflushDavid C Somayajulu2017-01-251-147/+365
| | | | | | | | | | Removed if_start updated version to 3.10.33 MFC after:5 days Notes: svn path=/head/; revision=312728
* Add support for adding up to 64 Multicast addresses with a singleDavid C Somayajulu2016-10-061-3/+5
| | | | | | | | | mailbox command MFC after:5 days Notes: svn path=/head/; revision=306790
* Add support for set/get cam search modeDavid C Somayajulu2016-08-171-0/+3
| | | | | | | MFC after: 5 days Notes: svn path=/head/; revision=304249
* Upgrade fw, bootloader and minidump template to version 5.4.58David C Somayajulu2016-08-171-11/+36
| | | | | | | | | Add minidump retrieval code MFC after: 5 days Notes: svn path=/head/; revision=304247
* ql_hw.c: fixed error code INJCT_HEARTBEAT_FAILUREDavid C Somayajulu2015-10-201-2/+0
| | | | | | | | | ql_os.c: removed unnecessary debug printf ql_ver.h: updated version number MFC after:5 days Notes: svn path=/head/; revision=289635
* Updated Copyright informationDavid C Somayajulu2015-06-231-22/+108
| | | | | | | | | | | | | Added support for the following: - iSCSI TLV (requires 64 Tx and 32 Rx rings - 9K receive buffers for jumbo frames (feature may be enabled/disabled) - builtin firmware, bootloader and minidump template - quick stats - async event handling for SFP insertion/removal and DCBX changes - Configuring DCBX and interrupt coalescing parameters Notes: svn path=/head/; revision=284741
* CALLOUT_MPSAFE has lost its meaning since r141428, i.e., for more than tenJung-uk Kim2015-05-221-1/+1
| | | | | | | | | | | | | years for head. However, it is continuously misused as the mpsafe argument for callout_init(9). Deprecate the flag and clean up callout_init() calls to make them more consistent. Differential Revision: https://reviews.freebsd.org/D2613 Reviewed by: jhb MFC after: 2 weeks Notes: svn path=/head/; revision=283291
* Start process of removing the use of the deprecated "M_FLOWID" flagHans Petter Selasky2014-12-011-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix multiple incorrect SYSCTL arguments in the kernel:Hans Petter Selasky2014-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Wrong integer type was specified. - Wrong or missing "access" specifier. The "access" specifier sometimes included the SYSCTL type, which it should not, except for procedural SYSCTL nodes. - Logical OR where binary OR was expected. - Properly assert the "access" argument passed to all SYSCTL macros, using the CTASSERT macro. This applies to both static- and dynamically created SYSCTLs. - Properly assert the the data type for both static and dynamic SYSCTLs. In the case of static SYSCTLs we only assert that the data pointed to by the SYSCTL data pointer has the correct size, hence there is no easy way to assert types in the C language outside a C-function. - Rewrote some code which doesn't pass a constant "access" specifier when creating dynamic SYSCTL nodes, which is now a requirement. - Updated "EXAMPLES" section in SYSCTL manual page. MFC after: 3 days Sponsored by: Mellanox Technologies Notes: svn path=/head/; revision=273377
* Use define from if_var.h to access a field inside struct if_data,Gleb Smirnoff2014-08-301-1/+1
| | | | | | | | | that resides in struct ifnet. Sponsored by: Nginx, Inc. Notes: svn path=/head/; revision=270856
* Unload maps for DMA buffers allocated via bus_dmamem_alloc() beforeJohn Baldwin2014-06-111-0/+1
| | | | | | | | | freeing the buffers. Reviewed by: davidcs Notes: svn path=/head/; revision=267375
* Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 GbitGleb Smirnoff2014-03-131-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | interface, in the r241616 a crutch was provided. It didn't work well, and finally we decided that it is time to break ABI and simply make if_baudrate a 64-bit value. Meanwhile, the entire struct if_data was reviewed. o Remove the if_baudrate_pf crutch. o Make all fields of struct if_data fixed machine independent size. The notion of data (packet counters, etc) are by no means MD. And it is a bug that on amd64 we've got a 64-bit counters, while on i386 32-bit, which at modern speeds overflow within a second. This also removes quite a lot of COMPAT_FREEBSD32 code. o Give 16 bit for the ifi_datalen field. This field was provided to make future changes to if_data less ABI breaking. Unfortunately the 8 bit size of it had effectively limited sizeof if_data to 256 bytes. o Give 32 bits to ifi_mtu and ifi_metric. o Give 64 bits to the rest of fields, since they are counters. __FreeBSD_version bumped. Discussed with: emax Sponsored by: Netflix Sponsored by: Nginx, Inc. Notes: svn path=/head/; revision=263102
* ql_minidump() should be performed only by port 0.David C Somayajulu2013-08-281-2/+2
| | | | | | | Submitted by: David C Somayajulu Notes: svn path=/head/; revision=255003
* Port 0 needs to wait for ACK only if it issued the RESET.David C Somayajulu2013-07-031-3/+5
| | | | Notes: svn path=/head/; revision=252580
* Add Qlogic 10Gigabit Ethernet & CNA Adapter Driver Version 3.10.10 forDavid C Somayajulu2013-05-151-0/+1703
QLogic 8300 Series Adapters Submitted by: David C Somayajulu (davidcs@freebsd.org) QLogic Corporation Approved by: George Neville-Neil (gnn@freebsd.org) Notes: svn path=/head/; revision=250661