netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch net-next RFC v3 00/10] introduce infrastructure for support of switch chip datapath
@ 2014-04-17 12:14 Jiri Pirko
       [not found] ` <1397736876-11771-1-git-send-email-jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org>
                   ` (6 more replies)
  0 siblings, 7 replies; 24+ messages in thread
From: Jiri Pirko @ 2014-04-17 12:14 UTC (permalink / raw)
  To: netdev
  Cc: davem, nhorman, andy, tgraf, dborkman, ogerlitz, jesse, pshelar,
	azhou, ben, stephen, jeffrey.t.kirsher, vyasevic, xiyou.wangcong,
	john.r.fastabend, edumazet, jhs, sfeldma, f.fainelli, roopa,
	linville, dev, jasowang, ebiederm, nicolas.dichtel, ryazanov.s.a,
	buytenh, aviadr, nbd, alexei.starovoitov, Neil.Jerram

The basic idea is to introduce a generic infractructure to support various
switch chips in kernel.

The current patchset RFC is a heavy rework of the previous ones. The goal is to
be low-intrusive and to use as much as possible from the existing
infrastructure.

Also the idea is to benefit from currently existing Open vSwitch userspace
infrastructure prividing a HW offload for it. Note that this is just one
usecase. Other sw*dev_ndos can be easily added to support many more usecases,

Please see Documentation/networking/switchdev.txt for more details about
the model.

Next step would be to introduce a flag via which OVS userspace could tell if the
flow should be inserted in HW or just in the SW datapath. That would extend current
2 level cashing (kernel, userspace) to 3 level (hw, kernel, userspace).

Next step would be to improve internal kernel notifiers and introduce a listener
which would call sw*dev_ndos to setup the switch according to what the user
wants. This would allow a usecase then a user configures bridges, bonds, etc and
the switch chip underneath gets configured by that.

Any suggestions, feedbacks welcome.

Jiri Pirko (10):
  openvswitch: split flow structures into ovs specific and generic ones
  net: rename netdev_phys_port_id to more generic name
  net: introduce generic switch devices support
  rtnl: expose physical switch id for particular device
  switchdev: introduce basic support for flows
  net: introduce dummy switch
  dsa: implement ndo_swdev_get_id
  net: add netdev_for_each_all_lower_dev_rcu helper
  openvswitch: introduce vport_op get_netdev
  openvswitch: add support for datapath hardware offload

 Documentation/networking/switchdev.txt           |  53 +++++++
 drivers/net/Kconfig                              |   7 +
 drivers/net/Makefile                             |   1 +
 drivers/net/dummyswitch.c                        | 126 +++++++++++++++++
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c |   2 +-
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c   |   2 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c |   2 +-
 include/linux/netdevice.h                        |  74 ++++++++--
 include/linux/sw_flow.h                          | 122 ++++++++++++++++
 include/linux/switchdev.h                        |  55 ++++++++
 include/uapi/linux/if_link.h                     |  10 ++
 net/Kconfig                                      |   6 +
 net/core/Makefile                                |   1 +
 net/core/dev.c                                   |  28 ++--
 net/core/net-sysfs.c                             |   2 +-
 net/core/rtnetlink.c                             |  30 +++-
 net/core/switchdev.c                             |  90 ++++++++++++
 net/dsa/slave.c                                  |  16 +++
 net/openvswitch/Makefile                         |   3 +-
 net/openvswitch/datapath.c                       |  63 +++++----
 net/openvswitch/datapath.h                       |   4 +-
 net/openvswitch/dp_notify.c                      |   7 +-
 net/openvswitch/flow.c                           |  14 +-
 net/openvswitch/flow.h                           | 123 ++++------------
 net/openvswitch/flow_netlink.c                   |  24 ++--
 net/openvswitch/flow_netlink.h                   |   4 +-
 net/openvswitch/flow_table.c                     | 100 ++++++-------
 net/openvswitch/flow_table.h                     |  18 +--
 net/openvswitch/hw_offload.c                     | 170 +++++++++++++++++++++++
 net/openvswitch/hw_offload.h                     |  31 +++++
 net/openvswitch/vport-gre.c                      |   4 +-
 net/openvswitch/vport-internal_dev.c             |  53 ++++---
 net/openvswitch/vport-netdev.c                   |  16 +++
 net/openvswitch/vport-netdev.h                   |  12 --
 net/openvswitch/vport-vxlan.c                    |   2 +-
 net/openvswitch/vport.c                          |   2 +-
 net/openvswitch/vport.h                          |   4 +-
 37 files changed, 1004 insertions(+), 277 deletions(-)
 create mode 100644 Documentation/networking/switchdev.txt
 create mode 100644 drivers/net/dummyswitch.c
 create mode 100644 include/linux/sw_flow.h
 create mode 100644 include/linux/switchdev.h
 create mode 100644 net/core/switchdev.c
 create mode 100644 net/openvswitch/hw_offload.c
 create mode 100644 net/openvswitch/hw_offload.h

-- 
1.9.0

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2014-04-24 15:58 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-17 12:14 [patch net-next RFC v3 00/10] introduce infrastructure for support of switch chip datapath Jiri Pirko
     [not found] ` <1397736876-11771-1-git-send-email-jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org>
2014-04-17 12:14   ` [patch net-next RFC v3 01/10] openvswitch: split flow structures into ovs specific and generic ones Jiri Pirko
2014-04-17 12:14   ` [patch net-next RFC v3 06/10] net: introduce dummy switch Jiri Pirko
2014-04-17 12:14   ` [patch net-next RFC v3 08/10] net: add netdev_for_each_all_lower_dev_rcu helper Jiri Pirko
2014-04-17 12:15   ` [patch net-next RFC v3 10/10] openvswitch: add support for datapath hardware offload Jiri Pirko
     [not found]     ` <1397736938-11838-1-git-send-email-jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org>
2014-04-24 14:54       ` John Fastabend
     [not found]         ` <5359259B.3020402-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-04-24 15:46           ` Jiri Pirko
     [not found]             ` <20140424154614.GB2864-RDzucLLXGGI88b5SBfVpbw@public.gmane.org>
2014-04-24 15:58               ` John Fastabend
2014-04-17 12:17   ` [patch net-next RFC v3 0/5] iproute2: support switch chip infrastructure Jiri Pirko
     [not found]     ` <1397737053-11892-1-git-send-email-jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org>
2014-04-17 12:17       ` [patch iproute2 RFC v3 1/5] iproute2: arpd: use ll_addr_a2n and ll_addr_n2a Jiri Pirko
2014-04-17 12:17       ` [patch iproute2 RFC v3 2/5] iproute2: utils: change hexstring_n2a and hexstring_a2n to do not work with ":" Jiri Pirko
2014-04-17 12:17       ` [patch iproute2 RFC v3 3/5] iproute2: ipa: show switch id Jiri Pirko
2014-04-17 12:17       ` [patch iproute2 RFC v3 4/5] iproute2: add support for dummyswport Jiri Pirko
2014-04-17 13:19         ` Nicolas Dichtel
2014-04-17 12:17       ` [patch iproute2 RFC v3 5/5] iproute2: ipa: show port id Jiri Pirko
2014-04-17 12:14 ` [patch net-next RFC v3 02/10] net: rename netdev_phys_port_id to more generic name Jiri Pirko
     [not found]   ` <1397736876-11771-3-git-send-email-jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org>
2014-04-17 15:01     ` Stephen Hemminger
     [not found]       ` <20140417080110.73485409-We1ePj4FEcvRI77zikRAJc56i+j3xesD0e7PPNI6Mm0@public.gmane.org>
2014-04-17 15:05         ` Jiri Pirko
2014-04-17 12:14 ` [patch net-next RFC v3 03/10] net: introduce generic switch devices support Jiri Pirko
2014-04-17 12:14 ` [patch net-next RFC v3 04/10] rtnl: expose physical switch id for particular device Jiri Pirko
2014-04-17 12:40   ` Yegor Yefremov
2014-04-17 12:14 ` [patch net-next RFC v3 05/10] switchdev: introduce basic support for flows Jiri Pirko
2014-04-17 12:14 ` [patch net-next RFC v3 07/10] dsa: implement ndo_swdev_get_id Jiri Pirko
2014-04-17 12:14 ` [patch net-next RFC v3 09/10] openvswitch: introduce vport_op get_netdev Jiri Pirko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).