Go to file
David S. Miller 38b9e0f6d9 mlx5-updates-2019-08-09
This series includes update to mlx5 ethernet and core driver:
 
 In first #11 patches, Vlad submits part 2 of 3 part series to allow
 TC flow handling for concurrent execution.
 
 1) TC flow handling for concurrent execution (part 2)
 
 Vald Says:
 ==========
 
 Refactor data structures that are shared between flows in tc.
 Currently, all cls API hardware offloads driver callbacks require caller
 to hold rtnl lock when calling them. Cls API has already been updated to
 update software filters in parallel (on classifiers that support
 unlocked execution), however hardware offloads code still obtains rtnl
 lock before calling driver tc callbacks. This set implements support for
 unlocked execution of tc hairpin, mod_hdr and encap subsystem. The
 changed implemented in these subsystems are very similar in general.
 
 The main difference is that hairpin is accessed through mlx5e_tc_table
 (legacy mode), mod_hdr is accessed through both mlx5e_tc_table and
 mlx5_esw_offload (legacy and switchdev modes) and encap is only accessed
 through mlx5_esw_offload (switchdev mode).
 
 1.1) Hairpin handling and structure mlx5e_hairpin_entry refactored in
 following way:
 
 - Hairpin structure is extended with atomic reference counter. This
   approach allows to lookup of hairpin entry and obtain reference to it
   with hairpin_tbl_lock protection and then continue using the entry
   unlocked (including provisioning to hardware).
 
 - To support unlocked provisioning of hairpin entry to hardware, the entry
   is extended with 'res_ready' completion and is inserted to hairpin_tbl
   before calling the firmware. With this approach any concurrent users that
   attempt to use the same hairpin entry wait for completion first to
   prevent access to entries that are not fully initialized.
 
 - Hairpin entry is extended with new flows_lock spinlock to protect the
   list when multiple concurrent tc instances update flows attached to
   the same hairpin entry.
 
 1.2) Modify header handling code and structure mlx5e_mod_hdr_entry
 are refactored in the following way:
 
 - Mod_hdr structure is extended with atomic reference counter. This
   approach allows to lookup of mod_hdr entry and obtain reference to it
   with mod_hdr_tbl_lock protection and then continue using the entry
   unlocked (including provisioning to hardware).
 
 - To support unlocked provisioning of mod_hdr entry to hardware, the entry
   is extended with 'res_ready' completion and is inserted to mod_hdr_tbl
   before calling the firmware. With this approach any concurrent users that
   attempt to use the same mod_hdr entry wait for completion first to
   prevent access to entries that are not fully initialized.
 
 - Mod_Hdr entry is extended with new flows_lock spinlock to protect the
   list when multiple concurrent tc instances update flows attached to
   the same mod_hdr entry.
 
 1.3) Encapsulation handling code and Structure mlx5e_encap_entry
 are refactored in the following way:
 
 - encap structure is extended with atomic reference counter. This
   approach allows to lookup of encap entry and obtain reference to it
   with encap_tbl_lock protection and then continue using the entry
   unlocked (including provisioning to hardware).
 
 - To support unlocked provisioning of encap entry to hardware, the entry is
   extended with 'res_ready' completion and is inserted to encap_tbl before
   calling the firmware. With this approach any concurrent users that
   attempt to use the same encap entry wait for completion first to prevent
   access to entries that are not fully initialized.
 
 - As a difference from approach used to refactor hairpin and mod_hdr,
   encap entry is not extended with any per-entry fine-grained lock.
   Instead, encap_table_lock is used to synchronize all operations on
   encap table and instances of mlx5e_encap_entry. This is necessary
   because single flow can be attached to multiple encap entries
   simultaneously. During new flow creation or neigh update event all of
   encaps that flow is attached to must be accessed together as in atomic
   manner, which makes usage of per-entry lock infeasible.
 
 - Encap entry is extended with new flows_lock spinlock to protect the
   list when multiple concurrent tc instances update flows attached to
   the same encap entry.
 
 ==========
 
 3) Parav improves the way port representors report their parent ID and
 port index.
 
 4) Use refcount_t for refcount in vxlan data base from  Chuhong Yuan
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEGhZs6bAKwk/OTgTpSD+KveBX+j4FAl1N64MACgkQSD+KveBX
 +j4iZAf/cXbX7B6QamcslzKR0HXUWeFBxj+6xrohlB4g4jAr62FbcNWbNyho26Fy
 ePZB5J2P2yujR7a7aDpGwPUFw42kRzmg0uvKVGW95459hVwx7fXaOWX8b9qfF9DK
 KJdvxw5s/b92qFMXUp/0mUGOD7Md0Q1Dy07rL0T6mgQGp9iKfennhtgGPBjtEkec
 Y8BLtRB4ZX3X16sSEj0Zm3h7IojqXT/0mqqKXoXM2N+kGTmXWAcCTeFdAUh31BMf
 ddlgEJu9t2OtLjg0iVKiUKE4r52LjdlJTsnRM0SkkUPSzS/+vI8iUUgF8X/XoqNG
 PtncRsSOGiWl2EU2Tb4m5v3obIanfA==
 =HzrJ
 -----END PGP SIGNATURE-----

Merge tag 'mlx5-updates-2019-08-09' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux

Saeed Mahameed says:

====================
mlx5-updates-2019-08-09

This series includes update to mlx5 ethernet and core driver:

In first #11 patches, Vlad submits part 2 of 3 part series to allow
TC flow handling for concurrent execution.

1) TC flow handling for concurrent execution (part 2)

Vald Says:
==========

Refactor data structures that are shared between flows in tc.
Currently, all cls API hardware offloads driver callbacks require caller
to hold rtnl lock when calling them. Cls API has already been updated to
update software filters in parallel (on classifiers that support
unlocked execution), however hardware offloads code still obtains rtnl
lock before calling driver tc callbacks. This set implements support for
unlocked execution of tc hairpin, mod_hdr and encap subsystem. The
changed implemented in these subsystems are very similar in general.

The main difference is that hairpin is accessed through mlx5e_tc_table
(legacy mode), mod_hdr is accessed through both mlx5e_tc_table and
mlx5_esw_offload (legacy and switchdev modes) and encap is only accessed
through mlx5_esw_offload (switchdev mode).

1.1) Hairpin handling and structure mlx5e_hairpin_entry refactored in
following way:

- Hairpin structure is extended with atomic reference counter. This
  approach allows to lookup of hairpin entry and obtain reference to it
  with hairpin_tbl_lock protection and then continue using the entry
  unlocked (including provisioning to hardware).

- To support unlocked provisioning of hairpin entry to hardware, the entry
  is extended with 'res_ready' completion and is inserted to hairpin_tbl
  before calling the firmware. With this approach any concurrent users that
  attempt to use the same hairpin entry wait for completion first to
  prevent access to entries that are not fully initialized.

- Hairpin entry is extended with new flows_lock spinlock to protect the
  list when multiple concurrent tc instances update flows attached to
  the same hairpin entry.

1.2) Modify header handling code and structure mlx5e_mod_hdr_entry
are refactored in the following way:

- Mod_hdr structure is extended with atomic reference counter. This
  approach allows to lookup of mod_hdr entry and obtain reference to it
  with mod_hdr_tbl_lock protection and then continue using the entry
  unlocked (including provisioning to hardware).

- To support unlocked provisioning of mod_hdr entry to hardware, the entry
  is extended with 'res_ready' completion and is inserted to mod_hdr_tbl
  before calling the firmware. With this approach any concurrent users that
  attempt to use the same mod_hdr entry wait for completion first to
  prevent access to entries that are not fully initialized.

- Mod_Hdr entry is extended with new flows_lock spinlock to protect the
  list when multiple concurrent tc instances update flows attached to
  the same mod_hdr entry.

1.3) Encapsulation handling code and Structure mlx5e_encap_entry
are refactored in the following way:

- encap structure is extended with atomic reference counter. This
  approach allows to lookup of encap entry and obtain reference to it
  with encap_tbl_lock protection and then continue using the entry
  unlocked (including provisioning to hardware).

- To support unlocked provisioning of encap entry to hardware, the entry is
  extended with 'res_ready' completion and is inserted to encap_tbl before
  calling the firmware. With this approach any concurrent users that
  attempt to use the same encap entry wait for completion first to prevent
  access to entries that are not fully initialized.

- As a difference from approach used to refactor hairpin and mod_hdr,
  encap entry is not extended with any per-entry fine-grained lock.
  Instead, encap_table_lock is used to synchronize all operations on
  encap table and instances of mlx5e_encap_entry. This is necessary
  because single flow can be attached to multiple encap entries
  simultaneously. During new flow creation or neigh update event all of
  encaps that flow is attached to must be accessed together as in atomic
  manner, which makes usage of per-entry lock infeasible.

- Encap entry is extended with new flows_lock spinlock to protect the
  list when multiple concurrent tc instances update flows attached to
  the same encap entry.

==========

3) Parav improves the way port representors report their parent ID and
port index.

4) Use refcount_t for refcount in vxlan data base from  Chuhong Yuan
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
2019-08-09 20:11:19 -07:00
Documentation tcp: add new tcp_mtu_probe_floor sysctl 2019-08-09 13:03:30 -07:00
LICENSES LICENSES: Rename other to deprecated 2019-05-03 06:34:32 -06:00
arch Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 18:44:57 -07:00
block for-linus-20190726-2 2019-07-26 19:20:34 -07:00
certs Revert "Merge tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs" 2019-07-10 18:43:43 -07:00
crypto USB / PHY patches for 5.3-rc1 2019-07-11 15:40:06 -07:00
drivers mlx5-updates-2019-08-09 2019-08-09 20:11:19 -07:00
fs Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 17:11:59 -07:00
include net/mlx5: E-switch, Removed unused hwid 2019-08-09 14:54:10 -07:00
init Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2019-07-19 10:42:02 -07:00
ipc Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2019-07-19 10:42:02 -07:00
kernel Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 17:11:59 -07:00
lib Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 17:11:59 -07:00
mm memremap: move from kernel/ to mm/ 2019-08-03 07:02:01 -07:00
net taprio: remove unused variable 'entry_list_policy' 2019-08-09 13:41:24 -07:00
samples treewide: remove SPDX "WITH Linux-syscall-note" from kernel-space headers again 2019-07-25 11:05:10 +02:00
scripts kconfig: Clear "written" flag to avoid data loss 2019-08-04 12:44:15 +09:00
security selinux/stable-5.3 PR 20190801 2019-08-02 18:40:49 -07:00
sound sound fixes for 5.3-rc3 2019-08-02 08:53:34 -07:00
tools tc-testing: added tdc tests for matchall filter 2019-08-09 19:59:13 -07:00
usr kbuild: enable arch/s390/include/uapi/asm/zcrypt.h for uapi header test 2019-07-23 10:45:46 +02:00
virt Documentation: move Documentation/virtual to Documentation/virt 2019-07-24 10:52:11 +02:00
.clang-format Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-04-17 11:26:25 -07:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: set git diff driver for C source code files 2016-10-07 18:46:30 -07:00
.gitignore .gitignore: Add compilation database file 2019-07-27 12:18:19 +09:00
.mailmap MAINTAINERS: Update my email address 2019-07-22 14:57:50 +01:00
COPYING COPYING: use the new text with points to the license files 2018-03-23 12:41:45 -06:00
CREDITS Remove references to dead website. 2019-07-19 12:22:04 -07:00
Kbuild Kbuild updates for v5.1 2019-03-10 17:48:21 -07:00
Kconfig docs: kbuild: convert docs to ReST and rename to *.rst 2019-06-14 14:21:21 -06:00
MAINTAINERS Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 18:44:57 -07:00
Makefile Linux 5.3-rc3 2019-08-04 18:40:12 -07:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.