net: add rte prefix to ether functions
[dpdk.git] / drivers / net / mlx5 / mlx5_flow_tcf.c
index b8204df..48d54e8 100644 (file)
@@ -28,6 +28,7 @@
 #include <rte_flow.h>
 #include <rte_malloc.h>
 #include <rte_common.h>
+#include <rte_cycles.h>
 
 #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])
@@ -3333,7 +3334,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow,
                                        " parameter is ignored");
                                break;
                        }
-                       if (!is_zero_ether_addr(&mask.eth->dst)) {
+                       if (!rte_is_zero_ether_addr(&mask.eth->dst)) {
                                mnl_attr_put(nlh, TCA_FLOWER_KEY_ETH_DST,
                                             ETHER_ADDR_LEN,
                                             spec.eth->dst.addr_bytes);
@@ -3341,7 +3342,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow,
                                             ETHER_ADDR_LEN,
                                             mask.eth->dst.addr_bytes);
                        }
-                       if (!is_zero_ether_addr(&mask.eth->src)) {
+                       if (!rte_is_zero_ether_addr(&mask.eth->src)) {
                                mnl_attr_put(nlh, TCA_FLOWER_KEY_ETH_SRC,
                                             ETHER_ADDR_LEN,
                                             spec.eth->src.addr_bytes);
@@ -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 ispecified 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;