Skip to content
This repository is currently being migrated. It's locked while the migration is in progress.

Commit

Permalink
Updating the codebase based on http://www.openonload.org/download/ope…
Browse files Browse the repository at this point in the history
  • Loading branch information
jpereira committed Jul 5, 2017
1 parent 0a20b93 commit a0bb4c1
Show file tree
Hide file tree
Showing 65 changed files with 319,462 additions and 227 deletions.
24 changes: 24 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
openonload-201606-u1.3
----------------------

Update sfc net driver to v4.10.7.1001

Support for recent Linux kernel versions (4.11)
Support for recent Linux distributions (RHEL 6.9, Debian 9, Ubuntu 17.04)

SF-117344-KI/bug66544: fix MSG_WARM behaviour when called on different socket but same stack as send()
SF-118285-KI/bug66847: check fget() result in epoll calls to avoid NULL dereference
SF-117911-KI/bug67477: retain original security context after allocating packet buffers
SF-117847-KI/bug68310: improve TCP_CORK behaviour when option is removed with fragmented send queue
SF-117847-KI/bug68640: ensure setting TCP_NODELAY while TCP_CORK in use results in flush of pending packet
SF-118230-KI/bug68653: avoid crash in onload_iptables
SF-118033-KI/bug69492: fix leak of syn-recv socket state and state corruption when failing to allocate internal state
SF-118296-KI/bug69764: fix detection and handling of non-Ethernet interfaces, e.g. IP tunnels.
SF-118224-KI/bug70468: fix close() trampolining with kernel built with CONFIG_HARDENED_USERCOPY
SF-118106-KI/bug70825: fix TCP RTT estimation with ONLOAD_MSG_WARM and no TCP timestamp option
SF-118231-KI/bug71078: avoid possible deadlock between fd handover, setsockopt, and UDP send without bind()
SF-118229-KI/bug71157: TCPDirect could send 1 byte beyond advertised receiver's window
SF-118299-KI:bug71526: correctly detect bonding failure for multicast over VLAN-over-bond interface
bug67748: report error correctly if ONLOAD_MSG_WARM used after connection is broken


openonload-201606-u1.2
----------------------

Expand Down
6 changes: 3 additions & 3 deletions README
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,6 @@ Any questions?


==========
version: openonload-201606-u1.2
revision: 06a15eb5da2e (ool1606-u1-hotfix) openonload-201606-u1.2-rc2
date: Thu Mar 16 10:33:01 GMT 2017
version: openonload-201606-u1.3
revision: cc0b8136197b (ool1606-u1-hotfix) openonload-201606-u1.3
date: Thu 22 Jun 10:29:32 BST 2017
42 changes: 42 additions & 0 deletions ReleaseNotes
Original file line number Diff line number Diff line change
@@ -1,3 +1,45 @@
OpenOnload-201606-u1.3
======================

This is a minor update release to OpenOnload201606-u1.2 containing a
number of important bug fixes, an updated net driver, and support for
recent Linux kernels and enterprise distributions.

Please see the ChangeLog for a list of bugs fixed.

Testing for this release has included the current beta version of
RHEL7.4, and any issues found have been addressed. We therefore
anticipate that it should work with this distribution, but we won't
be able to confirm this until the final version is available.

This release includes support for Linux kernel 4.11. 4.10 kernel
support was added in the previous release. During testing of this
release we have discovered an issue with signal handling of 32 bit
applications running on a 64 bit kernel for kernel versions 4.10 or
later. This is not a regression from the previous release. It will
be addressed in the next update release. Until that is available we
recommend avoiding onloading 32 bit applications that use signals on
Linux kernel versions 4.10 or later.

The Release Notes for OpenOnload-201606-u1.2 are included below.
For more details see the TCPDirect User Guide and Onload User Guide.

Linux distribution support
--------------------------

This package is supported on:
- Red Hat Enterprise Linux 6.7 - 6.8
- Red Hat Enterprise Linux 7.1 - 7.3 (and potentially RHEL7.4)
- SuSE Linux Enterprise Server 11 sp4
- SuSE Linux Enterprise Server 12 sp1 and sp2
- Canonical Ubuntu Server LTS 14.04, 16.04
- Canonical Ubuntu Server 16.10, 17.04
- Debian 7 "Wheezy"
- Debian 8 "Jessie"
- Debian 9 "Stretch"
- Linux kernels 2.6.32 - 4.11


OpenOnload-201606-u1.2
======================

Expand Down
105 changes: 91 additions & 14 deletions ReleaseNotes-sfc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Solarflare 4.X Linux network driver
===================================
Version: 4.10.3.1003
Version: 4.10.7.1000


Overview
Expand All @@ -14,7 +14,7 @@ Supported hardware platforms
The drivers contained in this package support the following Solarflare
adapters:

- Solarflare Flareon [Ultra] Server Adapters:
- Solarflare Server Adapters:
- Solarflare SFN8522 Dual Port SFP+ Server Adapter
- Solarflare SFN8542 Dual Port QSFP+ Server Adapter
- Solarflare SFN7002F Dual Port SFP+ Server Adapter
Expand Down Expand Up @@ -49,7 +49,7 @@ adapters:
- HP Ethernet 10Gb 570FLB Adapter
- HP Ethernet 10Gb 570M Adapter
- HP Ethernet 10Gb 572SFP+ Adapter
- Lenovo SFN7122F 2x10GbE SFP+ Flareon Ultra Adapter
- Lenovo SFN7122F 2x10GbE SFP+ Adapter


Building and installation
Expand All @@ -73,7 +73,7 @@ kernel
Installation of the driver can be confirmed by typing:
modinfo sfc | grep version
and checking for the line:
version: 4.10.0.1012
version: 4.10.7.1000

All network interfaces available on the system can be found with:
ifconfig -a
Expand All @@ -97,19 +97,18 @@ Linux distribution support for Solarflare Adapters
--------------------------------------------------

This driver package is supported on:
- RedHat Enterprise Linux 5.10, 5.11
- RedHat Enterprise Linux 6.5, 6.6, 6.7, 6.8
- RedHat Enterprise Linux 6.7, 6.8, 6.9
- Redhat Messaging Realtime and Grid 2.5
- RedHat Enterprise Linux 7.0, 7.1, 7.2
- RedHat Enterprise Linux for Realtime 7.1, 7.2
- RedHat Enterprise Linux 7.2, 7.3, 7.4
- RedHat Enterprise Linux for Realtime 7.2 7.3
- SuSE Linux Enterprise Server 11 sp3, sp4
- SuSE Linux Enterprise RealTime Extension 11
- SuSE Linux Enterprise Server 12 base release, sp1
- SuSE Linux Enterprise Server 12 sp2, sp3
- Canonical Ubuntu Server LTS 14.04, 16.04
- Canonical Ubuntu Server -
- Debian 7 "Wheezy" 7.X
- Debian 8 "Jessie" 8.X
- Linux 2.6.18 to 4.9-rc1
- Linux 2.6.18 to 4.11


This driver has been tested as a VF driver using KVM / ESXi 5.5 and ESXi 6.0
Expand Down Expand Up @@ -326,6 +325,45 @@ Issue 50868:
Changelog
---------

### v4.10.7.1000 -- Update release to match EO5 release
[General changes]
~ Kernel compatibility for RHEL 7.4
~ Change to newer API to avoid the following deprecation warning:
hwmon_device_register() is deprecated.
Please convert the driver to use hwmon_device_register_with_info().
~ Expose the sfc_pps work queue in sysfs so that CPU affinity can be
controlled.


### v4.10.6.1002 -- Update release (SF17.1)
[General changes]:
~ Kernel compatibility extended to Linux 4.11.
~ Adjust to core networking busy polling support available in Linux 4.11.

[XDP preview]
~ Preview of RX side XDP support.
~ This allows for RX filtering to use the DROP target and for RX packet
modification (e.g. decapsulation).
~ Additionally header expansion is supported (e.g. encapsulation).

Issue 69569:
~ Fix timestamp being 1s behind if the minor nanosecond timestamp happened to
be exactly on 0.


### v4.10.4.1005 -- GA release to match openonload-201606-u1.2
[General changes]
~ Kernel compatability extended to Linux 4.10.

Issue 68158:
~ Fix driver build without PTP support.

Issue 67994:
~ Fix for pps_get_ts() only returning microsecond resolution with RHEL 7.2.
~ (Note this did not affect other RHEL 7.X releases).
~ This would affect the PTP convergence accuracy that is achieved.


### v4.10.4.1000 -- GA release for ESXi adding support for SFN8542 adapters.
[General VMware ESXi 5.5, 6.0 and 6.5 support]
~ GA support for ESXi and SFN8542 Solarflare adapters.
Expand Down Expand Up @@ -405,13 +443,15 @@ Support for stateless checksum offloads for NVGRE,VXLAN,GENEVE encapsulation on
SFN8XXX adapters is still considered a BETA at this time.

[General changes]
~ Add support for "ethtool -C stats-block-usecs".
Default is 1 sec, but this can be reduced in order to accurately sample every
second from a script
~ Fail gracefully when PCIe BARs are unassigned (better detection of BIOS
issues which have been seen after a PCI bus rescan).
~ Add support for software TX timestamping.

[SFN8000 series support]
~ Add support for "ethtool -C stats-block-usecs".
Default is 1 sec, but this can be reduced in order to accurately sample every
second from a script.

[overlays support]
~ Add encap TNI to debugfs filter dump.
~ Set UDP tunnel port list (for GENEVE and VxLAN) on driver load. This may
Expand Down Expand Up @@ -582,6 +622,43 @@ Issue 60796:
~ Fix efx_mcdi_acquire_sync() returning -ETIMEDOUT on impolite unplug.


### v4.7.0.1046 -- Update release for EOL 3

Please note that network interface names may change across this driver update.
See issue 64065 below.

[General changes]
~ Build fixes for linux 4.10 kernels.
~ Build fixes for RHEL 7.4 kernels.
~ Provide an option to place external network port PHY into power down when the
network interface is administratively down. This means the link partner also
sees link down. Currently this is controlled via an ethtool private flag:
- To enable/disable:
ethtool --set-priv-flags DEVNAME phy-power-follows-link (on|off)
- To show current state:
ethtool --show-priv-flags DEVNAME

[SFN8522 support]
~ Support IPv6 flow-steering in ethtool rxnfc API (still needs support in
ethtool)
~ Support encap-over-IPv6 in ethtool n-tuple API (still needs support in
ethtool)

Issue 69569:
~ Fix timestamp being 1s behind if the minor nanosecond timestamp happened to
be exactly on 0.

Issue 67994:
~ Fix for pps_get_ts() only returning microsecond resolution with RHEL 7.2.
~ (Note this did not affect other RHEL 7.X releases).
~ This would affect the PTP convergence accuracy that is achieved.

Issue 64065:
~ Stop setting dev_port and instead implement get_phys_port_id for PFs. This
makes network interface names assigned by systemd more consistent with other
network drivers e.g. enp130s0f1d1 becomes enp130s0f1.


### v4.7.0.1035 -- Update release

[General changes]
Expand Down Expand Up @@ -1776,5 +1853,5 @@ Issue 19951

Copyright
---------
Copyright 2009-2016 Solarflare Communications Inc. All rights reserved.
Copyright 2009-2017 Solarflare Communications Inc. All rights reserved.
Use is subject to license terms.
Binary file modified prebuilt/gnu/lib/cplane/debug/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu/lib/cplane/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu_ppc32/lib/cplane/debug/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu_ppc32/lib/cplane/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu_ppc64/lib/cplane/debug/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu_ppc64/lib/cplane/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/lib/cplane/debug/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/lib/cplane/libocplane0.a
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/lib/zf/debug/libonload_zf.so.1.1.1
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/lib/zf/debug/libonload_zf_static.a
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/lib/zf/libonload_zf.so.1.1.1
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/lib/zf/libonload_zf_static.a
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/tools/zf/debug/zf_stackdump
Binary file not shown.
Binary file modified prebuilt/gnu_x86_64/tools/zf/zf_stackdump
Binary file not shown.
Binary file modified prebuilt/i686_linux/lib/cplane/debug/lib.a
Binary file not shown.
Binary file modified prebuilt/i686_linux/lib/cplane/lib.a
Binary file not shown.
Binary file modified prebuilt/ppc64_linux/lib/cplane/debug/lib.a
Binary file not shown.
Binary file modified prebuilt/ppc64_linux/lib/cplane/lib.a
Binary file not shown.
Binary file modified prebuilt/x86_64_linux/lib/cplane/debug/lib.a
Binary file not shown.
Binary file modified prebuilt/x86_64_linux/lib/cplane/lib.a
Binary file not shown.
2 changes: 1 addition & 1 deletion scripts/onload_misc/openonload.spec
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
# support older distros) to update this spec to use kernel modules packaging
# templates.

%define pkgversion 201606-u1.2
%define pkgversion 201606-u1.3

%{!?kernel: %{expand: %%define kernel %%(uname -r)}}
%{!?target_cpu: %{expand: %%define target_cpu %{_host_cpu}}}
Expand Down
8 changes: 8 additions & 0 deletions src/driver/linux_affinity/kernel_compat.sh
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,18 @@ EFRM_HAVE_SK_SLEEP_FUNC symtype sk_sleep include/net/sock.h wait_queue_head_t *(
# when using this to check for HAVE_SET_RESTORE_SIGMASK as well as for
# EFRM_HAVE_SET_RESTORE_SIGMASK.
EFRM_HAVE_SET_RESTORE_SIGMASK symbol set_restore_sigmask include/linux/sched.h
EFRM_HAVE_SET_RESTORE_SIGMASK1 symbol set_restore_sigmask include/linux/sched/signal.h
EFRM_ALLOC_FILE_TAKES_STRUCT_PATH symtype alloc_file include/linux/file.h struct file *(struct path *, fmode_t, const struct file_operations *)
EFRM_ALLOC_FILE_TAKES_CONST_STRUCT_PATH symtype alloc_file include/linux/file.h struct file *(const struct path *, fmode_t, const struct file_operations *)
EFRM_HAVE_PRANDOM_U32 symbol prandom_u32 include/linux/random.h
EFRM_HAVE_NEW_FAULT memtype struct_vm_operations_struct fault include/linux/mm.h int (*)(struct vm_fault *vmf)
EFRM_HAVE_SCHED_TASK_H file include/linux/sched/task.h
EFRM_HAVE_CRED_H file include/linux/cred.h
# TODO move onload-related stuff from net kernel_compat
" | egrep -v -e '^#' -e '^$' | sed 's/[ \t][ \t]*/:/g'
}
Expand Down
9 changes: 8 additions & 1 deletion src/driver/linux_char/mmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,14 @@ static struct page* vm_op_nopage(struct vm_area_struct* vma,


#ifndef EFRM_VMA_HAS_NOPAGE
static int vm_op_fault(struct vm_area_struct *vma, struct vm_fault *vmf) {
static int vm_op_fault(
#ifndef EFRM_HAVE_NEW_FAULT
struct vm_area_struct *vma,
#endif
struct vm_fault *vmf) {
#ifdef EFRM_HAVE_NEW_FAULT
struct vm_area_struct *vma = vmf->vma;
#endif
struct page* ret;

ret = vm_op_nopage(vma, VM_FAULT_ADDRESS(vmf), NULL);
Expand Down
9 changes: 8 additions & 1 deletion src/driver/linux_cplane/char.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,15 @@ static struct page* cicp_vm_op_nopage(struct vm_area_struct* vma,
return pg;
}
#ifndef EFRM_VMA_HAS_NOPAGE
static int cicp_vm_op_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
static int cicp_vm_op_fault(
#ifndef EFRM_HAVE_NEW_FAULT
struct vm_area_struct *vma,
#endif
struct vm_fault *vmf)
{
#ifdef EFRM_HAVE_NEW_FAULT
struct vm_area_struct *vma = vmf->vma;
#endif
vmf->page = cicp_vm_op_nopage(vma, VM_FAULT_ADDRESS(vmf), NULL);
return ( vmf->page == NULL ) ? VM_FAULT_SIGBUS : 0;
}
Expand Down
9 changes: 2 additions & 7 deletions src/driver/linux_cplane/driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -2709,12 +2709,6 @@ cicpos_handle_llap_msg(cicpos_parse_state_t *session, struct nlmsghdr *nlhdr)
ci_assert_gt(rlen, 0);
ci_assert(NULL != ifinfomsg);

/* we are only interested in ethernet interfaces */
if (ifinfomsg->ifi_type != ARPHRD_ETHER &&
ifinfomsg->ifi_type != ARPHRD_LOOPBACK)
{ /*ci_log("Only interested in ethernet interfaces");*/
return 0;
}

attr = (struct rtattr *)IFLA_RTA(ifinfomsg);
add = (nlhdr->nlmsg_type == RTM_NEWLINK);
Expand All @@ -2735,7 +2729,8 @@ cicpos_handle_llap_msg(cicpos_parse_state_t *session, struct nlmsghdr *nlhdr)
break;

case IFLA_ADDRESS:
CI_MAC_ADDR_SET(&mac, RTA_DATA(attr));
if (ifinfomsg->ifi_type == ARPHRD_ETHER)
CI_MAC_ADDR_SET(&mac, RTA_DATA(attr));
break;

case IFLA_IFNAME:
Expand Down
Loading

0 comments on commit a0bb4c1

Please sign in to comment.