summaryrefslogtreecommitdiffstats
path: root/sys/ofed
Commit message (Collapse)AuthorAgeFilesLines
* Update the network interface baudrate integer according to the actualhselasky2014-10-241-1/+10
| | | | | | | line rate. Submitted by: jhb @ MFC after: 1 week
* Fix multiple incorrect SYSCTL arguments in the kernel:hselasky2014-10-211-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
* Update the OFED Linux compatibility layer andhselasky2014-10-1534-425/+264
| | | | | | | | | | | | | | | | | Mellanox hardware driver(s): - Properly name an inclusion guard - Fix compile warnings regarding unsigned enums - Add two new sysctl nodes - Remove all empty linux header files - Make an error printout more verbose - Use "mod_delayed_work()" instead of cancelling and starting a timeout. - Implement more Linux scatterlist functions. MFC after: 3 days Sponsored by: Mellanox Technologies
* Fix compile warning when compiling with GCC.hselasky2014-10-072-1/+1
| | | | | MFC after: 3 days Sponsored by: Mellanox Technologies
* Mechanically convert to if_inc_counter().glebius2014-09-274-22/+22
|
* Update code to use new network counter API.hselasky2014-09-245-17/+23
| | | | | | | | Fix some minor compile warnings while at it. Sponsored by: Mellanox Technologies Suggested by: glebius@ MFC after: 1 week
* Hardware driver update from Mellanox Technologies, including:hselasky2014-09-2348-3394/+8969
| | | | | | | | | | | | | | | - improved performance - better stability - new features - bugfixes Supported HCAs: - ConnectX-2 - ConnectX-3 - ConnectX-3 Pro Sponsored by: Mellanox Technologies MFC after: 1 week
* Add a new fo_fill_kinfo fileops method to add type-specific information tojhb2014-09-221-0/+9
| | | | | | | | | | | | | | struct kinfo_file. - Move the various fill_*_info() methods out of kern_descrip.c and into the various file type implementations. - Rework the support for kinfo_ofile to generate a suitable kinfo_file object for each file and then convert that to a kinfo_ofile structure rather than keeping a second, different set of code that directly manipulates type-specific file information. - Remove the shm_path() and ksem_info() layering violations. Differential Revision: https://reviews.freebsd.org/D775 Reviewed by: kib, glebius (earlier version)
* Improve transmit sending offload, TSO, algorithm in general.hselasky2014-09-221-0/+5
| | | | | | | | | | | | | | | | | The current TSO limitation feature only takes the total number of bytes in an mbuf chain into account and does not limit by the number of mbufs in a chain. Some kinds of hardware is limited by two factors. One is the fragment length and the second is the fragment count. Both of these limits need to be taken into account when doing TSO. Else some kinds of hardware might have to drop completely valid mbuf chains because they cannot loaded into the given hardware's DMA engine. The new way of doing TSO limitation has been made backwards compatible as input from other FreeBSD developers and will use defaults for values not set. Reviewed by: adrian, rmacklem Sponsored by: Mellanox Technologies MFC after: 1 week
* Revert r271504. A new patch to solve this issue will be made.hselasky2014-09-131-6/+0
| | | | Suggested by: adrian @
* Improve transmit sending offload, TSO, algorithm in general.hselasky2014-09-131-0/+6
| | | | | | | | | | | | | | | | The current TSO limitation feature only takes the total number of bytes in an mbuf chain into account and does not limit by the number of mbufs in a chain. Some kinds of hardware is limited by two factors. One is the fragment length and the second is the fragment count. Both of these limits need to be taken into account when doing TSO. Else some kinds of hardware might have to drop completely valid mbuf chains because they cannot loaded into the given hardware's DMA engine. The new way of doing TSO limitation has been made backwards compatible as input from other FreeBSD developers and will use defaults for values not set. MFC after: 1 week Sponsored by: Mellanox Technologies
* Fix various issues with invalid file operations:jhb2014-09-121-1/+13
| | | | | | | | | | | | | | | | | | - Add invfo_rdwr() (for read and write), invfo_ioctl(), invfo_poll(), and invfo_kqfilter() for use by file types that do not support the respective operations. Home-grown versions of invfo_poll() were universally broken (they returned an errno value, invfo_poll() uses poll_no_poll() to return an appropriate event mask). Home-grown ioctl routines also tended to return an incorrect errno (invfo_ioctl returns ENOTTY). - Use the invfo_*() functions instead of local versions for unsupported file operations. - Reorder fileops members to match the order in the structure definition to make it easier to spot missing members. - Add several missing methods to linuxfileops used by the OFED shim layer: fo_write(), fo_truncate(), fo_kqfilter(), and fo_stat(). Most of these used invfo_*(), but a dummy fo_stat() implementation was added.
* Forward declare struct kiocb, which is only used for an unsued functionbz2014-08-291-0/+1
| | | | | | | | | | argument but not actually defined anywhere. This fixes the compile complaining about "declaration of 'struct kiocb' will not be visible outside of this function". MFC after: 2 weeks X-MFC with: whatever changed caused the breakage ;-)
* - Update the OFED Linux Emulation layer as a preparation for ahselasky2014-08-27144-494/+1347
| | | | | | | | | | | | | | | hardware driver update from Mellanox Technologies. - Remove empty files from the OFED Linux Emulation layer. - Fix compile warnings related to printf() and the "%lld" and "%llx" format specifiers. - Add some missing 2-clause BSD copyrights. - Add "Mellanox Technologies, Ltd." to list of copyright holders. - Add some new compatibility files. - Fix order of uninit in the mlx4ib module to avoid crash at unload using the new module_exit_order() function. MFC after: 1 week Sponsored by: Mellanox Technologies
* pci: make MSI(-X) enable and disable methods of the PCI busroyger2014-08-201-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | Make the functions pci_disable_msi, pci_enable_msi and pci_enable_msix methods of the newbus PCI bus. This code should not include any functional change. Sponsored by: Citrix Systems R&D Reviewed by: imp, jhb Differential Revision: https://reviews.freebsd.org/D354 dev/pci/pci.c: - Convert the mentioned functions to newbus methods. - Fix the callers of the converted functions. sys/dev/pci/pci_private.h: dev/pci/pci_if.m: - Declare the new methods. dev/pci/pcivar.h: - Add helpers to call the newbus methods. ofed/include/linux/pci.h: - Add define to prevent the ofed version of pci_enable_msix from clashing with the FreeBSD native version.
* - Fix radix tree memory leakage when unloading modules using radixhselasky2014-08-121-20/+64
| | | | | | | | | | | | | | trees. This happens because the logic inserting items into the radix tree is allocating empty radix levels, when index zero does not contain any items. - Add proper error case handling, so that the radix tree does not end up in a bad state, if memory cannot be allocated during insertion of an item. - Add check for inserting NULL items into the radix tree. - Add check for radix tree getting too big. MFC after: 1 week Sponsored by: Mellanox Technologies
* Fix OFED startup order: All SYSINIT()'s and modules should be loadedhselasky2014-07-064-6/+11
| | | | | | | | | prior to starting "/sbin/init" which will run all the "/etc/rc.d/xxx" scripts. Else there can be a race configuring the interfaces via "/etc/rc.conf". MFC after: 4 weeks Sponsored by: Mellanox Technologies
* Fix compile warning.hselasky2014-07-061-1/+1
| | | | | MFC after: 4 weeks Sponsored by: Mellanox Technologies
* Fix some compile warnings.hselasky2014-07-061-12/+12
| | | | | MFC after: 4 weeks Sponsored by: Mellanox Technologies
* Compile fixes:hselasky2014-06-283-1/+3
| | | | | | | | | | | | | | | | | | | | | Remove duplicate "debug_ktr.mask" sysctl definition. Remove now unused variable from "kern_ktr.c". This fixes build of "ktr" which was broken by r267961. Let the default value for "vm_kmem_size_scale" be zero. It is setup after that the sysctl has been initialized from "getenv()" in the "kmeminit()" function to equal the "VM_KMEM_SIZE_MAX" value, if zero. On Sparc64 the "VM_KMEM_SIZE_MAX" macro is not a constant. This fixes build of Sparc64 which was broken by r267961. Add a special macro to dynamically create SYSCTL root nodes, because root nodes have a special parent. This fixes build of existing OFED module and CANBUS module for pc98 which was broken by r267961. Add missing "sysctl.h" includes to get the needed sysctl header file declarations. This is needed after r267961. MFC after: 2 weeks
* - Fix out of range shifting bug in bitops.h.hselasky2014-06-121-5/+5
| | | | | | | - Make code a bit easier to read by adding parenthesis. MFC after: 3 days Sponsored by: Mellanox Technologies
* Use src.opts.mk in preference to bsd.own.mk except where we need stuffimp2014-05-062-2/+2
| | | | from the latter.
* Rename global cnt to vm_cnt to avoid shadowing.bdrewery2014-03-222-2/+2
| | | | | | | | | | | | | | To reduce the diff struct pcu.cnt field was not renamed, so PCPU_OP(cnt.field) is still used. pc_cnt and pcpu are also used in kvm(3) and vmstat(8). The goal was to not affect externally used KPI. Bump __FreeBSD_version_ in case some out-of-tree module/code relies on the the global cnt variable. Exp-run revealed no ports using it directly. No objection from: arch@ Sponsored by: EMC / Isilon Storage Division
* Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbitglebius2014-03-133-13/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Simplify filling sockaddr_dl structure for if_resolvemulti()melifaro2014-01-181-16/+2
| | | | | | | | | | | | | | callback providers. link_init_sdl() function can be used to fill most of the parameters. Use caller stack instead of allocation / freing memory for each request. Do not drop support for extra-long (probably non-existing) link-layer protocols by introducing link_alloc_sdl() (used by if_resolvemulti() callback) and link_free_sdl() (used by caller). Since this change breaks KBI, MFC requires slightly different approach (link_init_sdl() auto-allocating buffer if necessary to handle cases with unmodified if_resolvemulti() callers). MFC after: 2 weeks
* Similar to r260020, only use -fms-extensions with gcc, for all otherdim2013-12-302-2/+2
| | | | | | | | modules which require this flag to compile. Use a GCC_MS_EXTENSIONS variable, defined in kern.pre.mk, which can be used to easily supply the flag (or not), depending on the compiler type. MFC after: 3 days
* Defer start/stop port to workqueues.alfred2013-12-152-25/+75
| | | | | | | | | We need to do this because the Linux compat layer uses sx(9) for mutex, however the lagg code uses rmlocks and calls into the mellanox driver. This causes deadlock due to sleeping while holding a rmlock. Submitted by: Shahar Klein (shahark mellanox.com) MFC After: 3 days.
* Fix undefined behavior: (1 << 31) is not defined as 1 is an int and thiseadler2013-11-304-13/+13
| | | | | | | | | | | | | shifts into the sign bit. Instead use (1U << 31) which gets the expected result. This fix is not ideal as it assumes a 32 bit int, but does fix the issue for most cases. A similar change was made in OpenBSD. Discussed with: -arch, rdivacky Reviewed by: cperciva
* Fix creating a vlan over lagg over mlxen crash.alfred2013-11-171-0/+6
| | | | | PR: 181931 Submitted by: Shahar Klein (shahark mellanox.com)
* Do not use a sleep lock when protecting the driver flags.alfred2013-11-082-2/+5
| | | | | | This was causing a locking issue with lagg Submitted by: odeds
* Fix for bad performance when mtu is increased.alfred2013-11-083-65/+45
| | | | | | | Update the auto moderation behavior in the mlxen driver to match the new LINUX OFED code. Submitted by: odeds
* Use explicit long cast to avoid overflow in bitopts.alfred2013-11-081-3/+3
| | | | | | | This was causing problems with the buddy allocator inside of ofed. Submitted by: odeds
* Fix API mismatch exposed by lagg.alfred2013-11-021-2/+2
| | | | | When destroying a lagg the driver tries to restore the old mac and fails due to API mismatch
* The r48589 promised to remove implicit inclusion of if_var.h soon. Prepareglebius2013-10-263-0/+3
| | | | | | | | to this event, adding if_var.h to files that do need it. Also, include all includes that now are included due to implicit pollution via if_var.h Sponsored by: Netflix Sponsored by: Nginx, Inc.
* Fix resource free.alfred2013-10-171-3/+3
| | | | | | | | | | | | The order of releasing resources in mlxen was wrong, which caused panic on reload of the module. conf_ctx list should be released before stat_ctx list, otherwise the leafs in conf_ctx list won't be released because of the dependancy. The fix is to change the order of the releases. Submitted by: Shahar Klein (shahark at mellanox.com)
* Fix __free_pages() in the linux shim.alfred2013-10-151-3/+3
| | | | | __free_pages() is actaully supposed to take a "struct page *" not an address.
* Fix for When more than one NIC is present.alfred2013-10-101-34/+1
| | | | | | | | | | | | The device name was incorrect due to a specific function we ported from the Linux driver that is not FBSD compatible. This resulted with a false sysctl registration and some more problematic issues. The patch basically revokes it all together. Submitted by: Meny Yossefi (menyy mellanox.com) Approved by: re
* Remove redundant declaration of cmclass indim2013-10-091-3/+0
| | | | | | | sys/ofed/drivers/infiniband/core/ucm.c, to silence a gcc warning. Approved by: re (kib) X-MFC-With: r255932
* Give an unnamed union in sys/ofed/include/rdma/ib_verbs.h a name, todim2013-10-071-1/+1
| | | | | | | silence a gcc warning. Approved by: re (gjb) MFC after: 3 days
* Fixed kernel crash when running devinfoalfred2013-10-011-0/+2
| | | | | | | | | | When calling to ib_uverbs_cleanup_ucontext, there is a call to mutex_lock of xrcd_table_mutex, which was not initialized. Added missing initialization for xrcd_table_mutex. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re
* Enable ib_dev.mmap functionalfred2013-10-013-2/+73
| | | | | | | | | Removed the ifdef linux from this function. Added stub function for contiguous pages to avoid compilation errors. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re
* Fixed 'Couldn't Create QP' issue when running rc_pingpong, uc_pingpong,alfred2013-10-011-0/+18
| | | | | | | | | | | | srq_pingpong IBverbs Removed refrences using 'ifdef __linux__' to qpg functions and related fields in struct ib_qp_init_attr. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re
* Fixed kernel crash when removing IPOIB_CM option from configuration filealfred2013-10-012-2/+2
| | | | | | | Changed module init from module_init() to module_init_order() with SI_ORDER_MIDDLE flag Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re
* Fix mis-merge of upstream fix.alfred2013-10-011-4/+0
| | | | | | | | We would accidentally make the string one byte too short. Submitted by: Orit Moskovich (oritm mellanox.com) Approved by: re
* Update OFED to Linux 3.7 and update Mellanox drivers.alfred2013-09-2996-3500/+24925
| | | | | | | | | | | | | | | | | | | | | | | Update the OFED Infiniband core to the version supplied in Linux version 3.7. The update to OFED is nearly all additional defines and functions with the exception of the addition of additional parameters to ib_register_device() and the reg_user_mr callback. In addition the ibcore (Infiniband core) and ipoib (IP over Infiniband) have both been made into completely loadable modules to facilitate testing of the OFED stack in FreeBSD. Finally the Mellanox Infiniband drivers are now updated to the latest version shipping with Linux 3.7. Submitted by: Mellanox FreeBSD driver team: Oded Shanoon (odeds mellanox.com), Meny Yossefi (menyy mellanox.com), Orit Moskovich (oritm mellanox.com) Approved by: re
* Handle cases where capability rights are not provided.pjd2013-09-051-3/+9
| | | | Reported by: kib
* Change m->pkthdr.header to m->pkthdr.PH_loc.ptr after r254804andre2013-08-251-2/+2
| | | | | | to transiently store pointers to packet headers. Sponsored by: The FreeBSD Foundation
* Fix implementation of sock_getname.np2013-08-231-5/+5
| | | | MFC after: 1 week
* Stop an ipoib interface before detaching it.jhb2013-08-201-0/+2
| | | | | | | PR: kern/181225 Submitted by: Shahar Klein Obtained from: Mellanox MFC after: 1 week
* Add m_clrprotoflags() to clear protocol specific mbuf flags at up andandre2013-08-191-1/+1
| | | | | | | | downwards layer crossings. Consistently use it within IP, IPv6 and ethernet protocols. Discussed with: trociny, glebius
OpenPOWER on IntegriCloud