Add AVF FDIR for outer L3 header of GTPoGRE tunnel packet.
Only pattern without inner most L3,L4 fields support outer
dst/src ip FDIR. Support TEID and QFI field FDIR for GTPoGRE.

+---------------------------+-----------------------------+
|    Pattern                |     Input Set               |
+---------------------------+-----------------------------+
|eth/ipv4/gre/ipv4/gtpu(/eh)|outer: src/dst ip,teid(,qfi) |
+---------------------------+-----------------------------+
|eth/ipv4/gre/ipv6/gtpu(/eh)|outer: src/dst ip,teid(,qfi) |
+---------------------------+-----------------------------+
|eth/ipv6/gre/ipv4/gtpu(/eh)|outer: src/dst ip,teid(,qfi) |
+---------------------------+-----------------------------+
|eth/ipv6/gre/ipv6/gtpu(/eh)|outer: src/dst ip,teid(,qfi) |
+---------------------------+-----------------------------+

Signed-off-by: Lingyu Liu <lingyu....@intel.com>
---
 drivers/net/iavf/iavf_fdir.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c
index 935ac50cab..f9b89de635 100644
--- a/drivers/net/iavf/iavf_fdir.c
+++ b/drivers/net/iavf/iavf_fdir.c
@@ -193,48 +193,56 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] 
= {
        {iavf_pattern_eth_ipv4_gtpu_eh_ipv6,     IAVF_FDIR_INSET_GTPU_IPV6,     
IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp, IAVF_FDIR_INSET_GTPU_IPV6_UDP, 
IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp, IAVF_FDIR_INSET_GTPU_IPV6_TCP, 
IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv4_gre_ipv4_gtpu,            
IAVF_FDIR_INSET_IPV4_GTPU,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_ipv4,       
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_ipv4_udp,   
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_ipv4_tcp,   
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_ipv6,       
IAVF_FDIR_INSET_GTPU_IPV6,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_ipv6_udp,   
IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_ipv6_tcp,   
IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv4_gre_ipv6_gtpu,            
IAVF_FDIR_INSET_IPV6_GTPU,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_ipv4,       
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_ipv4_udp,   
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_ipv4_tcp,   
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_ipv6,       
IAVF_FDIR_INSET_GTPU_IPV6,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_ipv6_udp,   
IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_ipv6_tcp,   
IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv6_gre_ipv4_gtpu,            
IAVF_FDIR_INSET_IPV4_GTPU,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_ipv4,       
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_ipv4_udp,   
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_ipv4_tcp,   
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_ipv6,       
IAVF_FDIR_INSET_GTPU_IPV6,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_ipv6_udp,   
IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_ipv6_tcp,   
IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv6_gre_ipv6_gtpu,            
IAVF_FDIR_INSET_IPV6_GTPU,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_ipv4,       
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_ipv4_udp,   
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_ipv4_tcp,   
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_ipv6,       
IAVF_FDIR_INSET_GTPU_IPV6,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_ipv6_udp,   
IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_ipv6_tcp,   
IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_eh,                 
IAVF_FDIR_INSET_IPV4_GTPU_EH,  IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_eh_ipv4,            
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_eh_ipv4_udp,        
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_eh_ipv4_tcp,        
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_eh_ipv6,            
IAVF_FDIR_INSET_GTPU_IPV6,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_eh_ipv6_udp,        
IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv4_gtpu_eh_ipv6_tcp,        
IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_eh,                 
IAVF_FDIR_INSET_IPV6_GTPU_EH,  IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_eh_ipv4,            
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_eh_ipv4_udp,        
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_eh_ipv4_tcp,        
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_eh_ipv6,            
IAVF_FDIR_INSET_GTPU_IPV6,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_eh_ipv6_udp,        
IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv4_gre_ipv6_gtpu_eh_ipv6_tcp,        
IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_eh,                 
IAVF_FDIR_INSET_IPV4_GTPU_EH,  IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_eh_ipv4,            
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_eh_ipv4_udp,        
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_eh_ipv4_tcp,        
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_eh_ipv6,            
IAVF_FDIR_INSET_GTPU_IPV6,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_eh_ipv6_udp,        
IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv4_gtpu_eh_ipv6_tcp,        
IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE},
+       {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_eh,                 
IAVF_FDIR_INSET_IPV6_GTPU_EH,  IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_eh_ipv4,            
IAVF_FDIR_INSET_GTPU_IPV4,     IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_eh_ipv4_udp,        
IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE},
        {iavf_pattern_eth_ipv6_gre_ipv6_gtpu_eh_ipv4_tcp,        
IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE},
-- 
2.25.1

Reply via email to