bus/pci: fix use after free on unplug
[dpdk.git] / app / test-flow-perf / items_gen.c
index 0950023..a73de90 100644 (file)
@@ -26,9 +26,6 @@ add_ether(struct rte_flow_item *items,
        static struct rte_flow_item_eth eth_spec;
        static struct rte_flow_item_eth eth_mask;
 
-       memset(&eth_spec, 0, sizeof(struct rte_flow_item_eth));
-       memset(&eth_mask, 0, sizeof(struct rte_flow_item_eth));
-
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_ETH;
        items[items_counter].spec = &eth_spec;
        items[items_counter].mask = &eth_mask;
@@ -39,16 +36,12 @@ add_vlan(struct rte_flow_item *items,
        uint8_t items_counter,
        __rte_unused struct additional_para para)
 {
-       static struct rte_flow_item_vlan vlan_spec;
-       static struct rte_flow_item_vlan vlan_mask;
-
-       uint16_t vlan_value = VLAN_VALUE;
-
-       memset(&vlan_spec, 0, sizeof(struct rte_flow_item_vlan));
-       memset(&vlan_mask, 0, sizeof(struct rte_flow_item_vlan));
-
-       vlan_spec.tci = RTE_BE16(vlan_value);
-       vlan_mask.tci = RTE_BE16(0xffff);
+       static struct rte_flow_item_vlan vlan_spec = {
+               .tci = RTE_BE16(VLAN_VALUE),
+       };
+       static struct rte_flow_item_vlan vlan_mask = {
+               .tci = RTE_BE16(0xffff),
+       };
 
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_VLAN;
        items[items_counter].spec = &vlan_spec;
@@ -63,9 +56,6 @@ add_ipv4(struct rte_flow_item *items,
        static struct rte_flow_item_ipv4 ipv4_masks[RTE_MAX_LCORE] __rte_cache_aligned;
        uint8_t ti = para.core_idx;
 
-       memset(&ipv4_specs[ti], 0, sizeof(struct rte_flow_item_ipv4));
-       memset(&ipv4_masks[ti], 0, sizeof(struct rte_flow_item_ipv4));
-
        ipv4_specs[ti].hdr.src_addr = RTE_BE32(para.src_ip);
        ipv4_masks[ti].hdr.src_addr = RTE_BE32(0xffffffff);
 
@@ -82,17 +72,15 @@ add_ipv6(struct rte_flow_item *items,
        static struct rte_flow_item_ipv6 ipv6_specs[RTE_MAX_LCORE] __rte_cache_aligned;
        static struct rte_flow_item_ipv6 ipv6_masks[RTE_MAX_LCORE] __rte_cache_aligned;
        uint8_t ti = para.core_idx;
-
-       memset(&ipv6_specs[ti], 0, sizeof(struct rte_flow_item_ipv6));
-       memset(&ipv6_masks[ti], 0, sizeof(struct rte_flow_item_ipv6));
+       uint8_t i;
 
        /** Set ipv6 src **/
-       memset(&ipv6_specs[ti].hdr.src_addr, para.src_ip,
-               sizeof(ipv6_specs->hdr.src_addr) / 2);
-
-       /** Full mask **/
-       memset(&ipv6_masks[ti].hdr.src_addr, 0xff,
-               sizeof(ipv6_specs->hdr.src_addr));
+       for (i = 0; i < 16; i++) {
+               /* Currently src_ip is limited to 32 bit */
+               if (i < 4)
+                       ipv6_specs[ti].hdr.src_addr[15 - i] = para.src_ip >> (i * 8);
+               ipv6_masks[ti].hdr.src_addr[15 - i] = 0xff;
+       }
 
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_IPV6;
        items[items_counter].spec = &ipv6_specs[ti];
@@ -107,9 +95,6 @@ add_tcp(struct rte_flow_item *items,
        static struct rte_flow_item_tcp tcp_spec;
        static struct rte_flow_item_tcp tcp_mask;
 
-       memset(&tcp_spec, 0, sizeof(struct rte_flow_item_tcp));
-       memset(&tcp_mask, 0, sizeof(struct rte_flow_item_tcp));
-
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_TCP;
        items[items_counter].spec = &tcp_spec;
        items[items_counter].mask = &tcp_mask;
@@ -123,9 +108,6 @@ add_udp(struct rte_flow_item *items,
        static struct rte_flow_item_udp udp_spec;
        static struct rte_flow_item_udp udp_mask;
 
-       memset(&udp_spec, 0, sizeof(struct rte_flow_item_udp));
-       memset(&udp_mask, 0, sizeof(struct rte_flow_item_udp));
-
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_UDP;
        items[items_counter].spec = &udp_spec;
        items[items_counter].mask = &udp_mask;
@@ -144,9 +126,6 @@ add_vxlan(struct rte_flow_item *items,
 
        vni_value = VNI_VALUE;
 
-       memset(&vxlan_specs[ti], 0, sizeof(struct rte_flow_item_vxlan));
-       memset(&vxlan_masks[ti], 0, sizeof(struct rte_flow_item_vxlan));
-
        /* Set standard vxlan vni */
        for (i = 0; i < 3; i++) {
                vxlan_specs[ti].vni[2 - i] = vni_value >> (i * 8);
@@ -174,9 +153,6 @@ add_vxlan_gpe(struct rte_flow_item *items,
 
        vni_value = VNI_VALUE;
 
-       memset(&vxlan_gpe_specs[ti], 0, sizeof(struct rte_flow_item_vxlan_gpe));
-       memset(&vxlan_gpe_masks[ti], 0, sizeof(struct rte_flow_item_vxlan_gpe));
-
        /* Set vxlan-gpe vni */
        for (i = 0; i < 3; i++) {
                vxlan_gpe_specs[ti].vni[2 - i] = vni_value >> (i * 8);
@@ -196,18 +172,12 @@ add_gre(struct rte_flow_item *items,
        uint8_t items_counter,
        __rte_unused struct additional_para para)
 {
-       static struct rte_flow_item_gre gre_spec;
-       static struct rte_flow_item_gre gre_mask;
-
-       uint16_t proto;
-
-       proto = RTE_ETHER_TYPE_TEB;
-
-       memset(&gre_spec, 0, sizeof(struct rte_flow_item_gre));
-       memset(&gre_mask, 0, sizeof(struct rte_flow_item_gre));
-
-       gre_spec.protocol = RTE_BE16(proto);
-       gre_mask.protocol = RTE_BE16(0xffff);
+       static struct rte_flow_item_gre gre_spec = {
+               .protocol = RTE_BE16(RTE_ETHER_TYPE_TEB),
+       };
+       static struct rte_flow_item_gre gre_mask = {
+               .protocol = RTE_BE16(0xffff),
+       };
 
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_GRE;
        items[items_counter].spec = &gre_spec;
@@ -227,9 +197,6 @@ add_geneve(struct rte_flow_item *items,
 
        vni_value = VNI_VALUE;
 
-       memset(&geneve_specs[ti], 0, sizeof(struct rte_flow_item_geneve));
-       memset(&geneve_masks[ti], 0, sizeof(struct rte_flow_item_geneve));
-
        for (i = 0; i < 3; i++) {
                geneve_specs[ti].vni[2 - i] = vni_value >> (i * 8);
                geneve_masks[ti].vni[2 - i] = 0xff;
@@ -245,18 +212,12 @@ add_gtp(struct rte_flow_item *items,
        uint8_t items_counter,
        __rte_unused struct additional_para para)
 {
-       static struct rte_flow_item_gtp gtp_spec;
-       static struct rte_flow_item_gtp gtp_mask;
-
-       uint32_t teid_value;
-
-       teid_value = TEID_VALUE;
-
-       memset(&gtp_spec, 0, sizeof(struct rte_flow_item_gtp));
-       memset(&gtp_mask, 0, sizeof(struct rte_flow_item_gtp));
-
-       gtp_spec.teid = RTE_BE32(teid_value);
-       gtp_mask.teid = RTE_BE32(0xffffffff);
+       static struct rte_flow_item_gtp gtp_spec = {
+               .teid = RTE_BE32(TEID_VALUE),
+       };
+       static struct rte_flow_item_gtp gtp_mask = {
+               .teid = RTE_BE32(0xffffffff),
+       };
 
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_GTP;
        items[items_counter].spec = &gtp_spec;
@@ -268,18 +229,12 @@ add_meta_data(struct rte_flow_item *items,
        uint8_t items_counter,
        __rte_unused struct additional_para para)
 {
-       static struct rte_flow_item_meta meta_spec;
-       static struct rte_flow_item_meta meta_mask;
-
-       uint32_t data;
-
-       data = META_DATA;
-
-       memset(&meta_spec, 0, sizeof(struct rte_flow_item_meta));
-       memset(&meta_mask, 0, sizeof(struct rte_flow_item_meta));
-
-       meta_spec.data = RTE_BE32(data);
-       meta_mask.data = RTE_BE32(0xffffffff);
+       static struct rte_flow_item_meta meta_spec = {
+               .data = RTE_BE32(META_DATA),
+       };
+       static struct rte_flow_item_meta meta_mask = {
+               .data = RTE_BE32(0xffffffff),
+       };
 
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_META;
        items[items_counter].spec = &meta_spec;
@@ -292,21 +247,14 @@ add_meta_tag(struct rte_flow_item *items,
        uint8_t items_counter,
        __rte_unused struct additional_para para)
 {
-       static struct rte_flow_item_tag tag_spec;
-       static struct rte_flow_item_tag tag_mask;
-       uint32_t data;
-       uint8_t index;
-
-       data = META_DATA;
-       index = TAG_INDEX;
-
-       memset(&tag_spec, 0, sizeof(struct rte_flow_item_tag));
-       memset(&tag_mask, 0, sizeof(struct rte_flow_item_tag));
-
-       tag_spec.data = RTE_BE32(data);
-       tag_mask.data = RTE_BE32(0xffffffff);
-       tag_spec.index = index;
-       tag_mask.index = 0xff;
+       static struct rte_flow_item_tag tag_spec = {
+               .data = RTE_BE32(META_DATA),
+               .index = TAG_INDEX,
+       };
+       static struct rte_flow_item_tag tag_mask = {
+               .data = RTE_BE32(0xffffffff),
+               .index = 0xff,
+       };
 
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_TAG;
        items[items_counter].spec = &tag_spec;
@@ -321,9 +269,6 @@ add_icmpv4(struct rte_flow_item *items,
        static struct rte_flow_item_icmp icmpv4_spec;
        static struct rte_flow_item_icmp icmpv4_mask;
 
-       memset(&icmpv4_spec, 0, sizeof(struct rte_flow_item_icmp));
-       memset(&icmpv4_mask, 0, sizeof(struct rte_flow_item_icmp));
-
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_ICMP;
        items[items_counter].spec = &icmpv4_spec;
        items[items_counter].mask = &icmpv4_mask;
@@ -337,9 +282,6 @@ add_icmpv6(struct rte_flow_item *items,
        static struct rte_flow_item_icmp6 icmpv6_spec;
        static struct rte_flow_item_icmp6 icmpv6_mask;
 
-       memset(&icmpv6_spec, 0, sizeof(struct rte_flow_item_icmp6));
-       memset(&icmpv6_mask, 0, sizeof(struct rte_flow_item_icmp6));
-
        items[items_counter].type = RTE_FLOW_ITEM_TYPE_ICMP6;
        items[items_counter].spec = &icmpv6_spec;
        items[items_counter].mask = &icmpv6_mask;