ethdev: move flexible filter type to e1000 driver
authorAndrew Rybchenko <arybchenko@solarflare.com>
Thu, 22 Oct 2020 09:42:28 +0000 (10:42 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 3 Nov 2020 22:35:05 +0000 (23:35 +0100)
net/e1000 driver is the only user of the struct rte_eth_flex_filter
and helper defines.  Move it to the driver and use igb_ prefix
instead of rte_eth_.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/e1000/e1000_ethdev.h
drivers/net/e1000/igb_ethdev.c
drivers/net/e1000/igb_flow.c
lib/librte_ethdev/rte_eth_ctrl.h

index 1e41ae9..4755a5f 100644 (file)
@@ -331,10 +331,28 @@ struct igb_eth_syn_filter_ele {
        struct rte_eth_syn_filter filter_info;
 };
 
+#define IGB_FLEX_FILTER_MAXLEN 128     /**< bytes to use in flex filter. */
+#define IGB_FLEX_FILTER_MASK_SIZE      \
+       (RTE_ALIGN(IGB_FLEX_FILTER_MAXLEN, CHAR_BIT) / CHAR_BIT)
+                                       /**< mask bytes in flex filter. */
+
+/**
+ * A structure used to define the flex filter entry
+ * to support RTE_ETH_FILTER_FLEXIBLE data representation.
+ */
+struct igb_flex_filter {
+       uint16_t len;
+       uint8_t bytes[IGB_FLEX_FILTER_MAXLEN]; /**< flex bytes in big endian. */
+       uint8_t mask[IGB_FLEX_FILTER_MASK_SIZE];
+               /**< if mask bit is 1b, do not compare corresponding byte. */
+       uint8_t priority;
+       uint16_t queue;       /**< Queue assigned to when match. */
+};
+
 /* flex filter list structure */
 struct igb_flex_filter_ele {
        TAILQ_ENTRY(igb_flex_filter_ele) entries;
-       struct rte_eth_flex_filter filter_info;
+       struct igb_flex_filter filter_info;
 };
 
 /* rss filter  list structure */
@@ -515,7 +533,7 @@ int eth_igb_syn_filter_set(struct rte_eth_dev *dev,
                        struct rte_eth_syn_filter *filter,
                        bool add);
 int eth_igb_add_del_flex_filter(struct rte_eth_dev *dev,
-                       struct rte_eth_flex_filter *filter,
+                       struct igb_flex_filter *filter,
                        bool add);
 int igb_rss_conf_init(struct rte_eth_dev *dev,
                      struct igb_rte_flow_rss_conf *out,
index 7f99b76..db67bcb 100644 (file)
@@ -4050,7 +4050,7 @@ igb_remove_flex_filter(struct rte_eth_dev *dev,
 
 int
 eth_igb_add_del_flex_filter(struct rte_eth_dev *dev,
-                       struct rte_eth_flex_filter *filter,
+                       struct igb_flex_filter *filter,
                        bool add)
 {
        struct e1000_filter_info *filter_info =
index 43fef88..ccb184d 100644 (file)
@@ -1041,7 +1041,7 @@ static int
 cons_parse_flex_filter(const struct rte_flow_attr *attr,
                                const struct rte_flow_item pattern[],
                                const struct rte_flow_action actions[],
-                               struct rte_eth_flex_filter *filter,
+                               struct igb_flex_filter *filter,
                                struct rte_flow_error *error)
 {
        const struct rte_flow_item *item;
@@ -1102,7 +1102,7 @@ item_loop:
 
        if (!raw_mask->length ||
            !raw_mask->relative) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                                RTE_FLOW_ERROR_TYPE_ITEM,
                                item, "Not supported by flex filter");
@@ -1116,7 +1116,7 @@ item_loop:
 
        for (j = 0; j < raw_spec->length; j++) {
                if (raw_mask->pattern[j] != 0xFF) {
-                       memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+                       memset(filter, 0, sizeof(struct igb_flex_filter));
                        rte_flow_error_set(error, EINVAL,
                                        RTE_FLOW_ERROR_TYPE_ITEM,
                                        item, "Not supported by flex filter");
@@ -1140,8 +1140,8 @@ item_loop:
        }
 
        if ((raw_spec->length + offset + total_offset) >
-                       RTE_FLEX_FILTER_MAXLEN) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+                       IGB_FLEX_FILTER_MAXLEN) {
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                                RTE_FLOW_ERROR_TYPE_ITEM,
                                item, "Not supported by flex filter");
@@ -1204,7 +1204,7 @@ item_loop:
        /* check if the first not void action is QUEUE. */
        NEXT_ITEM_OF_ACTION(act, actions, index);
        if (act->type != RTE_FLOW_ACTION_TYPE_QUEUE) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                                RTE_FLOW_ERROR_TYPE_ACTION,
                                act, "Not supported action.");
@@ -1218,7 +1218,7 @@ item_loop:
        index++;
        NEXT_ITEM_OF_ACTION(act, actions, index);
        if (act->type != RTE_FLOW_ACTION_TYPE_END) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                                RTE_FLOW_ERROR_TYPE_ACTION,
                                act, "Not supported action.");
@@ -1228,7 +1228,7 @@ item_loop:
        /* parse attr */
        /* must be input direction */
        if (!attr->ingress) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                        RTE_FLOW_ERROR_TYPE_ATTR_INGRESS,
                        attr, "Only support ingress.");
@@ -1237,7 +1237,7 @@ item_loop:
 
        /* not supported */
        if (attr->egress) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                        RTE_FLOW_ERROR_TYPE_ATTR_EGRESS,
                        attr, "Not support egress.");
@@ -1246,7 +1246,7 @@ item_loop:
 
        /* not supported */
        if (attr->transfer) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                        RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER,
                        attr, "No support for transfer.");
@@ -1254,7 +1254,7 @@ item_loop:
        }
 
        if (attr->priority > 0xFFFF) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                                   RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY,
                                   attr, "Error priority.");
@@ -1271,7 +1271,7 @@ igb_parse_flex_filter(struct rte_eth_dev *dev,
                                 const struct rte_flow_attr *attr,
                             const struct rte_flow_item pattern[],
                             const struct rte_flow_action actions[],
-                            struct rte_eth_flex_filter *filter,
+                            struct igb_flex_filter *filter,
                             struct rte_flow_error *error)
 {
        struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
@@ -1283,7 +1283,7 @@ igb_parse_flex_filter(struct rte_eth_dev *dev,
                                        actions, filter, error);
 
        if (filter->queue >= IGB_MAX_RX_QUEUE_NUM) {
-               memset(filter, 0, sizeof(struct rte_eth_flex_filter));
+               memset(filter, 0, sizeof(struct igb_flex_filter));
                rte_flow_error_set(error, EINVAL,
                        RTE_FLOW_ERROR_TYPE_ITEM,
                        NULL, "queue number not supported by flex filter");
@@ -1444,7 +1444,7 @@ igb_flow_create(struct rte_eth_dev *dev,
        struct rte_eth_ntuple_filter ntuple_filter;
        struct rte_eth_ethertype_filter ethertype_filter;
        struct rte_eth_syn_filter syn_filter;
-       struct rte_eth_flex_filter flex_filter;
+       struct igb_flex_filter flex_filter;
        struct igb_rte_flow_rss_conf rss_conf;
        struct rte_flow *flow = NULL;
        struct igb_ntuple_filter_ele *ntuple_filter_ptr;
@@ -1549,7 +1549,7 @@ igb_flow_create(struct rte_eth_dev *dev,
                goto out;
        }
 
-       memset(&flex_filter, 0, sizeof(struct rte_eth_flex_filter));
+       memset(&flex_filter, 0, sizeof(struct igb_flex_filter));
        ret = igb_parse_flex_filter(dev, attr, pattern,
                                        actions, &flex_filter, error);
        if (!ret) {
@@ -1564,7 +1564,7 @@ igb_flow_create(struct rte_eth_dev *dev,
 
                        rte_memcpy(&flex_filter_ptr->filter_info,
                                &flex_filter,
-                               sizeof(struct rte_eth_flex_filter));
+                               sizeof(struct igb_flex_filter));
                        TAILQ_INSERT_TAIL(&igb_filter_flex_list,
                                flex_filter_ptr, entries);
                        flow->rule = flex_filter_ptr;
@@ -1621,7 +1621,7 @@ igb_flow_validate(__rte_unused struct rte_eth_dev *dev,
        struct rte_eth_ntuple_filter ntuple_filter;
        struct rte_eth_ethertype_filter ethertype_filter;
        struct rte_eth_syn_filter syn_filter;
-       struct rte_eth_flex_filter flex_filter;
+       struct igb_flex_filter flex_filter;
        struct igb_rte_flow_rss_conf rss_conf;
        int ret;
 
@@ -1643,7 +1643,7 @@ igb_flow_validate(__rte_unused struct rte_eth_dev *dev,
        if (!ret)
                return 0;
 
-       memset(&flex_filter, 0, sizeof(struct rte_eth_flex_filter));
+       memset(&flex_filter, 0, sizeof(struct igb_flex_filter));
        ret = igb_parse_flex_filter(dev, attr, pattern,
                                actions, &flex_filter, error);
        if (!ret)
index 5690f81..c5e33be 100644 (file)
@@ -56,25 +56,6 @@ enum rte_filter_op {
        RTE_ETH_FILTER_OP_MAX
 };
 
-#define RTE_FLEX_FILTER_MAXLEN 128     /**< bytes to use in flex filter. */
-#define RTE_FLEX_FILTER_MASK_SIZE      \
-       (RTE_ALIGN(RTE_FLEX_FILTER_MAXLEN, CHAR_BIT) / CHAR_BIT)
-                                       /**< mask bytes in flex filter. */
-
-/**
- *  A structure used to define the flex filter entry
- *  to support RTE_ETH_FILTER_FLEXIBLE with RTE_ETH_FILTER_ADD,
- *  RTE_ETH_FILTER_DELETE and RTE_ETH_FILTER_GET operations.
- */
-struct rte_eth_flex_filter {
-       uint16_t len;
-       uint8_t bytes[RTE_FLEX_FILTER_MAXLEN];  /**< flex bytes in big endian.*/
-       uint8_t mask[RTE_FLEX_FILTER_MASK_SIZE];    /**< if mask bit is 1b, do
-                                       not compare corresponding byte. */
-       uint8_t priority;
-       uint16_t queue;       /**< Queue assigned to when match. */
-};
-
 /**
  * A structure used to define the TCP syn filter entry
  * to support RTE_ETH_FILTER_SYN with RTE_ETH_FILTER_ADD,