X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_flow_tcf.c;h=789748d088d4da81d6f85963355a7491f07cedf7;hb=6d13ea8e8e49ab957deae2bba5ecf4a4bfe747d1;hp=b8204df6379737a0fdb7daf5dd8e306b3d696307;hpb=71ab2d64723c8b7192eea01877012de7aa5c2476;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c index b8204df637..789748d088 100644 --- a/drivers/net/mlx5/mlx5_flow_tcf.c +++ b/drivers/net/mlx5/mlx5_flow_tcf.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "mlx5.h" #include "mlx5_flow.h" @@ -401,7 +402,7 @@ struct mlx5_flow_tcf_context { struct tcf_neigh_rule { LIST_ENTRY(tcf_neigh_rule) next; uint32_t refcnt; - struct ether_addr eth; + struct rte_ether_addr eth; uint16_t mask; union { struct { @@ -474,8 +475,8 @@ struct flow_tcf_vxlan_encap { uint8_t ip_tos; uint8_t ip_ttl_hop; struct { - struct ether_addr dst; - struct ether_addr src; + struct rte_ether_addr dst; + struct rte_ether_addr src; } eth; union { struct { @@ -688,8 +689,8 @@ flow_tcf_pedit_key_set_mac(const struct rte_flow_action *actions, { int idx = p_parser->sel.nkeys; uint32_t off = actions->type == RTE_FLOW_ACTION_TYPE_SET_MAC_SRC ? - offsetof(struct ether_hdr, s_addr) : - offsetof(struct ether_hdr, d_addr); + offsetof(struct rte_ether_hdr, s_addr) : + offsetof(struct rte_ether_hdr, d_addr); const struct rte_flow_action_set_mac *conf = (const struct rte_flow_action_set_mac *)actions->conf; @@ -2425,7 +2426,7 @@ flow_tcf_validate(struct rte_eth_dev *dev, */ if ((action_flags & MLX5_FLOW_ACTION_OF_PUSH_VLAN) && (action_flags & MLX5_FLOW_ACTION_PORT_ID) && - ((struct priv *)port_id_dev->data->dev_private)->representor) + ((struct mlx5_priv *)port_id_dev->data->dev_private)->representor) return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, actions, "vlan push can only be applied" @@ -2683,7 +2684,7 @@ flow_tcf_get_actions_and_size(const struct rte_flow_action actions[], uint64_t *action_flags) { int size = 0; - uint64_t flags = 0; + uint64_t flags = *action_flags; size += SZ_NLATTR_NEST; /* TCA_FLOWER_ACT. */ for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) { @@ -2915,7 +2916,7 @@ flow_tcf_translate_action_count(struct rte_eth_dev *dev __rte_unused, * VXLAN VNI in 24-bit wire format. * * @return - * VXLAN VNI as a 32-bit integer value in network endian. + * VXLAN VNI as a 32-bit integer value in network endianness. */ static inline rte_be32_t vxlan_vni_as_be32(const uint8_t vni[3]) @@ -3779,6 +3780,10 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, mnl_attr_get_payload (mnl_nlmsg_get_payload_tail (nlh)))->ifindex; + } else if (decap.hdr) { + assert(dev_flow->tcf.tunnel); + dev_flow->tcf.tunnel->ifindex_ptr = + (unsigned int *)&tcm->tcm_ifindex; } mnl_attr_put(nlh, TCA_MIRRED_PARMS, sizeof(struct tc_mirred), @@ -4046,7 +4051,7 @@ flow_tcf_nl_ack(struct mlx5_flow_tcf_context *tcf, nlh->nlmsg_flags |= NLM_F_ACK; ret = mnl_socket_sendto(tcf->nl, nlh, nlh->nlmsg_len); if (ret <= 0) { - /* Message send error occurres. */ + /* Message send error occurred. */ rte_errno = errno; return -rte_errno; } @@ -4302,7 +4307,7 @@ flow_tcf_collect_local_cb(const struct nlmsghdr *nlh, void *arg) * @param[in] tcf * Context object initialized by mlx5_flow_tcf_context_create(). * @param[in] ifindex - * Network inferface index to perform cleanup. + * Network interface index to perform cleanup. */ static void flow_tcf_encap_local_cleanup(struct mlx5_flow_tcf_context *tcf, @@ -4338,7 +4343,7 @@ flow_tcf_encap_local_cleanup(struct mlx5_flow_tcf_context *tcf, } /** - * Collect neigh permament rules on specified network device. + * Collect neigh permanent rules on specified network device. * This is callback routine called by libmnl mnl_cb_run() in loop for * every message in received packet. * @@ -4387,7 +4392,7 @@ flow_tcf_collect_neigh_cb(const struct nlmsghdr *nlh, void *arg) } if (!na_mac || !na_ip) return 1; - /* Neigh rule with permenent attribute found. */ + /* Neigh rule with permanent attribute found. */ size = MNL_ALIGN(sizeof(struct nlmsghdr)) + MNL_ALIGN(sizeof(struct ndmsg)) + SZ_NLATTR_DATA_OF(ETHER_ADDR_LEN) + @@ -4426,7 +4431,7 @@ flow_tcf_collect_neigh_cb(const struct nlmsghdr *nlh, void *arg) * @param[in] tcf * Context object initialized by mlx5_flow_tcf_context_create(). * @param[in] ifindex - * Network inferface index to perform cleanup. + * Network interface index to perform cleanup. */ static void flow_tcf_encap_neigh_cleanup(struct mlx5_flow_tcf_context *tcf, @@ -4594,7 +4599,7 @@ flow_tcf_encap_iface_cleanup(struct mlx5_flow_tcf_context *tcf, * Note that an implicit route is maintained by the kernel due to the * presence of a peer address (IFA_ADDRESS). * - * These rules are used for encapsultion only and allow to assign + * These rules are used for encapsulation only and allow to assign * the outer tunnel source IP address. * * @param[in] tcf @@ -5013,7 +5018,7 @@ flow_tcf_encap_irule_acquire(struct mlx5_flow_tcf_context *tcf, /** * Releases VXLAN encap rules container by pointer. Decrements the - * reference cointer and deletes the container if counter is zero. + * reference counter and deletes the container if counter is zero. * * @param[in] irule * VXLAN rule container pointer to release. @@ -5037,7 +5042,7 @@ flow_tcf_encap_irule_release(struct tcf_irule *iface) * @param[in] tcf * Context object initialized by mlx5_flow_tcf_context_create(). * @param[in] vtep - * Object represinting the network device to delete. Memory + * Object representing the network device to delete. Memory * allocated for this object is freed by routine. */ static void @@ -5263,7 +5268,7 @@ flow_tcf_decap_vtep_acquire(struct mlx5_flow_tcf_context *tcf, } /** - * Aqcuire target interface index for VXLAN tunneling encapsulation. + * Acquire target interface index for VXLAN tunneling encapsulation. * * @param[in] tcf * Context object initialized by mlx5_flow_tcf_context_create(). @@ -5561,7 +5566,7 @@ flow_tcf_check_inhw(struct mlx5_flow_tcf_context *tcf, static void flow_tcf_remove(struct rte_eth_dev *dev, struct rte_flow *flow) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_tcf_context *ctx = priv->tcf_context; struct mlx5_flow *dev_flow; struct nlmsghdr *nlh; @@ -5596,7 +5601,7 @@ flow_tcf_remove(struct rte_eth_dev *dev, struct rte_flow *flow) /** * Fetch the applied rule handle. This is callback routine called by * libmnl mnl_cb_run() in loop for every message in received packet. - * When the NLM_F_ECHO flag i sspecified the kernel sends the created + * When the NLM_F_ECHO flag is specified the kernel sends the created * rule descriptor back to the application and we can retrieve the * actual rule handle from updated descriptor. * @@ -5650,7 +5655,7 @@ static int flow_tcf_apply(struct rte_eth_dev *dev, struct rte_flow *flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_tcf_context *ctx = priv->tcf_context; struct mlx5_flow *dev_flow; struct nlmsghdr *nlh; @@ -6134,7 +6139,7 @@ flow_tcf_query_count(struct rte_eth_dev *dev, { struct flow_tcf_stats_basic sb_data; struct rte_flow_query_count *qc = data; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_tcf_context *ctx = priv->tcf_context; struct mnl_socket *nl = ctx->nl; struct mlx5_flow *dev_flow;