X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Ftap%2Ftap_flow.c;h=c4f60ce98e5ed716e36042fb715826a904104f44;hb=a625ab89df114bb813a9c8bc3ee3a8f5735bd5fe;hp=3ba69451a86fa69552e8b49326bd782fbdb2cd67;hpb=ed8132e7c91202abfeccc2f9e39c334df2f5db69;p=dpdk.git diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c index 3ba69451a8..c4f60ce98e 100644 --- a/drivers/net/tap/tap_flow.c +++ b/drivers/net/tap/tap_flow.c @@ -537,18 +537,20 @@ tap_flow_create_eth(const struct rte_flow_item *item, void *data) if (!flow) return 0; msg = &flow->msg; - if (!is_zero_ether_addr(&mask->dst)) { - tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_ETH_DST, ETHER_ADDR_LEN, + if (!rte_is_zero_ether_addr(&mask->dst)) { + tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_ETH_DST, + RTE_ETHER_ADDR_LEN, &spec->dst.addr_bytes); tap_nlattr_add(&msg->nh, - TCA_FLOWER_KEY_ETH_DST_MASK, ETHER_ADDR_LEN, + TCA_FLOWER_KEY_ETH_DST_MASK, RTE_ETHER_ADDR_LEN, &mask->dst.addr_bytes); } - if (!is_zero_ether_addr(&mask->src)) { - tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_ETH_SRC, ETHER_ADDR_LEN, - &spec->src.addr_bytes); + if (!rte_is_zero_ether_addr(&mask->src)) { + tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_ETH_SRC, + RTE_ETHER_ADDR_LEN, + &spec->src.addr_bytes); tap_nlattr_add(&msg->nh, - TCA_FLOWER_KEY_ETH_SRC_MASK, ETHER_ADDR_LEN, + TCA_FLOWER_KEY_ETH_SRC_MASK, RTE_ETHER_ADDR_LEN, &mask->src.addr_bytes); } return 0; @@ -1298,10 +1300,16 @@ tap_flow_validate(struct rte_eth_dev *dev, static void tap_flow_set_handle(struct rte_flow *flow) { + union { + struct rte_flow *flow; + const void *key; + } tmp; uint32_t handle = 0; + tmp.flow = flow; + if (sizeof(flow) > 4) - handle = rte_jhash(&flow, sizeof(flow), 1); + handle = rte_jhash(tmp.key, sizeof(flow), 1); else handle = (uintptr_t)flow; /* must be at least 1 to avoid letting the kernel choose one for us */ @@ -1378,7 +1386,7 @@ tap_flow_create(struct rte_eth_dev *dev, NULL, "priority value too big"); goto fail; } - flow = rte_malloc(__func__, sizeof(struct rte_flow), 0); + flow = rte_zmalloc(__func__, sizeof(struct rte_flow), 0); if (!flow) { rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, "cannot allocate memory for rte_flow"); @@ -1414,7 +1422,7 @@ tap_flow_create(struct rte_eth_dev *dev, * to the local pmd->if_index. */ if (pmd->remote_if_index) { - remote_flow = rte_malloc(__func__, sizeof(struct rte_flow), 0); + remote_flow = rte_zmalloc(__func__, sizeof(struct rte_flow), 0); if (!remote_flow) { rte_flow_error_set( error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, @@ -1691,7 +1699,7 @@ int tap_flow_implicit_create(struct pmd_internals *pmd, } }; - remote_flow = rte_malloc(__func__, sizeof(struct rte_flow), 0); + remote_flow = rte_zmalloc(__func__, sizeof(struct rte_flow), 0); if (!remote_flow) { TAP_LOG(ERR, "Cannot allocate memory for rte_flow"); goto fail; @@ -1811,7 +1819,7 @@ tap_flow_implicit_flush(struct pmd_internals *pmd, struct rte_flow_error *error) #define KEY_IDX_OFFSET (3 * MAX_RSS_KEYS) #define SEC_NAME_CLS_Q "cls_q" -const char *sec_name[SEC_MAX] = { +static const char *sec_name[SEC_MAX] = { [SEC_L3_L4] = "l3_l4", }; @@ -1894,7 +1902,7 @@ static int rss_enable(struct pmd_internals *pmd, return -ENOTSUP; } - rss_flow = rte_malloc(__func__, sizeof(struct rte_flow), 0); + rss_flow = rte_zmalloc(__func__, sizeof(struct rte_flow), 0); if (!rss_flow) { TAP_LOG(ERR, "Cannot allocate memory for rte_flow"); @@ -2158,35 +2166,20 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd, } /** - * Manage filter operations. + * Get rte_flow operations. * * @param dev * Pointer to Ethernet device structure. - * @param filter_type - * Filter type. - * @param filter_op - * Operation to perform. - * @param arg + * @param ops * Pointer to operation-specific structure. * * @return * 0 on success, negative errno value on failure. */ int -tap_dev_filter_ctrl(struct rte_eth_dev *dev, - enum rte_filter_type filter_type, - enum rte_filter_op filter_op, - void *arg) +tap_dev_flow_ops_get(struct rte_eth_dev *dev __rte_unused, + const struct rte_flow_ops **ops) { - switch (filter_type) { - case RTE_ETH_FILTER_GENERIC: - if (filter_op != RTE_ETH_FILTER_GET) - return -EINVAL; - *(const void **)arg = &tap_flow_ops; - return 0; - default: - TAP_LOG(ERR, "%p: filter type (%d) not supported", - dev, filter_type); - } - return -EINVAL; + *ops = &tap_flow_ops; + return 0; }