net: add rte prefix to ether defines
[dpdk.git] / drivers / net / i40e / i40e_fdir.c
index f43cf4a..4aaf27f 100644 (file)
@@ -11,7 +11,7 @@
 #include <stdarg.h>
 
 #include <rte_ether.h>
-#include <rte_ethdev.h>
+#include <rte_ethdev_driver.h>
 #include <rte_log.h>
 #include <rte_memzone.h>
 #include <rte_malloc.h>
@@ -113,7 +113,7 @@ i40e_fdir_rx_queue_init(struct i40e_rx_queue *rxq)
 #endif
        rx_ctx.dtype = i40e_header_split_none;
        rx_ctx.hsplit_0 = I40E_HEADER_SPLIT_NONE;
-       rx_ctx.rxmax = ETHER_MAX_LEN;
+       rx_ctx.rxmax = RTE_ETHER_MAX_LEN;
        rx_ctx.tphrdesc_ena = 1;
        rx_ctx.tphwdesc_ena = 1;
        rx_ctx.tphdata_ena = 1;
@@ -525,7 +525,7 @@ i40e_set_flx_pld_cfg(struct i40e_pf *pf,
                flx_ort = (1 << I40E_GLQF_ORT_FLX_PAYLOAD_SHIFT) |
                          (num << I40E_GLQF_ORT_FIELD_CNT_SHIFT) |
                          (layer_idx * I40E_MAX_FLXPLD_FIED);
-               I40E_WRITE_REG(hw, I40E_GLQF_ORT(33 + layer_idx), flx_ort);
+               I40E_WRITE_GLB_REG(hw, I40E_GLQF_ORT(33 + layer_idx), flx_ort);
        }
 
        for (i = 0; i < num; i++) {
@@ -648,22 +648,31 @@ i40e_fdir_configure(struct rte_eth_dev *dev)
                PMD_DRV_LOG(ERR, " invalid configuration arguments.");
                return -EINVAL;
        }
-       /* configure flex payload */
-       for (i = 0; i < conf->nb_payloads; i++)
-               i40e_set_flx_pld_cfg(pf, &conf->flex_set[i]);
-       /* configure flex mask*/
-       for (i = 0; i < conf->nb_flexmasks; i++) {
-               if (hw->mac.type == I40E_MAC_X722) {
-                       /* get translated pctype value in fd pctype register */
-                       pctype = (enum i40e_filter_pctype)i40e_read_rx_ctl(
-                               hw, I40E_GLQF_FD_PCTYPES(
-                               (int)i40e_flowtype_to_pctype(pf->adapter,
-                               conf->flex_mask[i].flow_type)));
-               } else
-                       pctype = i40e_flowtype_to_pctype(pf->adapter,
-                                               conf->flex_mask[i].flow_type);
 
-               i40e_set_flex_mask_on_pctype(pf, pctype, &conf->flex_mask[i]);
+       if (!pf->support_multi_driver) {
+               /* configure flex payload */
+               for (i = 0; i < conf->nb_payloads; i++)
+                       i40e_set_flx_pld_cfg(pf, &conf->flex_set[i]);
+               /* configure flex mask*/
+               for (i = 0; i < conf->nb_flexmasks; i++) {
+                       if (hw->mac.type == I40E_MAC_X722) {
+                               /* get pctype value in fd pctype register */
+                               pctype = (enum i40e_filter_pctype)
+                                         i40e_read_rx_ctl(hw,
+                                               I40E_GLQF_FD_PCTYPES(
+                                               (int)i40e_flowtype_to_pctype(
+                                               pf->adapter,
+                                               conf->flex_mask[i].flow_type)));
+                       } else {
+                               pctype = i40e_flowtype_to_pctype(pf->adapter,
+                                                 conf->flex_mask[i].flow_type);
+                       }
+
+                       i40e_set_flex_mask_on_pctype(pf, pctype,
+                                                    &conf->flex_mask[i]);
+               }
+       } else {
+               PMD_DRV_LOG(ERR, "Not support flexible payload.");
        }
 
        return ret;
@@ -676,7 +685,7 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,
 {
        static uint8_t vlan_frame[] = {0x81, 0, 0, 0};
        uint16_t *ether_type;
-       uint8_t len = 2 * sizeof(struct ether_addr);
+       uint8_t len = 2 * sizeof(struct rte_ether_addr);
        struct ipv4_hdr *ip;
        struct ipv6_hdr *ip6;
        static const uint8_t next_proto[] = {
@@ -692,7 +701,7 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,
                [RTE_ETH_FLOW_NONFRAG_IPV6_OTHER] = IPPROTO_NONE,
        };
 
-       raw_pkt += 2 * sizeof(struct ether_addr);
+       raw_pkt += 2 * sizeof(struct rte_ether_addr);
        if (vlan && fdir_input->flow_ext.vlan_tci) {
                rte_memcpy(raw_pkt, vlan_frame, sizeof(vlan_frame));
                rte_memcpy(raw_pkt + sizeof(uint16_t),
@@ -716,7 +725,7 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,
        case RTE_ETH_FLOW_FRAG_IPV4:
                ip = (struct ipv4_hdr *)raw_pkt;
 
-               *ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
+               *ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPv4);
                ip->version_ihl = I40E_FDIR_IP_DEFAULT_VERSION_IHL;
                /* set len to by default */
                ip->total_length = rte_cpu_to_be_16(I40E_FDIR_IP_DEFAULT_LEN);
@@ -743,7 +752,7 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,
        case RTE_ETH_FLOW_FRAG_IPV6:
                ip6 = (struct ipv6_hdr *)raw_pkt;
 
-               *ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv6);
+               *ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPv6);
                ip6->vtc_flow =
                        rte_cpu_to_be_32(I40E_FDIR_IPv6_DEFAULT_VTC_FLOW |
                                         (fdir_input->flow.ipv6_flow.tc <<
@@ -901,8 +910,8 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
                 * starts after the whole ARP header
                 */
                if (fdir_input->flow.l2_flow.ether_type ==
-                               rte_cpu_to_be_16(ETHER_TYPE_ARP))
-                       payload += sizeof(struct arp_hdr);
+                               rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP))
+                       payload += sizeof(struct rte_arp_hdr);
                set_idx = I40E_FLXPLD_L2_IDX;
                break;
        default:
@@ -950,7 +959,7 @@ i40e_flow_fdir_fill_eth_ip_head(struct i40e_pf *pf,
        struct i40e_customized_pctype *cus_pctype = NULL;
        static uint8_t vlan_frame[] = {0x81, 0, 0, 0};
        uint16_t *ether_type;
-       uint8_t len = 2 * sizeof(struct ether_addr);
+       uint8_t len = 2 * sizeof(struct rte_ether_addr);
        struct ipv4_hdr *ip;
        struct ipv6_hdr *ip6;
        uint8_t pctype = fdir_input->pctype;
@@ -968,7 +977,7 @@ i40e_flow_fdir_fill_eth_ip_head(struct i40e_pf *pf,
                [I40E_FILTER_PCTYPE_NONF_IPV6_OTHER] = IPPROTO_NONE,
        };
 
-       raw_pkt += 2 * sizeof(struct ether_addr);
+       raw_pkt += 2 * sizeof(struct rte_ether_addr);
        if (vlan && fdir_input->flow_ext.vlan_tci) {
                rte_memcpy(raw_pkt, vlan_frame, sizeof(vlan_frame));
                rte_memcpy(raw_pkt + sizeof(uint16_t),
@@ -1000,7 +1009,7 @@ i40e_flow_fdir_fill_eth_ip_head(struct i40e_pf *pf,
                 is_customized_pctype) {
                ip = (struct ipv4_hdr *)raw_pkt;
 
-               *ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
+               *ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPv4);
                ip->version_ihl = I40E_FDIR_IP_DEFAULT_VERSION_IHL;
                /* set len to by default */
                ip->total_length = rte_cpu_to_be_16(I40E_FDIR_IP_DEFAULT_LEN);
@@ -1033,7 +1042,7 @@ i40e_flow_fdir_fill_eth_ip_head(struct i40e_pf *pf,
                   pctype == I40E_FILTER_PCTYPE_FRAG_IPV6) {
                ip6 = (struct ipv6_hdr *)raw_pkt;
 
-               *ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv6);
+               *ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPv6);
                ip6->vtc_flow =
                        rte_cpu_to_be_32(I40E_FDIR_IPv6_DEFAULT_VTC_FLOW |
                                         (fdir_input->flow.ipv6_flow.tc <<
@@ -1187,8 +1196,8 @@ i40e_flow_fdir_construct_pkt(struct i40e_pf *pf,
                 * starts after the whole ARP header
                 */
                if (fdir_input->flow.l2_flow.ether_type ==
-                               rte_cpu_to_be_16(ETHER_TYPE_ARP))
-                       payload += sizeof(struct arp_hdr);
+                               rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP))
+                       payload += sizeof(struct rte_arp_hdr);
                set_idx = I40E_FLXPLD_L2_IDX;
        } else if (fdir_input->flow_ext.customized_pctype) {
                /* If customized pctype is used */
@@ -1595,8 +1604,15 @@ i40e_flow_add_del_fdir_filter(struct rte_eth_dev *dev,
        if (add) {
                fdir_filter = rte_zmalloc("fdir_filter",
                                          sizeof(*fdir_filter), 0);
+               if (fdir_filter == NULL) {
+                       PMD_DRV_LOG(ERR, "Failed to alloc memory.");
+                       return -ENOMEM;
+               }
+
                rte_memcpy(fdir_filter, &check_filter, sizeof(check_filter));
                ret = i40e_sw_fdir_filter_insert(pf, fdir_filter);
+               if (ret < 0)
+                       rte_free(fdir_filter);
        } else {
                ret = i40e_sw_fdir_filter_del(pf, &node->fdir.input);
        }