mbox series

[v1,0/8] use generic flow command to re-realize mirror rule

Message ID 20201014084131.72035-1-simonx.lu@intel.com (mailing list archive)
Headers
Series use generic flow command to re-realize mirror rule |

Message

SimonX Lu Oct. 14, 2020, 8:41 a.m. UTC
  From: Simon Lu <simonx.lu@intel.com>

follow mirror rule to add new action called mirror in flow management,
so we can use "flow create * pattern * action mirror *"  to replace
old "set port * mirror-rule *" command now

the example of mirror rule command mapping to flow management command:
(in below command, port 0 is PF and port 1-3 is VF):

1) ingress: pf => pf
   set port 0 mirror-rule 0 uplink-mirror dst-pool 4 on
   or
   flow create 0 ingress pattern pf / end actions mirror pf / end
2) egress: pf => pf
   set port 0 mirror-rule 0 downlink-mirror dst-pool 4 on
   or
   flow create 0 egress pattern pf / end actions mirror pf / end
3) ingress: pf => vf 3
   set port 0 mirror-rule 0 uplink-mirror dst-pool 3 on
   or
   flow create 0 ingress pattern pf / end actions mirror vf id 3 / end
4) egress: pf => vf 3
   set port 0 mirror-rule 0 downlink-mirror dst-pool 3 on
   or
   flow create 0 egress pattern pf / end actions mirror vf id 3 / end
5) ingress: vf 0,1 => pf
   set port 0 mirror-rule 0 pool-mirror-up 0x3 dst-pool 4 on
   or
   flow create 0 ingress pattern vf id is 0 / end actions mirror pf / end
   flow create 0 ingress pattern vf id is 1 / end actions mirror pf / end
   or
   flow create 0 ingress pattern vf id last 1 / end actions mirror pf / end
   or
   flow create 0 ingress pattern vf id mask 0x3 / end actions mirror pf / end
6) egress: vf 0,1 => pf
   set port 0 mirror-rule 0 pool-mirror-down 0x3 dst-pool 4 on
   or
   flow create 0 egress pattern vf id is 0 / end actions mirror pf / end
   flow create 0 egress pattern vf id is 1 / end actions mirror pf / end
   or
   flow create 0 egress pattern vf id last 1 / end actions mirror pf / end
   or
   flow create 0 egress pattern vf id mask 0x3 / end actions mirror pf / end
7) ingress: vf 1,2 => vf 3
   set port 0 mirror-rule 0 pool-mirror-up 0x6 dst-pool 3 on
   or
   flow create 0 ingress pattern vf id is 1 / end actions mirror vf id 3 / end
   flow create 0 ingress pattern vf id is 2 / end actions mirror vf id 3 / end
   or
   flow create 0 ingress pattern vf id is 1 id last 2 / end actions mirror vf id 3 / end
   or
   flow create 0 ingress pattern vf id mask 0x6 / end actions mirror vf id 3 / end
8) egress: vf 1,2 => vf 3
   set port 0 mirror-rule 0 pool-mirror-down 0x6 dst-pool 3 on
   or
   flow create 0 egress pattern vf id is 1 / end actions mirror vf id 3 / end
   flow create 0 egress pattern vf id is 2 / end actions mirror vf id 3 / end
   or
   flow create 0 egress pattern vf id is 1 id last 2 / end actions mirror vf id 3 / end
   or
   flow create 0 egress pattern vf id mask 0x6 / end actions mirror vf id 3 / end
9) ingress: vlan 4,6 => vf 3
   set port 0 mirror-rule 0 vlan-mirror 4,6 dst-pool 4 on
   or
   flow create 0 ingress pattern vlan vid is 4 / end actions mirror vf id 3 / end
   flow create 0 ingress pattern vlan vid is 6 / end actions mirror vf id 3 end
   or
   flow create 0 ingress pattern vlan vid mask 0x28 / end actions mirror vf id 3 / end
   or
   flow create 0 ingress pattern vlan vid is 4 vid last 6 vid mask 0x5 / end
        actions mirror vf id 3 / end


Simon Lu (8):
  ethdev: support the mirror action for flow
  app/testpmd: support action mirror for flow command
  net/ixgbe: add mirror rule config and extend flow filter type
  net/ixgbe: define the mirror filter paser
  net/ixgbe: use generic flow command to re-realize mirror rule
  net/i40e: add mirror rule config and export add/del rule APIs
  net/i40e: define the mirror filter paser
  net/i40e: use generic flow command to re-realize mirror rule

 app/test-pmd/cmdline_flow.c      |  36 +++
 drivers/net/i40e/i40e_ethdev.c   |  13 +-
 drivers/net/i40e/i40e_ethdev.h   |  34 +++
 drivers/net/i40e/i40e_flow.c     | 416 +++++++++++++++++++++++++++-
 drivers/net/ixgbe/ixgbe_ethdev.c |   8 -
 drivers/net/ixgbe/ixgbe_ethdev.h |  53 +++-
 drivers/net/ixgbe/ixgbe_flow.c   | 456 +++++++++++++++++++++++++++++++
 lib/librte_ethdev/rte_eth_ctrl.h |   1 +
 lib/librte_ethdev/rte_flow.c     |   1 +
 lib/librte_ethdev/rte_flow.h     |   7 +
 10 files changed, 1000 insertions(+), 25 deletions(-)