X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fhinic%2Fhinic_pmd_ethdev.h;h=3f2d51d7522d29af1b7bb0516fe147d847bd0843;hb=671eb37c81e8ec18b2463daf0fdd116b74b31e0d;hp=3322fb90b449a63c8677457d79f4e4880a4ce308;hpb=ef6f2f5cdbe2ef2e7bfd340a80652db91e894949;p=dpdk.git diff --git a/drivers/net/hinic/hinic_pmd_ethdev.h b/drivers/net/hinic/hinic_pmd_ethdev.h index 3322fb90b4..3f2d51d752 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.h +++ b/drivers/net/hinic/hinic_pmd_ethdev.h @@ -53,11 +53,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 +101,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 +114,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 +195,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 { @@ -274,7 +329,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,