X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fenic%2Fenic_flow.c;h=33147169ba760780035235a1fffd83720c4c99b9;hb=2fe6f1b76279b13422e9562f8f94c35184e7ed0c;hp=cebca7d55a99655b9198126f870757130505bc67;hpb=04e8ec74192ae4bc537e4854410551255bf85cf5;p=dpdk.git diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c index cebca7d55a..33147169ba 100644 --- a/drivers/net/enic/enic_flow.c +++ b/drivers/net/enic/enic_flow.c @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include @@ -656,14 +656,14 @@ enic_copy_item_eth_v2(struct copy_item_args *arg) if (!mask) mask = &rte_flow_item_eth_mask; - memcpy(enic_spec.d_addr.addr_bytes, spec->dst.addr_bytes, + memcpy(enic_spec.dst_addr.addr_bytes, spec->dst.addr_bytes, RTE_ETHER_ADDR_LEN); - memcpy(enic_spec.s_addr.addr_bytes, spec->src.addr_bytes, + memcpy(enic_spec.src_addr.addr_bytes, spec->src.addr_bytes, RTE_ETHER_ADDR_LEN); - memcpy(enic_mask.d_addr.addr_bytes, mask->dst.addr_bytes, + memcpy(enic_mask.dst_addr.addr_bytes, mask->dst.addr_bytes, RTE_ETHER_ADDR_LEN); - memcpy(enic_mask.s_addr.addr_bytes, mask->src.addr_bytes, + memcpy(enic_mask.src_addr.addr_bytes, mask->src.addr_bytes, RTE_ETHER_ADDR_LEN); enic_spec.ether_type = spec->type; enic_mask.ether_type = mask->type; @@ -1208,7 +1208,8 @@ enic_copy_action_v2(struct enic *enic, const struct rte_flow_action_mark *mark = (const struct rte_flow_action_mark *) actions->conf; - + if (enic->use_noscatter_vec_rx_handler) + return ENOTSUP; if (overlap & MARK) return ENOTSUP; overlap |= MARK; @@ -1228,6 +1229,8 @@ enic_copy_action_v2(struct enic *enic, break; } case RTE_FLOW_ACTION_TYPE_FLAG: { + if (enic->use_noscatter_vec_rx_handler) + return ENOTSUP; if (overlap & MARK) return ENOTSUP; overlap |= MARK; @@ -1389,7 +1392,7 @@ enic_dump_filter(const struct filter_v2 *filt) if (gp->mask_flags & FILTER_GENERIC_1_IPV6) sprintf(ip6, "%s ", - (gp->val_flags & FILTER_GENERIC_1_IPV4) + (gp->val_flags & FILTER_GENERIC_1_IPV6) ? "ip6(y)" : "ip6(n)"); else sprintf(ip6, "%s ", "ip6(x)"); @@ -1595,6 +1598,8 @@ enic_flow_parse(struct rte_eth_dev *dev, return -rte_errno; } enic_filter->type = enic->flow_filter_mode; + if (enic->adv_filters) + enic_filter->type = FILTER_DPDK_1; ret = enic_copy_filter(pattern, enic_filter_cap, enic, enic_filter, error); return ret;