All of lore.kernel.org
 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
  2014-04-17 12:14 ` [patch net-next RFC v3 02/10] net: rename netdev_phys_port_id to more generic name Jiri Pirko
                   ` (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
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
     [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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.