X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fhinic%2Fhinic_pmd_ethdev.h;h=70b4d32ff2ff99a1bbf9a3a56f00d4d5a6065af7;hb=76fd789cc7dddbaa2c08065b7c3ca915b5c07e7c;hp=d67e2161c1d0dd86b91e4d0f4a989cddc4864728;hpb=1fe89aa37f368722c882a4bdd2f8a427761255a5;p=dpdk.git diff --git a/drivers/net/hinic/hinic_pmd_ethdev.h b/drivers/net/hinic/hinic_pmd_ethdev.h index d67e2161c1..70b4d32ff2 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.h +++ b/drivers/net/hinic/hinic_pmd_ethdev.h @@ -7,6 +7,7 @@ #include #include +#include #include "base/hinic_compat.h" #include "base/hinic_pmd_cfg.h" @@ -53,11 +54,13 @@ struct hinic_5tuple_filter_info { * used when more than one filter matches. */ uint8_t priority; - uint8_t dst_ip_mask:1, /* if mask is 1b, do not compare dst ip. */ - src_ip_mask:1, /* if mask is 1b, do not compare src ip. */ - dst_port_mask:1, /* if mask is 1b, do not compare dst port. */ - src_port_mask:1, /* if mask is 1b, do not compare src port. */ - proto_mask:1; /* if mask is 1b, do not compare protocol. */ + + /* if mask is 1b, do not compare the response bit domain */ + uint8_t dst_ip_mask:1, + src_ip_mask:1, + dst_port_mask:1, + src_port_mask:1, + proto_mask:1; }; /* 5tuple filter structure */ @@ -99,6 +102,7 @@ struct hinic_hw_fdir_mask { uint16_t tunnel_flag; uint16_t tunnel_inner_src_port_mask; uint16_t tunnel_inner_dst_port_mask; + uint16_t dst_ipv6_mask; }; /* Flow Director attribute */ @@ -111,6 +115,7 @@ struct hinic_atr_input { uint16_t tunnel_flag; uint16_t tunnel_inner_src_port; uint16_t tunnel_inner_dst_port; + uint8_t dst_ipv6[16]; }; enum hinic_fdir_mode { @@ -191,9 +196,60 @@ struct tag_tcam_key_mem { #endif }; +struct tag_tcam_key_ipv6_mem { +#if (RTE_BYTE_ORDER == RTE_BIG_ENDIAN) + u32 rsvd0:16; + u32 ipv6_flag:1; + u32 protocol:7; + u32 function_id:8; + + u32 dst_port:16; + u32 ipv6_key0:16; + + u32 ipv6_key1:16; + u32 ipv6_key2:16; + + u32 ipv6_key3:16; + u32 ipv6_key4:16; + + u32 ipv6_key5:16; + u32 ipv6_key6:16; + + u32 ipv6_key7:16; + u32 rsvd2:16; +#else + u32 function_id:8; + u32 protocol:7; + u32 ipv6_flag:1; + u32 rsvd0:16; + + u32 ipv6_key0:16; + u32 dst_port:16; + + u32 ipv6_key2:16; + u32 ipv6_key1:16; + + u32 ipv6_key4:16; + u32 ipv6_key3:16; + + u32 ipv6_key6:16; + u32 ipv6_key5:16; + + u32 rsvd2:16; + u32 ipv6_key7:16; +#endif +}; + struct tag_tcam_key { - struct tag_tcam_key_mem key_info; - struct tag_tcam_key_mem key_mask; + union { + struct tag_tcam_key_mem key_info; + struct tag_tcam_key_ipv6_mem key_info_ipv6; + }; + + union { + struct tag_tcam_key_mem key_mask; + struct tag_tcam_key_ipv6_mem key_mask_ipv6; + }; }; struct hinic_fdir_rule { @@ -263,6 +319,9 @@ struct hinic_nic_dev { u8 num_rss; u8 rx_queue_list[HINIC_MAX_RX_QUEUES]; + bool pause_set; + struct nic_pause_config nic_pause; + u32 vfta[HINIC_VFTA_SIZE]; /* VLAN bitmap */ struct rte_ether_addr default_addr; @@ -271,7 +330,8 @@ struct hinic_nic_dev { unsigned int flags; struct nic_service_cap nic_cap; u32 rx_mode_status; /* promisc or allmulticast */ - unsigned long dev_status; + pthread_mutex_t rx_mode_mutex; + u32 dev_status; char proc_dev_name[HINIC_DEV_NAME_LEN]; /* PF0->COS4, PF1->COS5, PF2->COS6, PF3->COS7,