• Vlad Buslov's avatar
    net/mlx5e: VF tunnel RX traffic offloading · a508728a
    Vlad Buslov authored
    When tunnel endpoint is on VF the encapsulated RX traffic is exposed on the
    representor of the VF without any further processing of rules installed on
    the VF. Detect such case by checking if the device returned by route lookup
    in decap rule handling code is a mlx5 VF and handle it with new redirection
    tables API.
    
    Example TC rules for VF tunnel traffic:
    
    1. Rule that encapsulates the tunneled flow and redirects packets from
    source VF rep to tunnel device:
    
    $ tc -s filter show dev enp8s0f0_1 ingress
    filter protocol ip pref 4 flower chain 0
    filter protocol ip pref 4 flower chain 0 handle 0x1
      dst_mac 0a:40:bd:30:89:99
      src_mac ca:2e:a7:3f:f5:0f
      eth_type ipv4
      ip_tos 0/0x3
      ip_flags nofrag
      in_hw in_hw_count 1
            action order 1: tunnel_key  set
            src_ip 7.7.7.5
            dst_ip 7.7.7.1
            key_id 98
            dst_port 4789
            nocsum
            ttl 64 pipe
             index 1 ref 1 bind 1 installed 411 sec used 411 sec
            Action statistics:
            Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
            backlog 0b 0p requeues 0
            no_percpu
            used_hw_stats delayed
    
            action order 2: mirred (Egress Redirect to device vxlan_sys_4789) stolen
            index 1 ref 1 bind 1 installed 411 sec used 0 sec
            Action statistics:
            Sent 5615833 bytes 4028 pkt (dropped 0, overlimits 0 requeues 0)
            Sent software 0 bytes 0 pkt
            Sent hardware 5615833 bytes 4028 pkt
            backlog 0b 0p requeues 0
            cookie bb406d45d343bf7ade9690ae80c7cba4
            no_percpu
            used_hw_stats delayed
    
    2. Rule that redirects from tunnel device to UL rep:
    
    $ tc -s filter show dev vxlan_sys_4789 ingress
    filter protocol ip pref 4 flower chain 0
    filter protocol ip pref 4 flower chain 0 handle 0x1
      dst_mac ca:2e:a7:3f:f5:0f
      src_mac 0a:40:bd:30:89:99
      eth_type ipv4
      enc_dst_ip 7.7.7.5
      enc_src_ip 7.7.7.1
      enc_key_id 98
      enc_dst_port 4789
      enc_tos 0
      ip_flags nofrag
      in_hw in_hw_count 1
            action order 1: tunnel_key  unset pipe
             index 2 ref 1 bind 1 installed 434 sec used 434 sec
            Action statistics:
            Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
            backlog 0b 0p requeues 0
            used_hw_stats delayed
    
            action order 2: mirred (Egress Redirect to device enp8s0f0_1) stolen
            index 4 ref 1 bind 1 installed 434 sec used 0 sec
            Action statistics:
            Sent 129936 bytes 1082 pkt (dropped 0, overlimits 0 requeues 0)
            Sent software 0 bytes 0 pkt
            Sent hardware 129936 bytes 1082 pkt
            backlog 0b 0p requeues 0
            cookie ac17cf398c4c69e4a5b2f7aabd1b88ff
            no_percpu
            used_hw_stats delayed
    Co-developed-by: default avatarDmytro Linkin <dlinkin@nvidia.com>
    Signed-off-by: default avatarDmytro Linkin <dlinkin@nvidia.com>
    Signed-off-by: default avatarVlad Buslov <vladbu@nvidia.com>
    Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
    a508728a
tc_tun.c 20.4 KB