git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/txgbe: support VF promiscuous and allmulticast
[dpdk.git]
/
drivers
/
net
/
enic
/
enic_fm_flow.c
diff --git
a/drivers/net/enic/enic_fm_flow.c
b/drivers/net/enic/enic_fm_flow.c
index
96ec360
..
21d9b1c
100644
(file)
--- a/
drivers/net/enic/enic_fm_flow.c
+++ b/
drivers/net/enic/enic_fm_flow.c
@@
-5,7
+5,7
@@
#include <errno.h>
#include <stdint.h>
#include <rte_log.h>
#include <errno.h>
#include <stdint.h>
#include <rte_log.h>
-#include <
rte_
ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow_driver.h>
#include <rte_ether.h>
#include <rte_hash.h>
#include <rte_flow_driver.h>
#include <rte_ether.h>
#include <rte_hash.h>
@@
-368,8
+368,8
@@
enic_fm_copy_item_eth(struct copy_item_args *arg)
fm_mask = &entry->ftm_mask.fk_hdrset[lvl];
fm_data->fk_header_select |= FKH_ETHER;
fm_mask->fk_header_select |= FKH_ETHER;
fm_mask = &entry->ftm_mask.fk_hdrset[lvl];
fm_data->fk_header_select |= FKH_ETHER;
fm_mask->fk_header_select |= FKH_ETHER;
- memcpy(&fm_data->l2.eth, spec, sizeof(
*spec
));
- memcpy(&fm_mask->l2.eth, mask, sizeof(
*mask
));
+ memcpy(&fm_data->l2.eth, spec, sizeof(
struct rte_ether_hdr
));
+ memcpy(&fm_mask->l2.eth, mask, sizeof(
struct rte_ether_hdr
));
return 0;
}
return 0;
}
@@
-479,8
+479,8
@@
enic_fm_copy_item_ipv6(struct copy_item_args *arg)
fm_data->fk_header_select |= FKH_IPV6;
fm_mask->fk_header_select |= FKH_IPV6;
fm_data->fk_header_select |= FKH_IPV6;
fm_mask->fk_header_select |= FKH_IPV6;
- memcpy(&fm_data->l3.ip6, spec, sizeof(
*spec
));
- memcpy(&fm_mask->l3.ip6, mask, sizeof(
*mask
));
+ memcpy(&fm_data->l3.ip6, spec, sizeof(
struct rte_ipv6_hdr
));
+ memcpy(&fm_mask->l3.ip6, mask, sizeof(
struct rte_ipv6_hdr
));
return 0;
}
return 0;
}
@@
-1047,7
+1047,7
@@
enic_fm_copy_vxlan_encap(struct enic_flowman *fm,
eth = (struct rte_ether_hdr *)template;
ethertype = ð->ether_type;
append_template(&template, &off, item->spec,
eth = (struct rte_ether_hdr *)template;
ethertype = ð->ether_type;
append_template(&template, &off, item->spec,
- sizeof(struct rte_
flow_item_eth
));
+ sizeof(struct rte_
ether_hdr
));
item++;
flow_item_skip_void(&item);
/* Optional VLAN */
item++;
flow_item_skip_void(&item);
/* Optional VLAN */
@@
-1314,6
+1314,8
@@
enic_fm_copy_action(struct enic_flowman *fm,
const struct rte_flow_action_mark *mark =
actions->conf;
const struct rte_flow_action_mark *mark =
actions->conf;
+ if (enic->use_noscatter_vec_rx_handler)
+ goto unsupported;
if (mark->id >= ENIC_MAGIC_FILTER_ID - 1)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION,
if (mark->id >= ENIC_MAGIC_FILTER_ID - 1)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION,
@@
-1327,6
+1329,8
@@
enic_fm_copy_action(struct enic_flowman *fm,
break;
}
case RTE_FLOW_ACTION_TYPE_FLAG: {
break;
}
case RTE_FLOW_ACTION_TYPE_FLAG: {
+ if (enic->use_noscatter_vec_rx_handler)
+ goto unsupported;
/* ENIC_MAGIC_FILTER_ID is reserved for flagging */
memset(&fm_op, 0, sizeof(fm_op));
fm_op.fa_op = FMOP_MARK;
/* ENIC_MAGIC_FILTER_ID is reserved for flagging */
memset(&fm_op, 0, sizeof(fm_op));
fm_op.fa_op = FMOP_MARK;
@@
-2232,7
+2236,11
@@
enic_action_handle_get(struct enic_flowman *fm, struct fm_action *action_in,
error_with_action_handle:
args[0] = FM_ACTION_FREE;
args[1] = ah->handle;
error_with_action_handle:
args[0] = FM_ACTION_FREE;
args[1] = ah->handle;
- flowman_cmd(fm, args, 2);
+ ret = flowman_cmd(fm, args, 2);
+ if (ret != 0)
+ rte_flow_error_set(error, -ret,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, "enic: devcmd(action-free)");
error_with_ah:
free(ah);
return ret;
error_with_ah:
free(ah);
return ret;