iavf: finish renaming files to iavf
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Sat, 15 Sep 2018 00:37:56 +0000 (17:37 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 18 Sep 2018 22:32:55 +0000 (15:32 -0700)
This finishes the process of renaming the files that
make sense to rename (skipping adminq related files that
talk to i40e), and fixes up the build and the #includes
so that everything builds nicely.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
24 files changed:
drivers/net/ethernet/intel/iavf/Makefile
drivers/net/ethernet/intel/iavf/i40e_adminq.c
drivers/net/ethernet/intel/iavf/i40e_adminq.h
drivers/net/ethernet/intel/iavf/i40e_alloc.h [deleted file]
drivers/net/ethernet/intel/iavf/i40e_common.c [deleted file]
drivers/net/ethernet/intel/iavf/i40e_devids.h [deleted file]
drivers/net/ethernet/intel/iavf/i40e_osdep.h [deleted file]
drivers/net/ethernet/intel/iavf/i40e_prototype.h [deleted file]
drivers/net/ethernet/intel/iavf/i40e_register.h [deleted file]
drivers/net/ethernet/intel/iavf/i40e_status.h [deleted file]
drivers/net/ethernet/intel/iavf/i40e_type.h [deleted file]
drivers/net/ethernet/intel/iavf/iavf.h
drivers/net/ethernet/intel/iavf/iavf_alloc.h [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_client.c
drivers/net/ethernet/intel/iavf/iavf_common.c [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_devids.h [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_main.c
drivers/net/ethernet/intel/iavf/iavf_osdep.h [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_prototype.h [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_register.h [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_status.h [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_txrx.c
drivers/net/ethernet/intel/iavf/iavf_type.h [new file with mode: 0644]
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c

index c1e4b91de4b3a871b3affbd03b07be2d2df38c57..9cbb5743ed1269424f711fdd59b3e5a48b5752e9 100644 (file)
@@ -12,4 +12,4 @@ subdir-ccflags-y += -I$(src)
 obj-$(CONFIG_IAVF) += iavf.o
 
 iavf-objs := iavf_main.o iavf_ethtool.o iavf_virtchnl.o \
-            iavf_txrx.o i40e_common.o i40e_adminq.o iavf_client.o
+            iavf_txrx.o iavf_common.o i40e_adminq.o iavf_client.o
index d6e76a2489d692663ef0df7c7a1e4085ba07ba24..fca1ecfd9f7145a30f2b9db8d824d2214b04c6e9 100644 (file)
@@ -1,11 +1,11 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Copyright(c) 2013 - 2018 Intel Corporation. */
 
-#include "i40e_status.h"
-#include "i40e_type.h"
-#include "i40e_register.h"
+#include "iavf_status.h"
+#include "iavf_type.h"
+#include "iavf_register.h"
 #include "i40e_adminq.h"
-#include "i40e_prototype.h"
+#include "iavf_prototype.h"
 
 /**
  *  i40e_adminq_init_regs - Initialize AdminQ registers
index e34625e25589d5bf063bf2fca7c3b900f76f5a42..ee983889eab05db9b9c18b4ade12f9a6f418501c 100644 (file)
@@ -4,8 +4,8 @@
 #ifndef _IAVF_ADMINQ_H_
 #define _IAVF_ADMINQ_H_
 
-#include "i40e_osdep.h"
-#include "i40e_status.h"
+#include "iavf_osdep.h"
+#include "iavf_status.h"
 #include "i40e_adminq_cmd.h"
 
 #define IAVF_ADMINQ_DESC(R, i)   \
diff --git a/drivers/net/ethernet/intel/iavf/i40e_alloc.h b/drivers/net/ethernet/intel/iavf/i40e_alloc.h
deleted file mode 100644 (file)
index bf27531..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#ifndef _IAVF_ALLOC_H_
-#define _IAVF_ALLOC_H_
-
-struct iavf_hw;
-
-/* Memory allocation types */
-enum iavf_memory_type {
-       iavf_mem_arq_buf = 0,           /* ARQ indirect command buffer */
-       iavf_mem_asq_buf = 1,
-       iavf_mem_atq_buf = 2,           /* ATQ indirect command buffer */
-       iavf_mem_arq_ring = 3,          /* ARQ descriptor ring */
-       iavf_mem_atq_ring = 4,          /* ATQ descriptor ring */
-       iavf_mem_pd = 5,                /* Page Descriptor */
-       iavf_mem_bp = 6,                /* Backing Page - 4KB */
-       iavf_mem_bp_jumbo = 7,          /* Backing Page - > 4KB */
-       iavf_mem_reserved
-};
-
-/* prototype for functions used for dynamic memory allocation */
-iavf_status iavf_allocate_dma_mem(struct iavf_hw *hw, struct iavf_dma_mem *mem,
-                                 enum iavf_memory_type type,
-                                 u64 size, u32 alignment);
-iavf_status iavf_free_dma_mem(struct iavf_hw *hw, struct iavf_dma_mem *mem);
-iavf_status iavf_allocate_virt_mem(struct iavf_hw *hw,
-                                  struct iavf_virt_mem *mem, u32 size);
-iavf_status iavf_free_virt_mem(struct iavf_hw *hw, struct iavf_virt_mem *mem);
-
-#endif /* _IAVF_ALLOC_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/i40e_common.c b/drivers/net/ethernet/intel/iavf/i40e_common.c
deleted file mode 100644 (file)
index d9fd2f2..0000000
+++ /dev/null
@@ -1,955 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#include "i40e_type.h"
-#include "i40e_adminq.h"
-#include "i40e_prototype.h"
-#include <linux/avf/virtchnl.h>
-
-/**
- * iavf_set_mac_type - Sets MAC type
- * @hw: pointer to the HW structure
- *
- * This function sets the mac type of the adapter based on the
- * vendor ID and device ID stored in the hw structure.
- **/
-iavf_status iavf_set_mac_type(struct iavf_hw *hw)
-{
-       iavf_status status = 0;
-
-       if (hw->vendor_id == PCI_VENDOR_ID_INTEL) {
-               switch (hw->device_id) {
-               case IAVF_DEV_ID_X722_VF:
-                       hw->mac.type = IAVF_MAC_X722_VF;
-                       break;
-               case IAVF_DEV_ID_VF:
-               case IAVF_DEV_ID_VF_HV:
-               case IAVF_DEV_ID_ADAPTIVE_VF:
-                       hw->mac.type = IAVF_MAC_VF;
-                       break;
-               default:
-                       hw->mac.type = IAVF_MAC_GENERIC;
-                       break;
-               }
-       } else {
-               status = I40E_ERR_DEVICE_NOT_SUPPORTED;
-       }
-
-       hw_dbg(hw, "found mac: %d, returns: %d\n", hw->mac.type, status);
-       return status;
-}
-
-/**
- * iavf_aq_str - convert AQ err code to a string
- * @hw: pointer to the HW structure
- * @aq_err: the AQ error code to convert
- **/
-const char *iavf_aq_str(struct iavf_hw *hw, enum i40e_admin_queue_err aq_err)
-{
-       switch (aq_err) {
-       case I40E_AQ_RC_OK:
-               return "OK";
-       case I40E_AQ_RC_EPERM:
-               return "I40E_AQ_RC_EPERM";
-       case I40E_AQ_RC_ENOENT:
-               return "I40E_AQ_RC_ENOENT";
-       case I40E_AQ_RC_ESRCH:
-               return "I40E_AQ_RC_ESRCH";
-       case I40E_AQ_RC_EINTR:
-               return "I40E_AQ_RC_EINTR";
-       case I40E_AQ_RC_EIO:
-               return "I40E_AQ_RC_EIO";
-       case I40E_AQ_RC_ENXIO:
-               return "I40E_AQ_RC_ENXIO";
-       case I40E_AQ_RC_E2BIG:
-               return "I40E_AQ_RC_E2BIG";
-       case I40E_AQ_RC_EAGAIN:
-               return "I40E_AQ_RC_EAGAIN";
-       case I40E_AQ_RC_ENOMEM:
-               return "I40E_AQ_RC_ENOMEM";
-       case I40E_AQ_RC_EACCES:
-               return "I40E_AQ_RC_EACCES";
-       case I40E_AQ_RC_EFAULT:
-               return "I40E_AQ_RC_EFAULT";
-       case I40E_AQ_RC_EBUSY:
-               return "I40E_AQ_RC_EBUSY";
-       case I40E_AQ_RC_EEXIST:
-               return "I40E_AQ_RC_EEXIST";
-       case I40E_AQ_RC_EINVAL:
-               return "I40E_AQ_RC_EINVAL";
-       case I40E_AQ_RC_ENOTTY:
-               return "I40E_AQ_RC_ENOTTY";
-       case I40E_AQ_RC_ENOSPC:
-               return "I40E_AQ_RC_ENOSPC";
-       case I40E_AQ_RC_ENOSYS:
-               return "I40E_AQ_RC_ENOSYS";
-       case I40E_AQ_RC_ERANGE:
-               return "I40E_AQ_RC_ERANGE";
-       case I40E_AQ_RC_EFLUSHED:
-               return "I40E_AQ_RC_EFLUSHED";
-       case I40E_AQ_RC_BAD_ADDR:
-               return "I40E_AQ_RC_BAD_ADDR";
-       case I40E_AQ_RC_EMODE:
-               return "I40E_AQ_RC_EMODE";
-       case I40E_AQ_RC_EFBIG:
-               return "I40E_AQ_RC_EFBIG";
-       }
-
-       snprintf(hw->err_str, sizeof(hw->err_str), "%d", aq_err);
-       return hw->err_str;
-}
-
-/**
- * iavf_stat_str - convert status err code to a string
- * @hw: pointer to the HW structure
- * @stat_err: the status error code to convert
- **/
-const char *iavf_stat_str(struct iavf_hw *hw, iavf_status stat_err)
-{
-       switch (stat_err) {
-       case 0:
-               return "OK";
-       case I40E_ERR_NVM:
-               return "I40E_ERR_NVM";
-       case I40E_ERR_NVM_CHECKSUM:
-               return "I40E_ERR_NVM_CHECKSUM";
-       case I40E_ERR_PHY:
-               return "I40E_ERR_PHY";
-       case I40E_ERR_CONFIG:
-               return "I40E_ERR_CONFIG";
-       case I40E_ERR_PARAM:
-               return "I40E_ERR_PARAM";
-       case I40E_ERR_MAC_TYPE:
-               return "I40E_ERR_MAC_TYPE";
-       case I40E_ERR_UNKNOWN_PHY:
-               return "I40E_ERR_UNKNOWN_PHY";
-       case I40E_ERR_LINK_SETUP:
-               return "I40E_ERR_LINK_SETUP";
-       case I40E_ERR_ADAPTER_STOPPED:
-               return "I40E_ERR_ADAPTER_STOPPED";
-       case I40E_ERR_INVALID_MAC_ADDR:
-               return "I40E_ERR_INVALID_MAC_ADDR";
-       case I40E_ERR_DEVICE_NOT_SUPPORTED:
-               return "I40E_ERR_DEVICE_NOT_SUPPORTED";
-       case I40E_ERR_MASTER_REQUESTS_PENDING:
-               return "I40E_ERR_MASTER_REQUESTS_PENDING";
-       case I40E_ERR_INVALID_LINK_SETTINGS:
-               return "I40E_ERR_INVALID_LINK_SETTINGS";
-       case I40E_ERR_AUTONEG_NOT_COMPLETE:
-               return "I40E_ERR_AUTONEG_NOT_COMPLETE";
-       case I40E_ERR_RESET_FAILED:
-               return "I40E_ERR_RESET_FAILED";
-       case I40E_ERR_SWFW_SYNC:
-               return "I40E_ERR_SWFW_SYNC";
-       case I40E_ERR_NO_AVAILABLE_VSI:
-               return "I40E_ERR_NO_AVAILABLE_VSI";
-       case I40E_ERR_NO_MEMORY:
-               return "I40E_ERR_NO_MEMORY";
-       case I40E_ERR_BAD_PTR:
-               return "I40E_ERR_BAD_PTR";
-       case I40E_ERR_RING_FULL:
-               return "I40E_ERR_RING_FULL";
-       case I40E_ERR_INVALID_PD_ID:
-               return "I40E_ERR_INVALID_PD_ID";
-       case I40E_ERR_INVALID_QP_ID:
-               return "I40E_ERR_INVALID_QP_ID";
-       case I40E_ERR_INVALID_CQ_ID:
-               return "I40E_ERR_INVALID_CQ_ID";
-       case I40E_ERR_INVALID_CEQ_ID:
-               return "I40E_ERR_INVALID_CEQ_ID";
-       case I40E_ERR_INVALID_AEQ_ID:
-               return "I40E_ERR_INVALID_AEQ_ID";
-       case I40E_ERR_INVALID_SIZE:
-               return "I40E_ERR_INVALID_SIZE";
-       case I40E_ERR_INVALID_ARP_INDEX:
-               return "I40E_ERR_INVALID_ARP_INDEX";
-       case I40E_ERR_INVALID_FPM_FUNC_ID:
-               return "I40E_ERR_INVALID_FPM_FUNC_ID";
-       case I40E_ERR_QP_INVALID_MSG_SIZE:
-               return "I40E_ERR_QP_INVALID_MSG_SIZE";
-       case I40E_ERR_QP_TOOMANY_WRS_POSTED:
-               return "I40E_ERR_QP_TOOMANY_WRS_POSTED";
-       case I40E_ERR_INVALID_FRAG_COUNT:
-               return "I40E_ERR_INVALID_FRAG_COUNT";
-       case I40E_ERR_QUEUE_EMPTY:
-               return "I40E_ERR_QUEUE_EMPTY";
-       case I40E_ERR_INVALID_ALIGNMENT:
-               return "I40E_ERR_INVALID_ALIGNMENT";
-       case I40E_ERR_FLUSHED_QUEUE:
-               return "I40E_ERR_FLUSHED_QUEUE";
-       case I40E_ERR_INVALID_PUSH_PAGE_INDEX:
-               return "I40E_ERR_INVALID_PUSH_PAGE_INDEX";
-       case I40E_ERR_INVALID_IMM_DATA_SIZE:
-               return "I40E_ERR_INVALID_IMM_DATA_SIZE";
-       case I40E_ERR_TIMEOUT:
-               return "I40E_ERR_TIMEOUT";
-       case I40E_ERR_OPCODE_MISMATCH:
-               return "I40E_ERR_OPCODE_MISMATCH";
-       case I40E_ERR_CQP_COMPL_ERROR:
-               return "I40E_ERR_CQP_COMPL_ERROR";
-       case I40E_ERR_INVALID_VF_ID:
-               return "I40E_ERR_INVALID_VF_ID";
-       case I40E_ERR_INVALID_HMCFN_ID:
-               return "I40E_ERR_INVALID_HMCFN_ID";
-       case I40E_ERR_BACKING_PAGE_ERROR:
-               return "I40E_ERR_BACKING_PAGE_ERROR";
-       case I40E_ERR_NO_PBLCHUNKS_AVAILABLE:
-               return "I40E_ERR_NO_PBLCHUNKS_AVAILABLE";
-       case I40E_ERR_INVALID_PBLE_INDEX:
-               return "I40E_ERR_INVALID_PBLE_INDEX";
-       case I40E_ERR_INVALID_SD_INDEX:
-               return "I40E_ERR_INVALID_SD_INDEX";
-       case I40E_ERR_INVALID_PAGE_DESC_INDEX:
-               return "I40E_ERR_INVALID_PAGE_DESC_INDEX";
-       case I40E_ERR_INVALID_SD_TYPE:
-               return "I40E_ERR_INVALID_SD_TYPE";
-       case I40E_ERR_MEMCPY_FAILED:
-               return "I40E_ERR_MEMCPY_FAILED";
-       case I40E_ERR_INVALID_HMC_OBJ_INDEX:
-               return "I40E_ERR_INVALID_HMC_OBJ_INDEX";
-       case I40E_ERR_INVALID_HMC_OBJ_COUNT:
-               return "I40E_ERR_INVALID_HMC_OBJ_COUNT";
-       case I40E_ERR_INVALID_SRQ_ARM_LIMIT:
-               return "I40E_ERR_INVALID_SRQ_ARM_LIMIT";
-       case I40E_ERR_SRQ_ENABLED:
-               return "I40E_ERR_SRQ_ENABLED";
-       case I40E_ERR_ADMIN_QUEUE_ERROR:
-               return "I40E_ERR_ADMIN_QUEUE_ERROR";
-       case I40E_ERR_ADMIN_QUEUE_TIMEOUT:
-               return "I40E_ERR_ADMIN_QUEUE_TIMEOUT";
-       case I40E_ERR_BUF_TOO_SHORT:
-               return "I40E_ERR_BUF_TOO_SHORT";
-       case I40E_ERR_ADMIN_QUEUE_FULL:
-               return "I40E_ERR_ADMIN_QUEUE_FULL";
-       case I40E_ERR_ADMIN_QUEUE_NO_WORK:
-               return "I40E_ERR_ADMIN_QUEUE_NO_WORK";
-       case I40E_ERR_BAD_IWARP_CQE:
-               return "I40E_ERR_BAD_IWARP_CQE";
-       case I40E_ERR_NVM_BLANK_MODE:
-               return "I40E_ERR_NVM_BLANK_MODE";
-       case I40E_ERR_NOT_IMPLEMENTED:
-               return "I40E_ERR_NOT_IMPLEMENTED";
-       case I40E_ERR_PE_DOORBELL_NOT_ENABLED:
-               return "I40E_ERR_PE_DOORBELL_NOT_ENABLED";
-       case I40E_ERR_DIAG_TEST_FAILED:
-               return "I40E_ERR_DIAG_TEST_FAILED";
-       case I40E_ERR_NOT_READY:
-               return "I40E_ERR_NOT_READY";
-       case I40E_NOT_SUPPORTED:
-               return "I40E_NOT_SUPPORTED";
-       case I40E_ERR_FIRMWARE_API_VERSION:
-               return "I40E_ERR_FIRMWARE_API_VERSION";
-       case I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR:
-               return "I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR";
-       }
-
-       snprintf(hw->err_str, sizeof(hw->err_str), "%d", stat_err);
-       return hw->err_str;
-}
-
-/**
- * iavf_debug_aq
- * @hw: debug mask related to admin queue
- * @mask: debug mask
- * @desc: pointer to admin queue descriptor
- * @buffer: pointer to command buffer
- * @buf_len: max length of buffer
- *
- * Dumps debug log about adminq command with descriptor contents.
- **/
-void iavf_debug_aq(struct iavf_hw *hw, enum iavf_debug_mask mask, void *desc,
-                  void *buffer, u16 buf_len)
-{
-       struct i40e_aq_desc *aq_desc = (struct i40e_aq_desc *)desc;
-       u8 *buf = (u8 *)buffer;
-
-       if ((!(mask & hw->debug_mask)) || !desc)
-               return;
-
-       iavf_debug(hw, mask,
-                  "AQ CMD: opcode 0x%04X, flags 0x%04X, datalen 0x%04X, retval 0x%04X\n",
-                  le16_to_cpu(aq_desc->opcode),
-                  le16_to_cpu(aq_desc->flags),
-                  le16_to_cpu(aq_desc->datalen),
-                  le16_to_cpu(aq_desc->retval));
-       iavf_debug(hw, mask, "\tcookie (h,l) 0x%08X 0x%08X\n",
-                  le32_to_cpu(aq_desc->cookie_high),
-                  le32_to_cpu(aq_desc->cookie_low));
-       iavf_debug(hw, mask, "\tparam (0,1)  0x%08X 0x%08X\n",
-                  le32_to_cpu(aq_desc->params.internal.param0),
-                  le32_to_cpu(aq_desc->params.internal.param1));
-       iavf_debug(hw, mask, "\taddr (h,l)   0x%08X 0x%08X\n",
-                  le32_to_cpu(aq_desc->params.external.addr_high),
-                  le32_to_cpu(aq_desc->params.external.addr_low));
-
-       if (buffer && aq_desc->datalen) {
-               u16 len = le16_to_cpu(aq_desc->datalen);
-
-               iavf_debug(hw, mask, "AQ CMD Buffer:\n");
-               if (buf_len < len)
-                       len = buf_len;
-               /* write the full 16-byte chunks */
-               if (hw->debug_mask & mask) {
-                       char prefix[27];
-
-                       snprintf(prefix, sizeof(prefix),
-                                "iavf %02x:%02x.%x: \t0x",
-                                hw->bus.bus_id,
-                                hw->bus.device,
-                                hw->bus.func);
-
-                       print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET,
-                                      16, 1, buf, len, false);
-               }
-       }
-}
-
-/**
- * iavf_check_asq_alive
- * @hw: pointer to the hw struct
- *
- * Returns true if Queue is enabled else false.
- **/
-bool iavf_check_asq_alive(struct iavf_hw *hw)
-{
-       if (hw->aq.asq.len)
-               return !!(rd32(hw, hw->aq.asq.len) &
-                         IAVF_VF_ATQLEN1_ATQENABLE_MASK);
-       else
-               return false;
-}
-
-/**
- * iavf_aq_queue_shutdown
- * @hw: pointer to the hw struct
- * @unloading: is the driver unloading itself
- *
- * Tell the Firmware that we're shutting down the AdminQ and whether
- * or not the driver is unloading as well.
- **/
-iavf_status iavf_aq_queue_shutdown(struct iavf_hw *hw, bool unloading)
-{
-       struct i40e_aq_desc desc;
-       struct i40e_aqc_queue_shutdown *cmd =
-               (struct i40e_aqc_queue_shutdown *)&desc.params.raw;
-       iavf_status status;
-
-       iavf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_queue_shutdown);
-
-       if (unloading)
-               cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING);
-       status = iavf_asq_send_command(hw, &desc, NULL, 0, NULL);
-
-       return status;
-}
-
-/**
- * iavf_aq_get_set_rss_lut
- * @hw: pointer to the hardware structure
- * @vsi_id: vsi fw index
- * @pf_lut: for PF table set true, for VSI table set false
- * @lut: pointer to the lut buffer provided by the caller
- * @lut_size: size of the lut buffer
- * @set: set true to set the table, false to get the table
- *
- * Internal function to get or set RSS look up table
- **/
-static iavf_status iavf_aq_get_set_rss_lut(struct iavf_hw *hw,
-                                          u16 vsi_id, bool pf_lut,
-                                          u8 *lut, u16 lut_size,
-                                          bool set)
-{
-       iavf_status status;
-       struct i40e_aq_desc desc;
-       struct i40e_aqc_get_set_rss_lut *cmd_resp =
-                  (struct i40e_aqc_get_set_rss_lut *)&desc.params.raw;
-
-       if (set)
-               iavf_fill_default_direct_cmd_desc(&desc,
-                                                 i40e_aqc_opc_set_rss_lut);
-       else
-               iavf_fill_default_direct_cmd_desc(&desc,
-                                                 i40e_aqc_opc_get_rss_lut);
-
-       /* Indirect command */
-       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_BUF);
-       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_RD);
-
-       cmd_resp->vsi_id =
-                       cpu_to_le16((u16)((vsi_id <<
-                                         I40E_AQC_SET_RSS_LUT_VSI_ID_SHIFT) &
-                                         I40E_AQC_SET_RSS_LUT_VSI_ID_MASK));
-       cmd_resp->vsi_id |= cpu_to_le16((u16)I40E_AQC_SET_RSS_LUT_VSI_VALID);
-
-       if (pf_lut)
-               cmd_resp->flags |= cpu_to_le16((u16)
-                                       ((I40E_AQC_SET_RSS_LUT_TABLE_TYPE_PF <<
-                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_SHIFT) &
-                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_MASK));
-       else
-               cmd_resp->flags |= cpu_to_le16((u16)
-                                       ((I40E_AQC_SET_RSS_LUT_TABLE_TYPE_VSI <<
-                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_SHIFT) &
-                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_MASK));
-
-       status = iavf_asq_send_command(hw, &desc, lut, lut_size, NULL);
-
-       return status;
-}
-
-/**
- * iavf_aq_get_rss_lut
- * @hw: pointer to the hardware structure
- * @vsi_id: vsi fw index
- * @pf_lut: for PF table set true, for VSI table set false
- * @lut: pointer to the lut buffer provided by the caller
- * @lut_size: size of the lut buffer
- *
- * get the RSS lookup table, PF or VSI type
- **/
-iavf_status iavf_aq_get_rss_lut(struct iavf_hw *hw, u16 vsi_id,
-                               bool pf_lut, u8 *lut, u16 lut_size)
-{
-       return iavf_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size,
-                                      false);
-}
-
-/**
- * iavf_aq_set_rss_lut
- * @hw: pointer to the hardware structure
- * @vsi_id: vsi fw index
- * @pf_lut: for PF table set true, for VSI table set false
- * @lut: pointer to the lut buffer provided by the caller
- * @lut_size: size of the lut buffer
- *
- * set the RSS lookup table, PF or VSI type
- **/
-iavf_status iavf_aq_set_rss_lut(struct iavf_hw *hw, u16 vsi_id,
-                               bool pf_lut, u8 *lut, u16 lut_size)
-{
-       return iavf_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size, true);
-}
-
-/**
- * iavf_aq_get_set_rss_key
- * @hw: pointer to the hw struct
- * @vsi_id: vsi fw index
- * @key: pointer to key info struct
- * @set: set true to set the key, false to get the key
- *
- * get the RSS key per VSI
- **/
-static
-iavf_status iavf_aq_get_set_rss_key(struct iavf_hw *hw, u16 vsi_id,
-                                   struct i40e_aqc_get_set_rss_key_data *key,
-                                   bool set)
-{
-       iavf_status status;
-       struct i40e_aq_desc desc;
-       struct i40e_aqc_get_set_rss_key *cmd_resp =
-                       (struct i40e_aqc_get_set_rss_key *)&desc.params.raw;
-       u16 key_size = sizeof(struct i40e_aqc_get_set_rss_key_data);
-
-       if (set)
-               iavf_fill_default_direct_cmd_desc(&desc,
-                                                 i40e_aqc_opc_set_rss_key);
-       else
-               iavf_fill_default_direct_cmd_desc(&desc,
-                                                 i40e_aqc_opc_get_rss_key);
-
-       /* Indirect command */
-       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_BUF);
-       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_RD);
-
-       cmd_resp->vsi_id =
-                       cpu_to_le16((u16)((vsi_id <<
-                                         I40E_AQC_SET_RSS_KEY_VSI_ID_SHIFT) &
-                                         I40E_AQC_SET_RSS_KEY_VSI_ID_MASK));
-       cmd_resp->vsi_id |= cpu_to_le16((u16)I40E_AQC_SET_RSS_KEY_VSI_VALID);
-
-       status = iavf_asq_send_command(hw, &desc, key, key_size, NULL);
-
-       return status;
-}
-
-/**
- * iavf_aq_get_rss_key
- * @hw: pointer to the hw struct
- * @vsi_id: vsi fw index
- * @key: pointer to key info struct
- *
- **/
-iavf_status iavf_aq_get_rss_key(struct iavf_hw *hw, u16 vsi_id,
-                               struct i40e_aqc_get_set_rss_key_data *key)
-{
-       return iavf_aq_get_set_rss_key(hw, vsi_id, key, false);
-}
-
-/**
- * iavf_aq_set_rss_key
- * @hw: pointer to the hw struct
- * @vsi_id: vsi fw index
- * @key: pointer to key info struct
- *
- * set the RSS key per VSI
- **/
-iavf_status iavf_aq_set_rss_key(struct iavf_hw *hw, u16 vsi_id,
-                               struct i40e_aqc_get_set_rss_key_data *key)
-{
-       return iavf_aq_get_set_rss_key(hw, vsi_id, key, true);
-}
-
-/* The iavf_ptype_lookup table is used to convert from the 8-bit ptype in the
- * hardware to a bit-field that can be used by SW to more easily determine the
- * packet type.
- *
- * Macros are used to shorten the table lines and make this table human
- * readable.
- *
- * We store the PTYPE in the top byte of the bit field - this is just so that
- * we can check that the table doesn't have a row missing, as the index into
- * the table should be the PTYPE.
- *
- * Typical work flow:
- *
- * IF NOT iavf_ptype_lookup[ptype].known
- * THEN
- *      Packet is unknown
- * ELSE IF iavf_ptype_lookup[ptype].outer_ip == I40E_RX_PTYPE_OUTER_IP
- *      Use the rest of the fields to look at the tunnels, inner protocols, etc
- * ELSE
- *      Use the enum iavf_rx_l2_ptype to decode the packet type
- * ENDIF
- */
-
-/* macro to make the table lines short */
-#define IAVF_PTT(PTYPE, OUTER_IP, OUTER_IP_VER, OUTER_FRAG, T, TE, TEF, I, PL)\
-       {       PTYPE, \
-               1, \
-               IAVF_RX_PTYPE_OUTER_##OUTER_IP, \
-               IAVF_RX_PTYPE_OUTER_##OUTER_IP_VER, \
-               IAVF_RX_PTYPE_##OUTER_FRAG, \
-               IAVF_RX_PTYPE_TUNNEL_##T, \
-               IAVF_RX_PTYPE_TUNNEL_END_##TE, \
-               IAVF_RX_PTYPE_##TEF, \
-               IAVF_RX_PTYPE_INNER_PROT_##I, \
-               IAVF_RX_PTYPE_PAYLOAD_LAYER_##PL }
-
-#define IAVF_PTT_UNUSED_ENTRY(PTYPE) \
-               { PTYPE, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
-
-/* shorter macros makes the table fit but are terse */
-#define IAVF_RX_PTYPE_NOF              IAVF_RX_PTYPE_NOT_FRAG
-#define IAVF_RX_PTYPE_FRG              IAVF_RX_PTYPE_FRAG
-#define IAVF_RX_PTYPE_INNER_PROT_TS    IAVF_RX_PTYPE_INNER_PROT_TIMESYNC
-
-/* Lookup table mapping the HW PTYPE to the bit field for decoding */
-struct iavf_rx_ptype_decoded iavf_ptype_lookup[] = {
-       /* L2 Packet types */
-       IAVF_PTT_UNUSED_ENTRY(0),
-       IAVF_PTT(1,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
-       IAVF_PTT(2,  L2, NONE, NOF, NONE, NONE, NOF, TS,   PAY2),
-       IAVF_PTT(3,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
-       IAVF_PTT_UNUSED_ENTRY(4),
-       IAVF_PTT_UNUSED_ENTRY(5),
-       IAVF_PTT(6,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
-       IAVF_PTT(7,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
-       IAVF_PTT_UNUSED_ENTRY(8),
-       IAVF_PTT_UNUSED_ENTRY(9),
-       IAVF_PTT(10, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
-       IAVF_PTT(11, L2, NONE, NOF, NONE, NONE, NOF, NONE, NONE),
-       IAVF_PTT(12, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(13, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(14, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(15, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(16, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(17, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(18, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(19, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(20, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(21, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
-
-       /* Non Tunneled IPv4 */
-       IAVF_PTT(22, IP, IPV4, FRG, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(23, IP, IPV4, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(24, IP, IPV4, NOF, NONE, NONE, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(25),
-       IAVF_PTT(26, IP, IPV4, NOF, NONE, NONE, NOF, TCP,  PAY4),
-       IAVF_PTT(27, IP, IPV4, NOF, NONE, NONE, NOF, SCTP, PAY4),
-       IAVF_PTT(28, IP, IPV4, NOF, NONE, NONE, NOF, ICMP, PAY4),
-
-       /* IPv4 --> IPv4 */
-       IAVF_PTT(29, IP, IPV4, NOF, IP_IP, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(30, IP, IPV4, NOF, IP_IP, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(31, IP, IPV4, NOF, IP_IP, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(32),
-       IAVF_PTT(33, IP, IPV4, NOF, IP_IP, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(34, IP, IPV4, NOF, IP_IP, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(35, IP, IPV4, NOF, IP_IP, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv4 --> IPv6 */
-       IAVF_PTT(36, IP, IPV4, NOF, IP_IP, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(37, IP, IPV4, NOF, IP_IP, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(38, IP, IPV4, NOF, IP_IP, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(39),
-       IAVF_PTT(40, IP, IPV4, NOF, IP_IP, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(41, IP, IPV4, NOF, IP_IP, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(42, IP, IPV4, NOF, IP_IP, IPV6, NOF, ICMP, PAY4),
-
-       /* IPv4 --> GRE/NAT */
-       IAVF_PTT(43, IP, IPV4, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3),
-
-       /* IPv4 --> GRE/NAT --> IPv4 */
-       IAVF_PTT(44, IP, IPV4, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(45, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(46, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(47),
-       IAVF_PTT(48, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(49, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(50, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv4 --> GRE/NAT --> IPv6 */
-       IAVF_PTT(51, IP, IPV4, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(52, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(53, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(54),
-       IAVF_PTT(55, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(56, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(57, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4),
-
-       /* IPv4 --> GRE/NAT --> MAC */
-       IAVF_PTT(58, IP, IPV4, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3),
-
-       /* IPv4 --> GRE/NAT --> MAC --> IPv4 */
-       IAVF_PTT(59, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(60, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(61, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(62),
-       IAVF_PTT(63, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(64, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(65, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv4 --> GRE/NAT -> MAC --> IPv6 */
-       IAVF_PTT(66, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(67, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(68, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(69),
-       IAVF_PTT(70, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(71, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(72, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4),
-
-       /* IPv4 --> GRE/NAT --> MAC/VLAN */
-       IAVF_PTT(73, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3),
-
-       /* IPv4 ---> GRE/NAT -> MAC/VLAN --> IPv4 */
-       IAVF_PTT(74, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(75, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(76, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(77),
-       IAVF_PTT(78, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(79, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(80, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv4 -> GRE/NAT -> MAC/VLAN --> IPv6 */
-       IAVF_PTT(81, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(82, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(83, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(84),
-       IAVF_PTT(85, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(86, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(87, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4),
-
-       /* Non Tunneled IPv6 */
-       IAVF_PTT(88, IP, IPV6, FRG, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(89, IP, IPV6, NOF, NONE, NONE, NOF, NONE, PAY3),
-       IAVF_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP,  PAY3),
-       IAVF_PTT_UNUSED_ENTRY(91),
-       IAVF_PTT(92, IP, IPV6, NOF, NONE, NONE, NOF, TCP,  PAY4),
-       IAVF_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4),
-       IAVF_PTT(94, IP, IPV6, NOF, NONE, NONE, NOF, ICMP, PAY4),
-
-       /* IPv6 --> IPv4 */
-       IAVF_PTT(95,  IP, IPV6, NOF, IP_IP, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(96,  IP, IPV6, NOF, IP_IP, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(97,  IP, IPV6, NOF, IP_IP, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(98),
-       IAVF_PTT(99,  IP, IPV6, NOF, IP_IP, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(100, IP, IPV6, NOF, IP_IP, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(101, IP, IPV6, NOF, IP_IP, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv6 --> IPv6 */
-       IAVF_PTT(102, IP, IPV6, NOF, IP_IP, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(103, IP, IPV6, NOF, IP_IP, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(104, IP, IPV6, NOF, IP_IP, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(105),
-       IAVF_PTT(106, IP, IPV6, NOF, IP_IP, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(107, IP, IPV6, NOF, IP_IP, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(108, IP, IPV6, NOF, IP_IP, IPV6, NOF, ICMP, PAY4),
-
-       /* IPv6 --> GRE/NAT */
-       IAVF_PTT(109, IP, IPV6, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3),
-
-       /* IPv6 --> GRE/NAT -> IPv4 */
-       IAVF_PTT(110, IP, IPV6, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(111, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(112, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(113),
-       IAVF_PTT(114, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(115, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(116, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv6 --> GRE/NAT -> IPv6 */
-       IAVF_PTT(117, IP, IPV6, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(118, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(119, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(120),
-       IAVF_PTT(121, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(122, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(123, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4),
-
-       /* IPv6 --> GRE/NAT -> MAC */
-       IAVF_PTT(124, IP, IPV6, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3),
-
-       /* IPv6 --> GRE/NAT -> MAC -> IPv4 */
-       IAVF_PTT(125, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(126, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(127, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(128),
-       IAVF_PTT(129, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(130, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(131, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv6 --> GRE/NAT -> MAC -> IPv6 */
-       IAVF_PTT(132, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(133, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(134, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(135),
-       IAVF_PTT(136, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(137, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(138, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4),
-
-       /* IPv6 --> GRE/NAT -> MAC/VLAN */
-       IAVF_PTT(139, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3),
-
-       /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv4 */
-       IAVF_PTT(140, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3),
-       IAVF_PTT(141, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3),
-       IAVF_PTT(142, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(143),
-       IAVF_PTT(144, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP,  PAY4),
-       IAVF_PTT(145, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4),
-       IAVF_PTT(146, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4),
-
-       /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv6 */
-       IAVF_PTT(147, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3),
-       IAVF_PTT(148, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3),
-       IAVF_PTT(149, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP,  PAY4),
-       IAVF_PTT_UNUSED_ENTRY(150),
-       IAVF_PTT(151, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP,  PAY4),
-       IAVF_PTT(152, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4),
-       IAVF_PTT(153, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4),
-
-       /* unused entries */
-       IAVF_PTT_UNUSED_ENTRY(154),
-       IAVF_PTT_UNUSED_ENTRY(155),
-       IAVF_PTT_UNUSED_ENTRY(156),
-       IAVF_PTT_UNUSED_ENTRY(157),
-       IAVF_PTT_UNUSED_ENTRY(158),
-       IAVF_PTT_UNUSED_ENTRY(159),
-
-       IAVF_PTT_UNUSED_ENTRY(160),
-       IAVF_PTT_UNUSED_ENTRY(161),
-       IAVF_PTT_UNUSED_ENTRY(162),
-       IAVF_PTT_UNUSED_ENTRY(163),
-       IAVF_PTT_UNUSED_ENTRY(164),
-       IAVF_PTT_UNUSED_ENTRY(165),
-       IAVF_PTT_UNUSED_ENTRY(166),
-       IAVF_PTT_UNUSED_ENTRY(167),
-       IAVF_PTT_UNUSED_ENTRY(168),
-       IAVF_PTT_UNUSED_ENTRY(169),
-
-       IAVF_PTT_UNUSED_ENTRY(170),
-       IAVF_PTT_UNUSED_ENTRY(171),
-       IAVF_PTT_UNUSED_ENTRY(172),
-       IAVF_PTT_UNUSED_ENTRY(173),
-       IAVF_PTT_UNUSED_ENTRY(174),
-       IAVF_PTT_UNUSED_ENTRY(175),
-       IAVF_PTT_UNUSED_ENTRY(176),
-       IAVF_PTT_UNUSED_ENTRY(177),
-       IAVF_PTT_UNUSED_ENTRY(178),
-       IAVF_PTT_UNUSED_ENTRY(179),
-
-       IAVF_PTT_UNUSED_ENTRY(180),
-       IAVF_PTT_UNUSED_ENTRY(181),
-       IAVF_PTT_UNUSED_ENTRY(182),
-       IAVF_PTT_UNUSED_ENTRY(183),
-       IAVF_PTT_UNUSED_ENTRY(184),
-       IAVF_PTT_UNUSED_ENTRY(185),
-       IAVF_PTT_UNUSED_ENTRY(186),
-       IAVF_PTT_UNUSED_ENTRY(187),
-       IAVF_PTT_UNUSED_ENTRY(188),
-       IAVF_PTT_UNUSED_ENTRY(189),
-
-       IAVF_PTT_UNUSED_ENTRY(190),
-       IAVF_PTT_UNUSED_ENTRY(191),
-       IAVF_PTT_UNUSED_ENTRY(192),
-       IAVF_PTT_UNUSED_ENTRY(193),
-       IAVF_PTT_UNUSED_ENTRY(194),
-       IAVF_PTT_UNUSED_ENTRY(195),
-       IAVF_PTT_UNUSED_ENTRY(196),
-       IAVF_PTT_UNUSED_ENTRY(197),
-       IAVF_PTT_UNUSED_ENTRY(198),
-       IAVF_PTT_UNUSED_ENTRY(199),
-
-       IAVF_PTT_UNUSED_ENTRY(200),
-       IAVF_PTT_UNUSED_ENTRY(201),
-       IAVF_PTT_UNUSED_ENTRY(202),
-       IAVF_PTT_UNUSED_ENTRY(203),
-       IAVF_PTT_UNUSED_ENTRY(204),
-       IAVF_PTT_UNUSED_ENTRY(205),
-       IAVF_PTT_UNUSED_ENTRY(206),
-       IAVF_PTT_UNUSED_ENTRY(207),
-       IAVF_PTT_UNUSED_ENTRY(208),
-       IAVF_PTT_UNUSED_ENTRY(209),
-
-       IAVF_PTT_UNUSED_ENTRY(210),
-       IAVF_PTT_UNUSED_ENTRY(211),
-       IAVF_PTT_UNUSED_ENTRY(212),
-       IAVF_PTT_UNUSED_ENTRY(213),
-       IAVF_PTT_UNUSED_ENTRY(214),
-       IAVF_PTT_UNUSED_ENTRY(215),
-       IAVF_PTT_UNUSED_ENTRY(216),
-       IAVF_PTT_UNUSED_ENTRY(217),
-       IAVF_PTT_UNUSED_ENTRY(218),
-       IAVF_PTT_UNUSED_ENTRY(219),
-
-       IAVF_PTT_UNUSED_ENTRY(220),
-       IAVF_PTT_UNUSED_ENTRY(221),
-       IAVF_PTT_UNUSED_ENTRY(222),
-       IAVF_PTT_UNUSED_ENTRY(223),
-       IAVF_PTT_UNUSED_ENTRY(224),
-       IAVF_PTT_UNUSED_ENTRY(225),
-       IAVF_PTT_UNUSED_ENTRY(226),
-       IAVF_PTT_UNUSED_ENTRY(227),
-       IAVF_PTT_UNUSED_ENTRY(228),
-       IAVF_PTT_UNUSED_ENTRY(229),
-
-       IAVF_PTT_UNUSED_ENTRY(230),
-       IAVF_PTT_UNUSED_ENTRY(231),
-       IAVF_PTT_UNUSED_ENTRY(232),
-       IAVF_PTT_UNUSED_ENTRY(233),
-       IAVF_PTT_UNUSED_ENTRY(234),
-       IAVF_PTT_UNUSED_ENTRY(235),
-       IAVF_PTT_UNUSED_ENTRY(236),
-       IAVF_PTT_UNUSED_ENTRY(237),
-       IAVF_PTT_UNUSED_ENTRY(238),
-       IAVF_PTT_UNUSED_ENTRY(239),
-
-       IAVF_PTT_UNUSED_ENTRY(240),
-       IAVF_PTT_UNUSED_ENTRY(241),
-       IAVF_PTT_UNUSED_ENTRY(242),
-       IAVF_PTT_UNUSED_ENTRY(243),
-       IAVF_PTT_UNUSED_ENTRY(244),
-       IAVF_PTT_UNUSED_ENTRY(245),
-       IAVF_PTT_UNUSED_ENTRY(246),
-       IAVF_PTT_UNUSED_ENTRY(247),
-       IAVF_PTT_UNUSED_ENTRY(248),
-       IAVF_PTT_UNUSED_ENTRY(249),
-
-       IAVF_PTT_UNUSED_ENTRY(250),
-       IAVF_PTT_UNUSED_ENTRY(251),
-       IAVF_PTT_UNUSED_ENTRY(252),
-       IAVF_PTT_UNUSED_ENTRY(253),
-       IAVF_PTT_UNUSED_ENTRY(254),
-       IAVF_PTT_UNUSED_ENTRY(255)
-};
-
-/**
- * iavf_aq_send_msg_to_pf
- * @hw: pointer to the hardware structure
- * @v_opcode: opcodes for VF-PF communication
- * @v_retval: return error code
- * @msg: pointer to the msg buffer
- * @msglen: msg length
- * @cmd_details: pointer to command details
- *
- * Send message to PF driver using admin queue. By default, this message
- * is sent asynchronously, i.e. iavf_asq_send_command() does not wait for
- * completion before returning.
- **/
-iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
-                                  enum virtchnl_ops v_opcode,
-                                  iavf_status v_retval, u8 *msg, u16 msglen,
-                                  struct i40e_asq_cmd_details *cmd_details)
-{
-       struct i40e_asq_cmd_details details;
-       struct i40e_aq_desc desc;
-       iavf_status status;
-
-       iavf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_send_msg_to_pf);
-       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_SI);
-       desc.cookie_high = cpu_to_le32(v_opcode);
-       desc.cookie_low = cpu_to_le32(v_retval);
-       if (msglen) {
-               desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF
-                                               | I40E_AQ_FLAG_RD));
-               if (msglen > I40E_AQ_LARGE_BUF)
-                       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB);
-               desc.datalen = cpu_to_le16(msglen);
-       }
-       if (!cmd_details) {
-               memset(&details, 0, sizeof(details));
-               details.async = true;
-               cmd_details = &details;
-       }
-       status = iavf_asq_send_command(hw, &desc, msg, msglen, cmd_details);
-       return status;
-}
-
-/**
- * iavf_vf_parse_hw_config
- * @hw: pointer to the hardware structure
- * @msg: pointer to the virtual channel VF resource structure
- *
- * Given a VF resource message from the PF, populate the hw struct
- * with appropriate information.
- **/
-void iavf_vf_parse_hw_config(struct iavf_hw *hw,
-                            struct virtchnl_vf_resource *msg)
-{
-       struct virtchnl_vsi_resource *vsi_res;
-       int i;
-
-       vsi_res = &msg->vsi_res[0];
-
-       hw->dev_caps.num_vsis = msg->num_vsis;
-       hw->dev_caps.num_rx_qp = msg->num_queue_pairs;
-       hw->dev_caps.num_tx_qp = msg->num_queue_pairs;
-       hw->dev_caps.num_msix_vectors_vf = msg->max_vectors;
-       hw->dev_caps.dcb = msg->vf_cap_flags &
-                          VIRTCHNL_VF_OFFLOAD_L2;
-       hw->dev_caps.fcoe = 0;
-       for (i = 0; i < msg->num_vsis; i++) {
-               if (vsi_res->vsi_type == VIRTCHNL_VSI_SRIOV) {
-                       ether_addr_copy(hw->mac.perm_addr,
-                                       vsi_res->default_mac_addr);
-                       ether_addr_copy(hw->mac.addr,
-                                       vsi_res->default_mac_addr);
-               }
-               vsi_res++;
-       }
-}
-
-/**
- * iavf_vf_reset
- * @hw: pointer to the hardware structure
- *
- * Send a VF_RESET message to the PF. Does not wait for response from PF
- * as none will be forthcoming. Immediately after calling this function,
- * the admin queue should be shut down and (optionally) reinitialized.
- **/
-iavf_status iavf_vf_reset(struct iavf_hw *hw)
-{
-       return iavf_aq_send_msg_to_pf(hw, VIRTCHNL_OP_RESET_VF,
-                                     0, NULL, 0, NULL);
-}
diff --git a/drivers/net/ethernet/intel/iavf/i40e_devids.h b/drivers/net/ethernet/intel/iavf/i40e_devids.h
deleted file mode 100644 (file)
index 8eb7b69..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#ifndef _IAVF_DEVIDS_H_
-#define _IAVF_DEVIDS_H_
-
-/* Device IDs for the VF driver */
-#define IAVF_DEV_ID_VF                 0x154C
-#define IAVF_DEV_ID_VF_HV              0x1571
-#define IAVF_DEV_ID_ADAPTIVE_VF                0x1889
-#define IAVF_DEV_ID_X722_VF            0x37CD
-#endif /* _IAVF_DEVIDS_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/i40e_osdep.h b/drivers/net/ethernet/intel/iavf/i40e_osdep.h
deleted file mode 100644 (file)
index e6e0b03..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#ifndef _IAVF_OSDEP_H_
-#define _IAVF_OSDEP_H_
-
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#include <linux/if_vlan.h>
-#include <linux/tcp.h>
-#include <linux/pci.h>
-
-/* get readq/writeq support for 32 bit kernels, use the low-first version */
-#include <linux/io-64-nonatomic-lo-hi.h>
-
-/* File to be the magic between shared code and
- * actual OS primitives
- */
-
-#define hw_dbg(hw, S, A...)    do {} while (0)
-
-#define wr32(a, reg, value)    writel((value), ((a)->hw_addr + (reg)))
-#define rd32(a, reg)           readl((a)->hw_addr + (reg))
-
-#define wr64(a, reg, value)    writeq((value), ((a)->hw_addr + (reg)))
-#define rd64(a, reg)           readq((a)->hw_addr + (reg))
-#define iavf_flush(a)          readl((a)->hw_addr + IAVF_VFGEN_RSTAT)
-
-/* memory allocation tracking */
-struct iavf_dma_mem {
-       void *va;
-       dma_addr_t pa;
-       u32 size;
-};
-
-#define iavf_allocate_dma_mem(h, m, unused, s, a) \
-       iavf_allocate_dma_mem_d(h, m, s, a)
-#define iavf_free_dma_mem(h, m) iavf_free_dma_mem_d(h, m)
-
-struct iavf_virt_mem {
-       void *va;
-       u32 size;
-};
-#define iavf_allocate_virt_mem(h, m, s) iavf_allocate_virt_mem_d(h, m, s)
-#define iavf_free_virt_mem(h, m) iavf_free_virt_mem_d(h, m)
-
-#define iavf_debug(h, m, s, ...)  iavf_debug_d(h, m, s, ##__VA_ARGS__)
-extern void iavf_debug_d(void *hw, u32 mask, char *fmt_str, ...)
-       __attribute__ ((format(gnu_printf, 3, 4)));
-
-typedef enum iavf_status_code iavf_status;
-#endif /* _IAVF_OSDEP_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/i40e_prototype.h b/drivers/net/ethernet/intel/iavf/i40e_prototype.h
deleted file mode 100644 (file)
index 73e768c..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#ifndef _IAVF_PROTOTYPE_H_
-#define _IAVF_PROTOTYPE_H_
-
-#include "i40e_type.h"
-#include "i40e_alloc.h"
-#include <linux/avf/virtchnl.h>
-
-/* Prototypes for shared code functions that are not in
- * the standard function pointer structures.  These are
- * mostly because they are needed even before the init
- * has happened and will assist in the early SW and FW
- * setup.
- */
-
-/* adminq functions */
-iavf_status iavf_init_adminq(struct iavf_hw *hw);
-iavf_status iavf_shutdown_adminq(struct iavf_hw *hw);
-void i40e_adminq_init_ring_data(struct iavf_hw *hw);
-iavf_status iavf_clean_arq_element(struct iavf_hw *hw,
-                                  struct i40e_arq_event_info *e,
-                                  u16 *events_pending);
-iavf_status iavf_asq_send_command(struct iavf_hw *hw, struct i40e_aq_desc *desc,
-                                 void *buff, /* can be NULL */
-                                 u16 buff_size,
-                                 struct i40e_asq_cmd_details *cmd_details);
-bool iavf_asq_done(struct iavf_hw *hw);
-
-/* debug function for adminq */
-void iavf_debug_aq(struct iavf_hw *hw, enum iavf_debug_mask mask,
-                  void *desc, void *buffer, u16 buf_len);
-
-void i40e_idle_aq(struct iavf_hw *hw);
-void iavf_resume_aq(struct iavf_hw *hw);
-bool iavf_check_asq_alive(struct iavf_hw *hw);
-iavf_status iavf_aq_queue_shutdown(struct iavf_hw *hw, bool unloading);
-const char *iavf_aq_str(struct iavf_hw *hw, enum i40e_admin_queue_err aq_err);
-const char *iavf_stat_str(struct iavf_hw *hw, iavf_status stat_err);
-
-iavf_status iavf_aq_get_rss_lut(struct iavf_hw *hw, u16 seid,
-                               bool pf_lut, u8 *lut, u16 lut_size);
-iavf_status iavf_aq_set_rss_lut(struct iavf_hw *hw, u16 seid,
-                               bool pf_lut, u8 *lut, u16 lut_size);
-iavf_status iavf_aq_get_rss_key(struct iavf_hw *hw, u16 seid,
-                               struct i40e_aqc_get_set_rss_key_data *key);
-iavf_status iavf_aq_set_rss_key(struct iavf_hw *hw, u16 seid,
-                               struct i40e_aqc_get_set_rss_key_data *key);
-
-iavf_status iavf_set_mac_type(struct iavf_hw *hw);
-
-extern struct iavf_rx_ptype_decoded iavf_ptype_lookup[];
-
-static inline struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype)
-{
-       return iavf_ptype_lookup[ptype];
-}
-
-void iavf_vf_parse_hw_config(struct iavf_hw *hw,
-                            struct virtchnl_vf_resource *msg);
-iavf_status iavf_vf_reset(struct iavf_hw *hw);
-iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
-                                  enum virtchnl_ops v_opcode,
-                                  iavf_status v_retval, u8 *msg, u16 msglen,
-                                  struct i40e_asq_cmd_details *cmd_details);
-#endif /* _IAVF_PROTOTYPE_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/i40e_register.h b/drivers/net/ethernet/intel/iavf/i40e_register.h
deleted file mode 100644 (file)
index bf79333..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#ifndef _IAVF_REGISTER_H_
-#define _IAVF_REGISTER_H_
-
-#define IAVF_VF_ARQBAH1 0x00006000 /* Reset: EMPR */
-#define IAVF_VF_ARQBAL1 0x00006C00 /* Reset: EMPR */
-#define IAVF_VF_ARQH1 0x00007400 /* Reset: EMPR */
-#define IAVF_VF_ARQH1_ARQH_SHIFT 0
-#define IAVF_VF_ARQH1_ARQH_MASK IAVF_MASK(0x3FF, IAVF_VF_ARQH1_ARQH_SHIFT)
-#define IAVF_VF_ARQLEN1 0x00008000 /* Reset: EMPR */
-#define IAVF_VF_ARQLEN1_ARQVFE_SHIFT 28
-#define IAVF_VF_ARQLEN1_ARQVFE_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQVFE_SHIFT)
-#define IAVF_VF_ARQLEN1_ARQOVFL_SHIFT 29
-#define IAVF_VF_ARQLEN1_ARQOVFL_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQOVFL_SHIFT)
-#define IAVF_VF_ARQLEN1_ARQCRIT_SHIFT 30
-#define IAVF_VF_ARQLEN1_ARQCRIT_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQCRIT_SHIFT)
-#define IAVF_VF_ARQLEN1_ARQENABLE_SHIFT 31
-#define IAVF_VF_ARQLEN1_ARQENABLE_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQENABLE_SHIFT)
-#define IAVF_VF_ARQT1 0x00007000 /* Reset: EMPR */
-#define IAVF_VF_ATQBAH1 0x00007800 /* Reset: EMPR */
-#define IAVF_VF_ATQBAL1 0x00007C00 /* Reset: EMPR */
-#define IAVF_VF_ATQH1 0x00006400 /* Reset: EMPR */
-#define IAVF_VF_ATQLEN1 0x00006800 /* Reset: EMPR */
-#define IAVF_VF_ATQLEN1_ATQVFE_SHIFT 28
-#define IAVF_VF_ATQLEN1_ATQVFE_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQVFE_SHIFT)
-#define IAVF_VF_ATQLEN1_ATQOVFL_SHIFT 29
-#define IAVF_VF_ATQLEN1_ATQOVFL_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQOVFL_SHIFT)
-#define IAVF_VF_ATQLEN1_ATQCRIT_SHIFT 30
-#define IAVF_VF_ATQLEN1_ATQCRIT_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQCRIT_SHIFT)
-#define IAVF_VF_ATQLEN1_ATQENABLE_SHIFT 31
-#define IAVF_VF_ATQLEN1_ATQENABLE_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQENABLE_SHIFT)
-#define IAVF_VF_ATQT1 0x00008400 /* Reset: EMPR */
-#define IAVF_VFGEN_RSTAT 0x00008800 /* Reset: VFR */
-#define IAVF_VFGEN_RSTAT_VFR_STATE_SHIFT 0
-#define IAVF_VFGEN_RSTAT_VFR_STATE_MASK IAVF_MASK(0x3, IAVF_VFGEN_RSTAT_VFR_STATE_SHIFT)
-#define IAVF_VFINT_DYN_CTL01 0x00005C00 /* Reset: VFR */
-#define IAVF_VFINT_DYN_CTL01_INTENA_SHIFT 0
-#define IAVF_VFINT_DYN_CTL01_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTL01_INTENA_SHIFT)
-#define IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT 3
-#define IAVF_VFINT_DYN_CTL01_ITR_INDX_MASK IAVF_MASK(0x3, IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT)
-#define IAVF_VFINT_DYN_CTLN1(_INTVF) (0x00003800 + ((_INTVF) * 4)) /* _i=0...15 */ /* Reset: VFR */
-#define IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT 0
-#define IAVF_VFINT_DYN_CTLN1_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT)
-#define IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT 2
-#define IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT)
-#define IAVF_VFINT_DYN_CTLN1_ITR_INDX_SHIFT 3
-#define IAVF_VFINT_DYN_CTLN1_ITR_INDX_MASK IAVF_MASK(0x3, IAVF_VFINT_DYN_CTLN1_ITR_INDX_SHIFT)
-#define IAVF_VFINT_DYN_CTLN1_INTERVAL_SHIFT 5
-#define IAVF_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_SHIFT 24
-#define IAVF_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_SHIFT)
-#define IAVF_VFINT_ICR0_ENA1 0x00005000 /* Reset: CORER */
-#define IAVF_VFINT_ICR0_ENA1_ADMINQ_SHIFT 30
-#define IAVF_VFINT_ICR0_ENA1_ADMINQ_MASK IAVF_MASK(0x1, IAVF_VFINT_ICR0_ENA1_ADMINQ_SHIFT)
-#define IAVF_VFINT_ICR0_ENA1_RSVD_SHIFT 31
-#define IAVF_VFINT_ICR01 0x00004800 /* Reset: CORER */
-#define IAVF_VFINT_ITRN1(_i, _INTVF) (0x00002800 + ((_i) * 64 + (_INTVF) * 4)) /* _i=0...2, _INTVF=0...15 */ /* Reset: VFR */
-#define IAVF_QRX_TAIL1(_Q) (0x00002000 + ((_Q) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define IAVF_QTX_TAIL1(_Q) (0x00000000 + ((_Q) * 4)) /* _i=0...15 */ /* Reset: PFR */
-#define IAVF_VFQF_HENA(_i) (0x0000C400 + ((_i) * 4)) /* _i=0...1 */ /* Reset: CORER */
-#define IAVF_VFQF_HKEY(_i) (0x0000CC00 + ((_i) * 4)) /* _i=0...12 */ /* Reset: CORER */
-#define IAVF_VFQF_HKEY_MAX_INDEX 12
-#define IAVF_VFQF_HLUT(_i) (0x0000D000 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
-#define IAVF_VFQF_HLUT_MAX_INDEX 15
-#define IAVF_VFINT_DYN_CTLN1_WB_ON_ITR_SHIFT 30
-#define IAVF_VFINT_DYN_CTLN1_WB_ON_ITR_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_WB_ON_ITR_SHIFT)
-#endif /* _IAVF_REGISTER_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/i40e_status.h b/drivers/net/ethernet/intel/iavf/i40e_status.h
deleted file mode 100644 (file)
index 46742fa..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#ifndef _IAVF_STATUS_H_
-#define _IAVF_STATUS_H_
-
-/* Error Codes */
-enum iavf_status_code {
-       I40E_SUCCESS                            = 0,
-       I40E_ERR_NVM                            = -1,
-       I40E_ERR_NVM_CHECKSUM                   = -2,
-       I40E_ERR_PHY                            = -3,
-       I40E_ERR_CONFIG                         = -4,
-       I40E_ERR_PARAM                          = -5,
-       I40E_ERR_MAC_TYPE                       = -6,
-       I40E_ERR_UNKNOWN_PHY                    = -7,
-       I40E_ERR_LINK_SETUP                     = -8,
-       I40E_ERR_ADAPTER_STOPPED                = -9,
-       I40E_ERR_INVALID_MAC_ADDR               = -10,
-       I40E_ERR_DEVICE_NOT_SUPPORTED           = -11,
-       I40E_ERR_MASTER_REQUESTS_PENDING        = -12,
-       I40E_ERR_INVALID_LINK_SETTINGS          = -13,
-       I40E_ERR_AUTONEG_NOT_COMPLETE           = -14,
-       I40E_ERR_RESET_FAILED                   = -15,
-       I40E_ERR_SWFW_SYNC                      = -16,
-       I40E_ERR_NO_AVAILABLE_VSI               = -17,
-       I40E_ERR_NO_MEMORY                      = -18,
-       I40E_ERR_BAD_PTR                        = -19,
-       I40E_ERR_RING_FULL                      = -20,
-       I40E_ERR_INVALID_PD_ID                  = -21,
-       I40E_ERR_INVALID_QP_ID                  = -22,
-       I40E_ERR_INVALID_CQ_ID                  = -23,
-       I40E_ERR_INVALID_CEQ_ID                 = -24,
-       I40E_ERR_INVALID_AEQ_ID                 = -25,
-       I40E_ERR_INVALID_SIZE                   = -26,
-       I40E_ERR_INVALID_ARP_INDEX              = -27,
-       I40E_ERR_INVALID_FPM_FUNC_ID            = -28,
-       I40E_ERR_QP_INVALID_MSG_SIZE            = -29,
-       I40E_ERR_QP_TOOMANY_WRS_POSTED          = -30,
-       I40E_ERR_INVALID_FRAG_COUNT             = -31,
-       I40E_ERR_QUEUE_EMPTY                    = -32,
-       I40E_ERR_INVALID_ALIGNMENT              = -33,
-       I40E_ERR_FLUSHED_QUEUE                  = -34,
-       I40E_ERR_INVALID_PUSH_PAGE_INDEX        = -35,
-       I40E_ERR_INVALID_IMM_DATA_SIZE          = -36,
-       I40E_ERR_TIMEOUT                        = -37,
-       I40E_ERR_OPCODE_MISMATCH                = -38,
-       I40E_ERR_CQP_COMPL_ERROR                = -39,
-       I40E_ERR_INVALID_VF_ID                  = -40,
-       I40E_ERR_INVALID_HMCFN_ID               = -41,
-       I40E_ERR_BACKING_PAGE_ERROR             = -42,
-       I40E_ERR_NO_PBLCHUNKS_AVAILABLE         = -43,
-       I40E_ERR_INVALID_PBLE_INDEX             = -44,
-       I40E_ERR_INVALID_SD_INDEX               = -45,
-       I40E_ERR_INVALID_PAGE_DESC_INDEX        = -46,
-       I40E_ERR_INVALID_SD_TYPE                = -47,
-       I40E_ERR_MEMCPY_FAILED                  = -48,
-       I40E_ERR_INVALID_HMC_OBJ_INDEX          = -49,
-       I40E_ERR_INVALID_HMC_OBJ_COUNT          = -50,
-       I40E_ERR_INVALID_SRQ_ARM_LIMIT          = -51,
-       I40E_ERR_SRQ_ENABLED                    = -52,
-       I40E_ERR_ADMIN_QUEUE_ERROR              = -53,
-       I40E_ERR_ADMIN_QUEUE_TIMEOUT            = -54,
-       I40E_ERR_BUF_TOO_SHORT                  = -55,
-       I40E_ERR_ADMIN_QUEUE_FULL               = -56,
-       I40E_ERR_ADMIN_QUEUE_NO_WORK            = -57,
-       I40E_ERR_BAD_IWARP_CQE                  = -58,
-       I40E_ERR_NVM_BLANK_MODE                 = -59,
-       I40E_ERR_NOT_IMPLEMENTED                = -60,
-       I40E_ERR_PE_DOORBELL_NOT_ENABLED        = -61,
-       I40E_ERR_DIAG_TEST_FAILED               = -62,
-       I40E_ERR_NOT_READY                      = -63,
-       I40E_NOT_SUPPORTED                      = -64,
-       I40E_ERR_FIRMWARE_API_VERSION           = -65,
-       I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR     = -66,
-};
-
-#endif /* _IAVF_STATUS_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/i40e_type.h b/drivers/net/ethernet/intel/iavf/i40e_type.h
deleted file mode 100644 (file)
index 11da872..0000000
+++ /dev/null
@@ -1,688 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
-
-#ifndef _IAVF_TYPE_H_
-#define _IAVF_TYPE_H_
-
-#include "i40e_status.h"
-#include "i40e_osdep.h"
-#include "i40e_register.h"
-#include "i40e_adminq.h"
-#include "i40e_devids.h"
-
-#define IAVF_RXQ_CTX_DBUFF_SHIFT 7
-
-/* IAVF_MASK is a macro used on 32 bit registers */
-#define IAVF_MASK(mask, shift) ((u32)(mask) << (shift))
-
-#define IAVF_MAX_VSI_QP                        16
-#define IAVF_MAX_VF_VSI                        3
-#define IAVF_MAX_CHAINED_RX_BUFFERS    5
-
-/* forward declaration */
-struct iavf_hw;
-typedef void (*I40E_ADMINQ_CALLBACK)(struct iavf_hw *, struct i40e_aq_desc *);
-
-/* Data type manipulation macros. */
-
-#define IAVF_DESC_UNUSED(R)    \
-       ((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \
-       (R)->next_to_clean - (R)->next_to_use - 1)
-
-/* bitfields for Tx queue mapping in QTX_CTL */
-#define IAVF_QTX_CTL_VF_QUEUE  0x0
-#define IAVF_QTX_CTL_VM_QUEUE  0x1
-#define IAVF_QTX_CTL_PF_QUEUE  0x2
-
-/* debug masks - set these bits in hw->debug_mask to control output */
-enum iavf_debug_mask {
-       IAVF_DEBUG_INIT                 = 0x00000001,
-       IAVF_DEBUG_RELEASE              = 0x00000002,
-
-       IAVF_DEBUG_LINK                 = 0x00000010,
-       IAVF_DEBUG_PHY                  = 0x00000020,
-       IAVF_DEBUG_HMC                  = 0x00000040,
-       IAVF_DEBUG_NVM                  = 0x00000080,
-       IAVF_DEBUG_LAN                  = 0x00000100,
-       IAVF_DEBUG_FLOW                 = 0x00000200,
-       IAVF_DEBUG_DCB                  = 0x00000400,
-       IAVF_DEBUG_DIAG                 = 0x00000800,
-       IAVF_DEBUG_FD                   = 0x00001000,
-       IAVF_DEBUG_PACKAGE              = 0x00002000,
-
-       IAVF_DEBUG_AQ_MESSAGE           = 0x01000000,
-       IAVF_DEBUG_AQ_DESCRIPTOR        = 0x02000000,
-       IAVF_DEBUG_AQ_DESC_BUFFER       = 0x04000000,
-       IAVF_DEBUG_AQ_COMMAND           = 0x06000000,
-       IAVF_DEBUG_AQ                   = 0x0F000000,
-
-       IAVF_DEBUG_USER                 = 0xF0000000,
-
-       IAVF_DEBUG_ALL                  = 0xFFFFFFFF
-};
-
-/* These are structs for managing the hardware information and the operations.
- * The structures of function pointers are filled out at init time when we
- * know for sure exactly which hardware we're working with.  This gives us the
- * flexibility of using the same main driver code but adapting to slightly
- * different hardware needs as new parts are developed.  For this architecture,
- * the Firmware and AdminQ are intended to insulate the driver from most of the
- * future changes, but these structures will also do part of the job.
- */
-enum iavf_mac_type {
-       IAVF_MAC_UNKNOWN = 0,
-       IAVF_MAC_XL710,
-       IAVF_MAC_VF,
-       IAVF_MAC_X722,
-       IAVF_MAC_X722_VF,
-       IAVF_MAC_GENERIC,
-};
-
-enum iavf_vsi_type {
-       IAVF_VSI_MAIN   = 0,
-       IAVF_VSI_VMDQ1  = 1,
-       IAVF_VSI_VMDQ2  = 2,
-       IAVF_VSI_CTRL   = 3,
-       IAVF_VSI_FCOE   = 4,
-       IAVF_VSI_MIRROR = 5,
-       IAVF_VSI_SRIOV  = 6,
-       IAVF_VSI_FDIR   = 7,
-       IAVF_VSI_TYPE_UNKNOWN
-};
-
-enum iavf_queue_type {
-       IAVF_QUEUE_TYPE_RX = 0,
-       IAVF_QUEUE_TYPE_TX,
-       IAVF_QUEUE_TYPE_PE_CEQ,
-       IAVF_QUEUE_TYPE_UNKNOWN
-};
-
-#define IAVF_HW_CAP_MAX_GPIO           30
-/* Capabilities of a PF or a VF or the whole device */
-struct iavf_hw_capabilities {
-       bool dcb;
-       bool fcoe;
-       u32 num_vsis;
-       u32 num_rx_qp;
-       u32 num_tx_qp;
-       u32 base_queue;
-       u32 num_msix_vectors_vf;
-};
-
-struct iavf_mac_info {
-       enum iavf_mac_type type;
-       u8 addr[ETH_ALEN];
-       u8 perm_addr[ETH_ALEN];
-       u8 san_addr[ETH_ALEN];
-       u16 max_fcoeq;
-};
-
-/* PCI bus types */
-enum iavf_bus_type {
-       iavf_bus_type_unknown = 0,
-       iavf_bus_type_pci,
-       iavf_bus_type_pcix,
-       iavf_bus_type_pci_express,
-       iavf_bus_type_reserved
-};
-
-/* PCI bus speeds */
-enum iavf_bus_speed {
-       iavf_bus_speed_unknown  = 0,
-       iavf_bus_speed_33       = 33,
-       iavf_bus_speed_66       = 66,
-       iavf_bus_speed_100      = 100,
-       iavf_bus_speed_120      = 120,
-       iavf_bus_speed_133      = 133,
-       iavf_bus_speed_2500     = 2500,
-       iavf_bus_speed_5000     = 5000,
-       iavf_bus_speed_8000     = 8000,
-       iavf_bus_speed_reserved
-};
-
-/* PCI bus widths */
-enum iavf_bus_width {
-       iavf_bus_width_unknown  = 0,
-       iavf_bus_width_pcie_x1  = 1,
-       iavf_bus_width_pcie_x2  = 2,
-       iavf_bus_width_pcie_x4  = 4,
-       iavf_bus_width_pcie_x8  = 8,
-       iavf_bus_width_32       = 32,
-       iavf_bus_width_64       = 64,
-       iavf_bus_width_reserved
-};
-
-/* Bus parameters */
-struct iavf_bus_info {
-       enum iavf_bus_speed speed;
-       enum iavf_bus_width width;
-       enum iavf_bus_type type;
-
-       u16 func;
-       u16 device;
-       u16 lan_id;
-       u16 bus_id;
-};
-
-#define IAVF_MAX_USER_PRIORITY         8
-/* Port hardware description */
-struct iavf_hw {
-       u8 __iomem *hw_addr;
-       void *back;
-
-       /* subsystem structs */
-       struct iavf_mac_info mac;
-       struct iavf_bus_info bus;
-
-       /* pci info */
-       u16 device_id;
-       u16 vendor_id;
-       u16 subsystem_device_id;
-       u16 subsystem_vendor_id;
-       u8 revision_id;
-
-       /* capabilities for entire device and PCI func */
-       struct iavf_hw_capabilities dev_caps;
-
-       /* Admin Queue info */
-       struct iavf_adminq_info aq;
-
-       /* debug mask */
-       u32 debug_mask;
-       char err_str[16];
-};
-
-struct iavf_driver_version {
-       u8 major_version;
-       u8 minor_version;
-       u8 build_version;
-       u8 subbuild_version;
-       u8 driver_string[32];
-};
-
-/* RX Descriptors */
-union iavf_16byte_rx_desc {
-       struct {
-               __le64 pkt_addr; /* Packet buffer address */
-               __le64 hdr_addr; /* Header buffer address */
-       } read;
-       struct {
-               struct {
-                       struct {
-                               union {
-                                       __le16 mirroring_status;
-                                       __le16 fcoe_ctx_id;
-                               } mirr_fcoe;
-                               __le16 l2tag1;
-                       } lo_dword;
-                       union {
-                               __le32 rss; /* RSS Hash */
-                               __le32 fd_id; /* Flow director filter id */
-                               __le32 fcoe_param; /* FCoE DDP Context id */
-                       } hi_dword;
-               } qword0;
-               struct {
-                       /* ext status/error/pktype/length */
-                       __le64 status_error_len;
-               } qword1;
-       } wb;  /* writeback */
-};
-
-union iavf_32byte_rx_desc {
-       struct {
-               __le64  pkt_addr; /* Packet buffer address */
-               __le64  hdr_addr; /* Header buffer address */
-                       /* bit 0 of hdr_buffer_addr is DD bit */
-               __le64  rsvd1;
-               __le64  rsvd2;
-       } read;
-       struct {
-               struct {
-                       struct {
-                               union {
-                                       __le16 mirroring_status;
-                                       __le16 fcoe_ctx_id;
-                               } mirr_fcoe;
-                               __le16 l2tag1;
-                       } lo_dword;
-                       union {
-                               __le32 rss; /* RSS Hash */
-                               __le32 fcoe_param; /* FCoE DDP Context id */
-                               /* Flow director filter id in case of
-                                * Programming status desc WB
-                                */
-                               __le32 fd_id;
-                       } hi_dword;
-               } qword0;
-               struct {
-                       /* status/error/pktype/length */
-                       __le64 status_error_len;
-               } qword1;
-               struct {
-                       __le16 ext_status; /* extended status */
-                       __le16 rsvd;
-                       __le16 l2tag2_1;
-                       __le16 l2tag2_2;
-               } qword2;
-               struct {
-                       union {
-                               __le32 flex_bytes_lo;
-                               __le32 pe_status;
-                       } lo_dword;
-                       union {
-                               __le32 flex_bytes_hi;
-                               __le32 fd_id;
-                       } hi_dword;
-               } qword3;
-       } wb;  /* writeback */
-};
-
-enum iavf_rx_desc_status_bits {
-       /* Note: These are predefined bit offsets */
-       IAVF_RX_DESC_STATUS_DD_SHIFT            = 0,
-       IAVF_RX_DESC_STATUS_EOF_SHIFT           = 1,
-       IAVF_RX_DESC_STATUS_L2TAG1P_SHIFT       = 2,
-       IAVF_RX_DESC_STATUS_L3L4P_SHIFT         = 3,
-       IAVF_RX_DESC_STATUS_CRCP_SHIFT          = 4,
-       IAVF_RX_DESC_STATUS_TSYNINDX_SHIFT      = 5, /* 2 BITS */
-       IAVF_RX_DESC_STATUS_TSYNVALID_SHIFT     = 7,
-       /* Note: Bit 8 is reserved in X710 and XL710 */
-       IAVF_RX_DESC_STATUS_EXT_UDP_0_SHIFT     = 8,
-       IAVF_RX_DESC_STATUS_UMBCAST_SHIFT       = 9, /* 2 BITS */
-       IAVF_RX_DESC_STATUS_FLM_SHIFT           = 11,
-       IAVF_RX_DESC_STATUS_FLTSTAT_SHIFT       = 12, /* 2 BITS */
-       IAVF_RX_DESC_STATUS_LPBK_SHIFT          = 14,
-       IAVF_RX_DESC_STATUS_IPV6EXADD_SHIFT     = 15,
-       IAVF_RX_DESC_STATUS_RESERVED_SHIFT      = 16, /* 2 BITS */
-       /* Note: For non-tunnel packets INT_UDP_0 is the right status for
-        * UDP header
-        */
-       IAVF_RX_DESC_STATUS_INT_UDP_0_SHIFT     = 18,
-       IAVF_RX_DESC_STATUS_LAST /* this entry must be last!!! */
-};
-
-#define IAVF_RXD_QW1_STATUS_SHIFT      0
-#define IAVF_RXD_QW1_STATUS_MASK       ((BIT(IAVF_RX_DESC_STATUS_LAST) - 1) \
-                                        << IAVF_RXD_QW1_STATUS_SHIFT)
-
-#define IAVF_RXD_QW1_STATUS_TSYNINDX_SHIFT IAVF_RX_DESC_STATUS_TSYNINDX_SHIFT
-#define IAVF_RXD_QW1_STATUS_TSYNINDX_MASK  (0x3UL << \
-                                           IAVF_RXD_QW1_STATUS_TSYNINDX_SHIFT)
-
-#define IAVF_RXD_QW1_STATUS_TSYNVALID_SHIFT IAVF_RX_DESC_STATUS_TSYNVALID_SHIFT
-#define IAVF_RXD_QW1_STATUS_TSYNVALID_MASK \
-                                   BIT_ULL(IAVF_RXD_QW1_STATUS_TSYNVALID_SHIFT)
-
-enum iavf_rx_desc_fltstat_values {
-       IAVF_RX_DESC_FLTSTAT_NO_DATA    = 0,
-       IAVF_RX_DESC_FLTSTAT_RSV_FD_ID  = 1, /* 16byte desc? FD_ID : RSV */
-       IAVF_RX_DESC_FLTSTAT_RSV        = 2,
-       IAVF_RX_DESC_FLTSTAT_RSS_HASH   = 3,
-};
-
-#define IAVF_RXD_QW1_ERROR_SHIFT       19
-#define IAVF_RXD_QW1_ERROR_MASK                (0xFFUL << IAVF_RXD_QW1_ERROR_SHIFT)
-
-enum iavf_rx_desc_error_bits {
-       /* Note: These are predefined bit offsets */
-       IAVF_RX_DESC_ERROR_RXE_SHIFT            = 0,
-       IAVF_RX_DESC_ERROR_RECIPE_SHIFT         = 1,
-       IAVF_RX_DESC_ERROR_HBO_SHIFT            = 2,
-       IAVF_RX_DESC_ERROR_L3L4E_SHIFT          = 3, /* 3 BITS */
-       IAVF_RX_DESC_ERROR_IPE_SHIFT            = 3,
-       IAVF_RX_DESC_ERROR_L4E_SHIFT            = 4,
-       IAVF_RX_DESC_ERROR_EIPE_SHIFT           = 5,
-       IAVF_RX_DESC_ERROR_OVERSIZE_SHIFT       = 6,
-       IAVF_RX_DESC_ERROR_PPRS_SHIFT           = 7
-};
-
-enum iavf_rx_desc_error_l3l4e_fcoe_masks {
-       IAVF_RX_DESC_ERROR_L3L4E_NONE           = 0,
-       IAVF_RX_DESC_ERROR_L3L4E_PROT           = 1,
-       IAVF_RX_DESC_ERROR_L3L4E_FC             = 2,
-       IAVF_RX_DESC_ERROR_L3L4E_DMAC_ERR       = 3,
-       IAVF_RX_DESC_ERROR_L3L4E_DMAC_WARN      = 4
-};
-
-#define IAVF_RXD_QW1_PTYPE_SHIFT       30
-#define IAVF_RXD_QW1_PTYPE_MASK                (0xFFULL << IAVF_RXD_QW1_PTYPE_SHIFT)
-
-/* Packet type non-ip values */
-enum iavf_rx_l2_ptype {
-       IAVF_RX_PTYPE_L2_RESERVED                       = 0,
-       IAVF_RX_PTYPE_L2_MAC_PAY2                       = 1,
-       IAVF_RX_PTYPE_L2_TIMESYNC_PAY2                  = 2,
-       IAVF_RX_PTYPE_L2_FIP_PAY2                       = 3,
-       IAVF_RX_PTYPE_L2_OUI_PAY2                       = 4,
-       IAVF_RX_PTYPE_L2_MACCNTRL_PAY2                  = 5,
-       IAVF_RX_PTYPE_L2_LLDP_PAY2                      = 6,
-       IAVF_RX_PTYPE_L2_ECP_PAY2                       = 7,
-       IAVF_RX_PTYPE_L2_EVB_PAY2                       = 8,
-       IAVF_RX_PTYPE_L2_QCN_PAY2                       = 9,
-       IAVF_RX_PTYPE_L2_EAPOL_PAY2                     = 10,
-       IAVF_RX_PTYPE_L2_ARP                            = 11,
-       IAVF_RX_PTYPE_L2_FCOE_PAY3                      = 12,
-       IAVF_RX_PTYPE_L2_FCOE_FCDATA_PAY3               = 13,
-       IAVF_RX_PTYPE_L2_FCOE_FCRDY_PAY3                = 14,
-       IAVF_RX_PTYPE_L2_FCOE_FCRSP_PAY3                = 15,
-       IAVF_RX_PTYPE_L2_FCOE_FCOTHER_PA                = 16,
-       IAVF_RX_PTYPE_L2_FCOE_VFT_PAY3                  = 17,
-       IAVF_RX_PTYPE_L2_FCOE_VFT_FCDATA                = 18,
-       IAVF_RX_PTYPE_L2_FCOE_VFT_FCRDY                 = 19,
-       IAVF_RX_PTYPE_L2_FCOE_VFT_FCRSP                 = 20,
-       IAVF_RX_PTYPE_L2_FCOE_VFT_FCOTHER               = 21,
-       IAVF_RX_PTYPE_GRENAT4_MAC_PAY3                  = 58,
-       IAVF_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4    = 87,
-       IAVF_RX_PTYPE_GRENAT6_MAC_PAY3                  = 124,
-       IAVF_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4    = 153
-};
-
-struct iavf_rx_ptype_decoded {
-       u32 ptype:8;
-       u32 known:1;
-       u32 outer_ip:1;
-       u32 outer_ip_ver:1;
-       u32 outer_frag:1;
-       u32 tunnel_type:3;
-       u32 tunnel_end_prot:2;
-       u32 tunnel_end_frag:1;
-       u32 inner_prot:4;
-       u32 payload_layer:3;
-};
-
-enum iavf_rx_ptype_outer_ip {
-       IAVF_RX_PTYPE_OUTER_L2  = 0,
-       IAVF_RX_PTYPE_OUTER_IP  = 1
-};
-
-enum iavf_rx_ptype_outer_ip_ver {
-       IAVF_RX_PTYPE_OUTER_NONE        = 0,
-       IAVF_RX_PTYPE_OUTER_IPV4        = 0,
-       IAVF_RX_PTYPE_OUTER_IPV6        = 1
-};
-
-enum iavf_rx_ptype_outer_fragmented {
-       IAVF_RX_PTYPE_NOT_FRAG  = 0,
-       IAVF_RX_PTYPE_FRAG      = 1
-};
-
-enum iavf_rx_ptype_tunnel_type {
-       IAVF_RX_PTYPE_TUNNEL_NONE               = 0,
-       IAVF_RX_PTYPE_TUNNEL_IP_IP              = 1,
-       IAVF_RX_PTYPE_TUNNEL_IP_GRENAT          = 2,
-       IAVF_RX_PTYPE_TUNNEL_IP_GRENAT_MAC      = 3,
-       IAVF_RX_PTYPE_TUNNEL_IP_GRENAT_MAC_VLAN = 4,
-};
-
-enum iavf_rx_ptype_tunnel_end_prot {
-       IAVF_RX_PTYPE_TUNNEL_END_NONE   = 0,
-       IAVF_RX_PTYPE_TUNNEL_END_IPV4   = 1,
-       IAVF_RX_PTYPE_TUNNEL_END_IPV6   = 2,
-};
-
-enum iavf_rx_ptype_inner_prot {
-       IAVF_RX_PTYPE_INNER_PROT_NONE           = 0,
-       IAVF_RX_PTYPE_INNER_PROT_UDP            = 1,
-       IAVF_RX_PTYPE_INNER_PROT_TCP            = 2,
-       IAVF_RX_PTYPE_INNER_PROT_SCTP           = 3,
-       IAVF_RX_PTYPE_INNER_PROT_ICMP           = 4,
-       IAVF_RX_PTYPE_INNER_PROT_TIMESYNC       = 5
-};
-
-enum iavf_rx_ptype_payload_layer {
-       IAVF_RX_PTYPE_PAYLOAD_LAYER_NONE        = 0,
-       IAVF_RX_PTYPE_PAYLOAD_LAYER_PAY2        = 1,
-       IAVF_RX_PTYPE_PAYLOAD_LAYER_PAY3        = 2,
-       IAVF_RX_PTYPE_PAYLOAD_LAYER_PAY4        = 3,
-};
-
-#define IAVF_RXD_QW1_LENGTH_PBUF_SHIFT 38
-#define IAVF_RXD_QW1_LENGTH_PBUF_MASK  (0x3FFFULL << \
-                                        IAVF_RXD_QW1_LENGTH_PBUF_SHIFT)
-
-#define IAVF_RXD_QW1_LENGTH_HBUF_SHIFT 52
-#define IAVF_RXD_QW1_LENGTH_HBUF_MASK  (0x7FFULL << \
-                                        IAVF_RXD_QW1_LENGTH_HBUF_SHIFT)
-
-#define IAVF_RXD_QW1_LENGTH_SPH_SHIFT  63
-#define IAVF_RXD_QW1_LENGTH_SPH_MASK   BIT_ULL(IAVF_RXD_QW1_LENGTH_SPH_SHIFT)
-
-enum iavf_rx_desc_ext_status_bits {
-       /* Note: These are predefined bit offsets */
-       IAVF_RX_DESC_EXT_STATUS_L2TAG2P_SHIFT   = 0,
-       IAVF_RX_DESC_EXT_STATUS_L2TAG3P_SHIFT   = 1,
-       IAVF_RX_DESC_EXT_STATUS_FLEXBL_SHIFT    = 2, /* 2 BITS */
-       IAVF_RX_DESC_EXT_STATUS_FLEXBH_SHIFT    = 4, /* 2 BITS */
-       IAVF_RX_DESC_EXT_STATUS_FDLONGB_SHIFT   = 9,
-       IAVF_RX_DESC_EXT_STATUS_FCOELONGB_SHIFT = 10,
-       IAVF_RX_DESC_EXT_STATUS_PELONGB_SHIFT   = 11,
-};
-
-enum iavf_rx_desc_pe_status_bits {
-       /* Note: These are predefined bit offsets */
-       IAVF_RX_DESC_PE_STATUS_QPID_SHIFT       = 0, /* 18 BITS */
-       IAVF_RX_DESC_PE_STATUS_L4PORT_SHIFT     = 0, /* 16 BITS */
-       IAVF_RX_DESC_PE_STATUS_IPINDEX_SHIFT    = 16, /* 8 BITS */
-       IAVF_RX_DESC_PE_STATUS_QPIDHIT_SHIFT    = 24,
-       IAVF_RX_DESC_PE_STATUS_APBVTHIT_SHIFT   = 25,
-       IAVF_RX_DESC_PE_STATUS_PORTV_SHIFT      = 26,
-       IAVF_RX_DESC_PE_STATUS_URG_SHIFT        = 27,
-       IAVF_RX_DESC_PE_STATUS_IPFRAG_SHIFT     = 28,
-       IAVF_RX_DESC_PE_STATUS_IPOPT_SHIFT      = 29
-};
-
-#define IAVF_RX_PROG_STATUS_DESC_LENGTH_SHIFT          38
-#define IAVF_RX_PROG_STATUS_DESC_LENGTH                        0x2000000
-
-#define IAVF_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT      2
-#define IAVF_RX_PROG_STATUS_DESC_QW1_PROGID_MASK       (0x7UL << \
-                               IAVF_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT)
-
-#define IAVF_RX_PROG_STATUS_DESC_QW1_ERROR_SHIFT       19
-#define IAVF_RX_PROG_STATUS_DESC_QW1_ERROR_MASK                (0x3FUL << \
-                               IAVF_RX_PROG_STATUS_DESC_QW1_ERROR_SHIFT)
-
-enum iavf_rx_prog_status_desc_status_bits {
-       /* Note: These are predefined bit offsets */
-       IAVF_RX_PROG_STATUS_DESC_DD_SHIFT       = 0,
-       IAVF_RX_PROG_STATUS_DESC_PROG_ID_SHIFT  = 2 /* 3 BITS */
-};
-
-enum iavf_rx_prog_status_desc_prog_id_masks {
-       IAVF_RX_PROG_STATUS_DESC_FD_FILTER_STATUS       = 1,
-       IAVF_RX_PROG_STATUS_DESC_FCOE_CTXT_PROG_STATUS  = 2,
-       IAVF_RX_PROG_STATUS_DESC_FCOE_CTXT_INVL_STATUS  = 4,
-};
-
-enum iavf_rx_prog_status_desc_error_bits {
-       /* Note: These are predefined bit offsets */
-       IAVF_RX_PROG_STATUS_DESC_FD_TBL_FULL_SHIFT      = 0,
-       IAVF_RX_PROG_STATUS_DESC_NO_FD_ENTRY_SHIFT      = 1,
-       IAVF_RX_PROG_STATUS_DESC_FCOE_TBL_FULL_SHIFT    = 2,
-       IAVF_RX_PROG_STATUS_DESC_FCOE_CONFLICT_SHIFT    = 3
-};
-
-/* TX Descriptor */
-struct iavf_tx_desc {
-       __le64 buffer_addr; /* Address of descriptor's data buf */
-       __le64 cmd_type_offset_bsz;
-};
-
-#define IAVF_TXD_QW1_DTYPE_SHIFT       0
-#define IAVF_TXD_QW1_DTYPE_MASK                (0xFUL << IAVF_TXD_QW1_DTYPE_SHIFT)
-
-enum iavf_tx_desc_dtype_value {
-       IAVF_TX_DESC_DTYPE_DATA         = 0x0,
-       IAVF_TX_DESC_DTYPE_NOP          = 0x1, /* same as Context desc */
-       IAVF_TX_DESC_DTYPE_CONTEXT      = 0x1,
-       IAVF_TX_DESC_DTYPE_FCOE_CTX     = 0x2,
-       IAVF_TX_DESC_DTYPE_FILTER_PROG  = 0x8,
-       IAVF_TX_DESC_DTYPE_DDP_CTX      = 0x9,
-       IAVF_TX_DESC_DTYPE_FLEX_DATA    = 0xB,
-       IAVF_TX_DESC_DTYPE_FLEX_CTX_1   = 0xC,
-       IAVF_TX_DESC_DTYPE_FLEX_CTX_2   = 0xD,
-       IAVF_TX_DESC_DTYPE_DESC_DONE    = 0xF
-};
-
-#define IAVF_TXD_QW1_CMD_SHIFT 4
-#define IAVF_TXD_QW1_CMD_MASK  (0x3FFUL << IAVF_TXD_QW1_CMD_SHIFT)
-
-enum iavf_tx_desc_cmd_bits {
-       IAVF_TX_DESC_CMD_EOP                    = 0x0001,
-       IAVF_TX_DESC_CMD_RS                     = 0x0002,
-       IAVF_TX_DESC_CMD_ICRC                   = 0x0004,
-       IAVF_TX_DESC_CMD_IL2TAG1                = 0x0008,
-       IAVF_TX_DESC_CMD_DUMMY                  = 0x0010,
-       IAVF_TX_DESC_CMD_IIPT_NONIP             = 0x0000, /* 2 BITS */
-       IAVF_TX_DESC_CMD_IIPT_IPV6              = 0x0020, /* 2 BITS */
-       IAVF_TX_DESC_CMD_IIPT_IPV4              = 0x0040, /* 2 BITS */
-       IAVF_TX_DESC_CMD_IIPT_IPV4_CSUM         = 0x0060, /* 2 BITS */
-       IAVF_TX_DESC_CMD_FCOET                  = 0x0080,
-       IAVF_TX_DESC_CMD_L4T_EOFT_UNK           = 0x0000, /* 2 BITS */
-       IAVF_TX_DESC_CMD_L4T_EOFT_TCP           = 0x0100, /* 2 BITS */
-       IAVF_TX_DESC_CMD_L4T_EOFT_SCTP          = 0x0200, /* 2 BITS */
-       IAVF_TX_DESC_CMD_L4T_EOFT_UDP           = 0x0300, /* 2 BITS */
-       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_N         = 0x0000, /* 2 BITS */
-       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_T         = 0x0100, /* 2 BITS */
-       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_NI        = 0x0200, /* 2 BITS */
-       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_A         = 0x0300, /* 2 BITS */
-};
-
-#define IAVF_TXD_QW1_OFFSET_SHIFT      16
-#define IAVF_TXD_QW1_OFFSET_MASK       (0x3FFFFULL << \
-                                        IAVF_TXD_QW1_OFFSET_SHIFT)
-
-enum iavf_tx_desc_length_fields {
-       /* Note: These are predefined bit offsets */
-       IAVF_TX_DESC_LENGTH_MACLEN_SHIFT        = 0, /* 7 BITS */
-       IAVF_TX_DESC_LENGTH_IPLEN_SHIFT         = 7, /* 7 BITS */
-       IAVF_TX_DESC_LENGTH_L4_FC_LEN_SHIFT     = 14 /* 4 BITS */
-};
-
-#define IAVF_TXD_QW1_TX_BUF_SZ_SHIFT   34
-#define IAVF_TXD_QW1_TX_BUF_SZ_MASK    (0x3FFFULL << \
-                                        IAVF_TXD_QW1_TX_BUF_SZ_SHIFT)
-
-#define IAVF_TXD_QW1_L2TAG1_SHIFT      48
-#define IAVF_TXD_QW1_L2TAG1_MASK       (0xFFFFULL << IAVF_TXD_QW1_L2TAG1_SHIFT)
-
-/* Context descriptors */
-struct iavf_tx_context_desc {
-       __le32 tunneling_params;
-       __le16 l2tag2;
-       __le16 rsvd;
-       __le64 type_cmd_tso_mss;
-};
-
-#define IAVF_TXD_CTX_QW1_CMD_SHIFT     4
-#define IAVF_TXD_CTX_QW1_CMD_MASK      (0xFFFFUL << IAVF_TXD_CTX_QW1_CMD_SHIFT)
-
-enum iavf_tx_ctx_desc_cmd_bits {
-       IAVF_TX_CTX_DESC_TSO            = 0x01,
-       IAVF_TX_CTX_DESC_TSYN           = 0x02,
-       IAVF_TX_CTX_DESC_IL2TAG2        = 0x04,
-       IAVF_TX_CTX_DESC_IL2TAG2_IL2H   = 0x08,
-       IAVF_TX_CTX_DESC_SWTCH_NOTAG    = 0x00,
-       IAVF_TX_CTX_DESC_SWTCH_UPLINK   = 0x10,
-       IAVF_TX_CTX_DESC_SWTCH_LOCAL    = 0x20,
-       IAVF_TX_CTX_DESC_SWTCH_VSI      = 0x30,
-       IAVF_TX_CTX_DESC_SWPE           = 0x40
-};
-
-/* Packet Classifier Types for filters */
-enum iavf_filter_pctype {
-       /* Note: Values 0-28 are reserved for future use.
-        * Value 29, 30, 32 are not supported on XL710 and X710.
-        */
-       IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP        = 29,
-       IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP      = 30,
-       IAVF_FILTER_PCTYPE_NONF_IPV4_UDP                = 31,
-       IAVF_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK     = 32,
-       IAVF_FILTER_PCTYPE_NONF_IPV4_TCP                = 33,
-       IAVF_FILTER_PCTYPE_NONF_IPV4_SCTP               = 34,
-       IAVF_FILTER_PCTYPE_NONF_IPV4_OTHER              = 35,
-       IAVF_FILTER_PCTYPE_FRAG_IPV4                    = 36,
-       /* Note: Values 37-38 are reserved for future use.
-        * Value 39, 40, 42 are not supported on XL710 and X710.
-        */
-       IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP        = 39,
-       IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP      = 40,
-       IAVF_FILTER_PCTYPE_NONF_IPV6_UDP                = 41,
-       IAVF_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK     = 42,
-       IAVF_FILTER_PCTYPE_NONF_IPV6_TCP                = 43,
-       IAVF_FILTER_PCTYPE_NONF_IPV6_SCTP               = 44,
-       IAVF_FILTER_PCTYPE_NONF_IPV6_OTHER              = 45,
-       IAVF_FILTER_PCTYPE_FRAG_IPV6                    = 46,
-       /* Note: Value 47 is reserved for future use */
-       IAVF_FILTER_PCTYPE_FCOE_OX                      = 48,
-       IAVF_FILTER_PCTYPE_FCOE_RX                      = 49,
-       IAVF_FILTER_PCTYPE_FCOE_OTHER                   = 50,
-       /* Note: Values 51-62 are reserved for future use */
-       IAVF_FILTER_PCTYPE_L2_PAYLOAD                   = 63,
-};
-
-#define IAVF_TXD_CTX_QW1_TSO_LEN_SHIFT 30
-#define IAVF_TXD_CTX_QW1_TSO_LEN_MASK  (0x3FFFFULL << \
-                                        IAVF_TXD_CTX_QW1_TSO_LEN_SHIFT)
-
-#define IAVF_TXD_CTX_QW1_MSS_SHIFT     50
-#define IAVF_TXD_CTX_QW1_MSS_MASK      (0x3FFFULL << \
-                                        IAVF_TXD_CTX_QW1_MSS_SHIFT)
-
-#define IAVF_TXD_CTX_QW1_VSI_SHIFT     50
-#define IAVF_TXD_CTX_QW1_VSI_MASK      (0x1FFULL << IAVF_TXD_CTX_QW1_VSI_SHIFT)
-
-#define IAVF_TXD_CTX_QW0_EXT_IP_SHIFT  0
-#define IAVF_TXD_CTX_QW0_EXT_IP_MASK   (0x3ULL << \
-                                        IAVF_TXD_CTX_QW0_EXT_IP_SHIFT)
-
-enum iavf_tx_ctx_desc_eipt_offload {
-       IAVF_TX_CTX_EXT_IP_NONE         = 0x0,
-       IAVF_TX_CTX_EXT_IP_IPV6         = 0x1,
-       IAVF_TX_CTX_EXT_IP_IPV4_NO_CSUM = 0x2,
-       IAVF_TX_CTX_EXT_IP_IPV4         = 0x3
-};
-
-#define IAVF_TXD_CTX_QW0_EXT_IPLEN_SHIFT       2
-#define IAVF_TXD_CTX_QW0_EXT_IPLEN_MASK        (0x3FULL << \
-                                        IAVF_TXD_CTX_QW0_EXT_IPLEN_SHIFT)
-
-#define IAVF_TXD_CTX_QW0_NATT_SHIFT    9
-#define IAVF_TXD_CTX_QW0_NATT_MASK     (0x3ULL << IAVF_TXD_CTX_QW0_NATT_SHIFT)
-
-#define IAVF_TXD_CTX_UDP_TUNNELING     BIT_ULL(IAVF_TXD_CTX_QW0_NATT_SHIFT)
-#define IAVF_TXD_CTX_GRE_TUNNELING     (0x2ULL << IAVF_TXD_CTX_QW0_NATT_SHIFT)
-
-#define IAVF_TXD_CTX_QW0_EIP_NOINC_SHIFT       11
-#define IAVF_TXD_CTX_QW0_EIP_NOINC_MASK \
-                                      BIT_ULL(IAVF_TXD_CTX_QW0_EIP_NOINC_SHIFT)
-
-#define IAVF_TXD_CTX_EIP_NOINC_IPID_CONST      IAVF_TXD_CTX_QW0_EIP_NOINC_MASK
-
-#define IAVF_TXD_CTX_QW0_NATLEN_SHIFT  12
-#define IAVF_TXD_CTX_QW0_NATLEN_MASK   (0X7FULL << \
-                                        IAVF_TXD_CTX_QW0_NATLEN_SHIFT)
-
-#define IAVF_TXD_CTX_QW0_DECTTL_SHIFT  19
-#define IAVF_TXD_CTX_QW0_DECTTL_MASK   (0xFULL << \
-                                        IAVF_TXD_CTX_QW0_DECTTL_SHIFT)
-
-#define IAVF_TXD_CTX_QW0_L4T_CS_SHIFT  23
-#define IAVF_TXD_CTX_QW0_L4T_CS_MASK   BIT_ULL(IAVF_TXD_CTX_QW0_L4T_CS_SHIFT)
-
-/* Statistics collected by each port, VSI, VEB, and S-channel */
-struct iavf_eth_stats {
-       u64 rx_bytes;                   /* gorc */
-       u64 rx_unicast;                 /* uprc */
-       u64 rx_multicast;               /* mprc */
-       u64 rx_broadcast;               /* bprc */
-       u64 rx_discards;                /* rdpc */
-       u64 rx_unknown_protocol;        /* rupp */
-       u64 tx_bytes;                   /* gotc */
-       u64 tx_unicast;                 /* uptc */
-       u64 tx_multicast;               /* mptc */
-       u64 tx_broadcast;               /* bptc */
-       u64 tx_discards;                /* tdpc */
-       u64 tx_errors;                  /* tepc */
-};
-#endif /* _IAVF_TYPE_H_ */
index af3fdacb3262745cffde0b7e9527952c3acf712b..a512f7521841129cf24131a20f89f467a6a38c4c 100644 (file)
@@ -34,7 +34,7 @@
 #include <net/tc_act/tc_gact.h>
 #include <net/tc_act/tc_mirred.h>
 
-#include "i40e_type.h"
+#include "iavf_type.h"
 #include <linux/avf/virtchnl.h>
 #include "iavf_txrx.h"
 
@@ -298,7 +298,7 @@ struct iavf_adapter {
        struct net_device *netdev;
        struct pci_dev *pdev;
 
-       struct iavf_hw hw; /* defined in i40e_type.h */
+       struct iavf_hw hw; /* defined in iavf_type.h */
 
        enum iavf_state_t state;
        unsigned long crit_section;
diff --git a/drivers/net/ethernet/intel/iavf/iavf_alloc.h b/drivers/net/ethernet/intel/iavf/iavf_alloc.h
new file mode 100644 (file)
index 0000000..bf27531
--- /dev/null
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#ifndef _IAVF_ALLOC_H_
+#define _IAVF_ALLOC_H_
+
+struct iavf_hw;
+
+/* Memory allocation types */
+enum iavf_memory_type {
+       iavf_mem_arq_buf = 0,           /* ARQ indirect command buffer */
+       iavf_mem_asq_buf = 1,
+       iavf_mem_atq_buf = 2,           /* ATQ indirect command buffer */
+       iavf_mem_arq_ring = 3,          /* ARQ descriptor ring */
+       iavf_mem_atq_ring = 4,          /* ATQ descriptor ring */
+       iavf_mem_pd = 5,                /* Page Descriptor */
+       iavf_mem_bp = 6,                /* Backing Page - 4KB */
+       iavf_mem_bp_jumbo = 7,          /* Backing Page - > 4KB */
+       iavf_mem_reserved
+};
+
+/* prototype for functions used for dynamic memory allocation */
+iavf_status iavf_allocate_dma_mem(struct iavf_hw *hw, struct iavf_dma_mem *mem,
+                                 enum iavf_memory_type type,
+                                 u64 size, u32 alignment);
+iavf_status iavf_free_dma_mem(struct iavf_hw *hw, struct iavf_dma_mem *mem);
+iavf_status iavf_allocate_virt_mem(struct iavf_hw *hw,
+                                  struct iavf_virt_mem *mem, u32 size);
+iavf_status iavf_free_virt_mem(struct iavf_hw *hw, struct iavf_virt_mem *mem);
+
+#endif /* _IAVF_ALLOC_H_ */
index 51dd0def3b858321fc04a86e43af56511cf84cf0..aea45364fd1cda90ebbd4587b1836df1d1933430 100644 (file)
@@ -5,7 +5,7 @@
 #include <linux/errno.h>
 
 #include "iavf.h"
-#include "i40e_prototype.h"
+#include "iavf_prototype.h"
 #include "iavf_client.h"
 
 static
diff --git a/drivers/net/ethernet/intel/iavf/iavf_common.c b/drivers/net/ethernet/intel/iavf/iavf_common.c
new file mode 100644 (file)
index 0000000..768369c
--- /dev/null
@@ -0,0 +1,955 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#include "iavf_type.h"
+#include "i40e_adminq.h"
+#include "iavf_prototype.h"
+#include <linux/avf/virtchnl.h>
+
+/**
+ * iavf_set_mac_type - Sets MAC type
+ * @hw: pointer to the HW structure
+ *
+ * This function sets the mac type of the adapter based on the
+ * vendor ID and device ID stored in the hw structure.
+ **/
+iavf_status iavf_set_mac_type(struct iavf_hw *hw)
+{
+       iavf_status status = 0;
+
+       if (hw->vendor_id == PCI_VENDOR_ID_INTEL) {
+               switch (hw->device_id) {
+               case IAVF_DEV_ID_X722_VF:
+                       hw->mac.type = IAVF_MAC_X722_VF;
+                       break;
+               case IAVF_DEV_ID_VF:
+               case IAVF_DEV_ID_VF_HV:
+               case IAVF_DEV_ID_ADAPTIVE_VF:
+                       hw->mac.type = IAVF_MAC_VF;
+                       break;
+               default:
+                       hw->mac.type = IAVF_MAC_GENERIC;
+                       break;
+               }
+       } else {
+               status = I40E_ERR_DEVICE_NOT_SUPPORTED;
+       }
+
+       hw_dbg(hw, "found mac: %d, returns: %d\n", hw->mac.type, status);
+       return status;
+}
+
+/**
+ * iavf_aq_str - convert AQ err code to a string
+ * @hw: pointer to the HW structure
+ * @aq_err: the AQ error code to convert
+ **/
+const char *iavf_aq_str(struct iavf_hw *hw, enum i40e_admin_queue_err aq_err)
+{
+       switch (aq_err) {
+       case I40E_AQ_RC_OK:
+               return "OK";
+       case I40E_AQ_RC_EPERM:
+               return "I40E_AQ_RC_EPERM";
+       case I40E_AQ_RC_ENOENT:
+               return "I40E_AQ_RC_ENOENT";
+       case I40E_AQ_RC_ESRCH:
+               return "I40E_AQ_RC_ESRCH";
+       case I40E_AQ_RC_EINTR:
+               return "I40E_AQ_RC_EINTR";
+       case I40E_AQ_RC_EIO:
+               return "I40E_AQ_RC_EIO";
+       case I40E_AQ_RC_ENXIO:
+               return "I40E_AQ_RC_ENXIO";
+       case I40E_AQ_RC_E2BIG:
+               return "I40E_AQ_RC_E2BIG";
+       case I40E_AQ_RC_EAGAIN:
+               return "I40E_AQ_RC_EAGAIN";
+       case I40E_AQ_RC_ENOMEM:
+               return "I40E_AQ_RC_ENOMEM";
+       case I40E_AQ_RC_EACCES:
+               return "I40E_AQ_RC_EACCES";
+       case I40E_AQ_RC_EFAULT:
+               return "I40E_AQ_RC_EFAULT";
+       case I40E_AQ_RC_EBUSY:
+               return "I40E_AQ_RC_EBUSY";
+       case I40E_AQ_RC_EEXIST:
+               return "I40E_AQ_RC_EEXIST";
+       case I40E_AQ_RC_EINVAL:
+               return "I40E_AQ_RC_EINVAL";
+       case I40E_AQ_RC_ENOTTY:
+               return "I40E_AQ_RC_ENOTTY";
+       case I40E_AQ_RC_ENOSPC:
+               return "I40E_AQ_RC_ENOSPC";
+       case I40E_AQ_RC_ENOSYS:
+               return "I40E_AQ_RC_ENOSYS";
+       case I40E_AQ_RC_ERANGE:
+               return "I40E_AQ_RC_ERANGE";
+       case I40E_AQ_RC_EFLUSHED:
+               return "I40E_AQ_RC_EFLUSHED";
+       case I40E_AQ_RC_BAD_ADDR:
+               return "I40E_AQ_RC_BAD_ADDR";
+       case I40E_AQ_RC_EMODE:
+               return "I40E_AQ_RC_EMODE";
+       case I40E_AQ_RC_EFBIG:
+               return "I40E_AQ_RC_EFBIG";
+       }
+
+       snprintf(hw->err_str, sizeof(hw->err_str), "%d", aq_err);
+       return hw->err_str;
+}
+
+/**
+ * iavf_stat_str - convert status err code to a string
+ * @hw: pointer to the HW structure
+ * @stat_err: the status error code to convert
+ **/
+const char *iavf_stat_str(struct iavf_hw *hw, iavf_status stat_err)
+{
+       switch (stat_err) {
+       case 0:
+               return "OK";
+       case I40E_ERR_NVM:
+               return "I40E_ERR_NVM";
+       case I40E_ERR_NVM_CHECKSUM:
+               return "I40E_ERR_NVM_CHECKSUM";
+       case I40E_ERR_PHY:
+               return "I40E_ERR_PHY";
+       case I40E_ERR_CONFIG:
+               return "I40E_ERR_CONFIG";
+       case I40E_ERR_PARAM:
+               return "I40E_ERR_PARAM";
+       case I40E_ERR_MAC_TYPE:
+               return "I40E_ERR_MAC_TYPE";
+       case I40E_ERR_UNKNOWN_PHY:
+               return "I40E_ERR_UNKNOWN_PHY";
+       case I40E_ERR_LINK_SETUP:
+               return "I40E_ERR_LINK_SETUP";
+       case I40E_ERR_ADAPTER_STOPPED:
+               return "I40E_ERR_ADAPTER_STOPPED";
+       case I40E_ERR_INVALID_MAC_ADDR:
+               return "I40E_ERR_INVALID_MAC_ADDR";
+       case I40E_ERR_DEVICE_NOT_SUPPORTED:
+               return "I40E_ERR_DEVICE_NOT_SUPPORTED";
+       case I40E_ERR_MASTER_REQUESTS_PENDING:
+               return "I40E_ERR_MASTER_REQUESTS_PENDING";
+       case I40E_ERR_INVALID_LINK_SETTINGS:
+               return "I40E_ERR_INVALID_LINK_SETTINGS";
+       case I40E_ERR_AUTONEG_NOT_COMPLETE:
+               return "I40E_ERR_AUTONEG_NOT_COMPLETE";
+       case I40E_ERR_RESET_FAILED:
+               return "I40E_ERR_RESET_FAILED";
+       case I40E_ERR_SWFW_SYNC:
+               return "I40E_ERR_SWFW_SYNC";
+       case I40E_ERR_NO_AVAILABLE_VSI:
+               return "I40E_ERR_NO_AVAILABLE_VSI";
+       case I40E_ERR_NO_MEMORY:
+               return "I40E_ERR_NO_MEMORY";
+       case I40E_ERR_BAD_PTR:
+               return "I40E_ERR_BAD_PTR";
+       case I40E_ERR_RING_FULL:
+               return "I40E_ERR_RING_FULL";
+       case I40E_ERR_INVALID_PD_ID:
+               return "I40E_ERR_INVALID_PD_ID";
+       case I40E_ERR_INVALID_QP_ID:
+               return "I40E_ERR_INVALID_QP_ID";
+       case I40E_ERR_INVALID_CQ_ID:
+               return "I40E_ERR_INVALID_CQ_ID";
+       case I40E_ERR_INVALID_CEQ_ID:
+               return "I40E_ERR_INVALID_CEQ_ID";
+       case I40E_ERR_INVALID_AEQ_ID:
+               return "I40E_ERR_INVALID_AEQ_ID";
+       case I40E_ERR_INVALID_SIZE:
+               return "I40E_ERR_INVALID_SIZE";
+       case I40E_ERR_INVALID_ARP_INDEX:
+               return "I40E_ERR_INVALID_ARP_INDEX";
+       case I40E_ERR_INVALID_FPM_FUNC_ID:
+               return "I40E_ERR_INVALID_FPM_FUNC_ID";
+       case I40E_ERR_QP_INVALID_MSG_SIZE:
+               return "I40E_ERR_QP_INVALID_MSG_SIZE";
+       case I40E_ERR_QP_TOOMANY_WRS_POSTED:
+               return "I40E_ERR_QP_TOOMANY_WRS_POSTED";
+       case I40E_ERR_INVALID_FRAG_COUNT:
+               return "I40E_ERR_INVALID_FRAG_COUNT";
+       case I40E_ERR_QUEUE_EMPTY:
+               return "I40E_ERR_QUEUE_EMPTY";
+       case I40E_ERR_INVALID_ALIGNMENT:
+               return "I40E_ERR_INVALID_ALIGNMENT";
+       case I40E_ERR_FLUSHED_QUEUE:
+               return "I40E_ERR_FLUSHED_QUEUE";
+       case I40E_ERR_INVALID_PUSH_PAGE_INDEX:
+               return "I40E_ERR_INVALID_PUSH_PAGE_INDEX";
+       case I40E_ERR_INVALID_IMM_DATA_SIZE:
+               return "I40E_ERR_INVALID_IMM_DATA_SIZE";
+       case I40E_ERR_TIMEOUT:
+               return "I40E_ERR_TIMEOUT";
+       case I40E_ERR_OPCODE_MISMATCH:
+               return "I40E_ERR_OPCODE_MISMATCH";
+       case I40E_ERR_CQP_COMPL_ERROR:
+               return "I40E_ERR_CQP_COMPL_ERROR";
+       case I40E_ERR_INVALID_VF_ID:
+               return "I40E_ERR_INVALID_VF_ID";
+       case I40E_ERR_INVALID_HMCFN_ID:
+               return "I40E_ERR_INVALID_HMCFN_ID";
+       case I40E_ERR_BACKING_PAGE_ERROR:
+               return "I40E_ERR_BACKING_PAGE_ERROR";
+       case I40E_ERR_NO_PBLCHUNKS_AVAILABLE:
+               return "I40E_ERR_NO_PBLCHUNKS_AVAILABLE";
+       case I40E_ERR_INVALID_PBLE_INDEX:
+               return "I40E_ERR_INVALID_PBLE_INDEX";
+       case I40E_ERR_INVALID_SD_INDEX:
+               return "I40E_ERR_INVALID_SD_INDEX";
+       case I40E_ERR_INVALID_PAGE_DESC_INDEX:
+               return "I40E_ERR_INVALID_PAGE_DESC_INDEX";
+       case I40E_ERR_INVALID_SD_TYPE:
+               return "I40E_ERR_INVALID_SD_TYPE";
+       case I40E_ERR_MEMCPY_FAILED:
+               return "I40E_ERR_MEMCPY_FAILED";
+       case I40E_ERR_INVALID_HMC_OBJ_INDEX:
+               return "I40E_ERR_INVALID_HMC_OBJ_INDEX";
+       case I40E_ERR_INVALID_HMC_OBJ_COUNT:
+               return "I40E_ERR_INVALID_HMC_OBJ_COUNT";
+       case I40E_ERR_INVALID_SRQ_ARM_LIMIT:
+               return "I40E_ERR_INVALID_SRQ_ARM_LIMIT";
+       case I40E_ERR_SRQ_ENABLED:
+               return "I40E_ERR_SRQ_ENABLED";
+       case I40E_ERR_ADMIN_QUEUE_ERROR:
+               return "I40E_ERR_ADMIN_QUEUE_ERROR";
+       case I40E_ERR_ADMIN_QUEUE_TIMEOUT:
+               return "I40E_ERR_ADMIN_QUEUE_TIMEOUT";
+       case I40E_ERR_BUF_TOO_SHORT:
+               return "I40E_ERR_BUF_TOO_SHORT";
+       case I40E_ERR_ADMIN_QUEUE_FULL:
+               return "I40E_ERR_ADMIN_QUEUE_FULL";
+       case I40E_ERR_ADMIN_QUEUE_NO_WORK:
+               return "I40E_ERR_ADMIN_QUEUE_NO_WORK";
+       case I40E_ERR_BAD_IWARP_CQE:
+               return "I40E_ERR_BAD_IWARP_CQE";
+       case I40E_ERR_NVM_BLANK_MODE:
+               return "I40E_ERR_NVM_BLANK_MODE";
+       case I40E_ERR_NOT_IMPLEMENTED:
+               return "I40E_ERR_NOT_IMPLEMENTED";
+       case I40E_ERR_PE_DOORBELL_NOT_ENABLED:
+               return "I40E_ERR_PE_DOORBELL_NOT_ENABLED";
+       case I40E_ERR_DIAG_TEST_FAILED:
+               return "I40E_ERR_DIAG_TEST_FAILED";
+       case I40E_ERR_NOT_READY:
+               return "I40E_ERR_NOT_READY";
+       case I40E_NOT_SUPPORTED:
+               return "I40E_NOT_SUPPORTED";
+       case I40E_ERR_FIRMWARE_API_VERSION:
+               return "I40E_ERR_FIRMWARE_API_VERSION";
+       case I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR:
+               return "I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR";
+       }
+
+       snprintf(hw->err_str, sizeof(hw->err_str), "%d", stat_err);
+       return hw->err_str;
+}
+
+/**
+ * iavf_debug_aq
+ * @hw: debug mask related to admin queue
+ * @mask: debug mask
+ * @desc: pointer to admin queue descriptor
+ * @buffer: pointer to command buffer
+ * @buf_len: max length of buffer
+ *
+ * Dumps debug log about adminq command with descriptor contents.
+ **/
+void iavf_debug_aq(struct iavf_hw *hw, enum iavf_debug_mask mask, void *desc,
+                  void *buffer, u16 buf_len)
+{
+       struct i40e_aq_desc *aq_desc = (struct i40e_aq_desc *)desc;
+       u8 *buf = (u8 *)buffer;
+
+       if ((!(mask & hw->debug_mask)) || !desc)
+               return;
+
+       iavf_debug(hw, mask,
+                  "AQ CMD: opcode 0x%04X, flags 0x%04X, datalen 0x%04X, retval 0x%04X\n",
+                  le16_to_cpu(aq_desc->opcode),
+                  le16_to_cpu(aq_desc->flags),
+                  le16_to_cpu(aq_desc->datalen),
+                  le16_to_cpu(aq_desc->retval));
+       iavf_debug(hw, mask, "\tcookie (h,l) 0x%08X 0x%08X\n",
+                  le32_to_cpu(aq_desc->cookie_high),
+                  le32_to_cpu(aq_desc->cookie_low));
+       iavf_debug(hw, mask, "\tparam (0,1)  0x%08X 0x%08X\n",
+                  le32_to_cpu(aq_desc->params.internal.param0),
+                  le32_to_cpu(aq_desc->params.internal.param1));
+       iavf_debug(hw, mask, "\taddr (h,l)   0x%08X 0x%08X\n",
+                  le32_to_cpu(aq_desc->params.external.addr_high),
+                  le32_to_cpu(aq_desc->params.external.addr_low));
+
+       if (buffer && aq_desc->datalen) {
+               u16 len = le16_to_cpu(aq_desc->datalen);
+
+               iavf_debug(hw, mask, "AQ CMD Buffer:\n");
+               if (buf_len < len)
+                       len = buf_len;
+               /* write the full 16-byte chunks */
+               if (hw->debug_mask & mask) {
+                       char prefix[27];
+
+                       snprintf(prefix, sizeof(prefix),
+                                "iavf %02x:%02x.%x: \t0x",
+                                hw->bus.bus_id,
+                                hw->bus.device,
+                                hw->bus.func);
+
+                       print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET,
+                                      16, 1, buf, len, false);
+               }
+       }
+}
+
+/**
+ * iavf_check_asq_alive
+ * @hw: pointer to the hw struct
+ *
+ * Returns true if Queue is enabled else false.
+ **/
+bool iavf_check_asq_alive(struct iavf_hw *hw)
+{
+       if (hw->aq.asq.len)
+               return !!(rd32(hw, hw->aq.asq.len) &
+                         IAVF_VF_ATQLEN1_ATQENABLE_MASK);
+       else
+               return false;
+}
+
+/**
+ * iavf_aq_queue_shutdown
+ * @hw: pointer to the hw struct
+ * @unloading: is the driver unloading itself
+ *
+ * Tell the Firmware that we're shutting down the AdminQ and whether
+ * or not the driver is unloading as well.
+ **/
+iavf_status iavf_aq_queue_shutdown(struct iavf_hw *hw, bool unloading)
+{
+       struct i40e_aq_desc desc;
+       struct i40e_aqc_queue_shutdown *cmd =
+               (struct i40e_aqc_queue_shutdown *)&desc.params.raw;
+       iavf_status status;
+
+       iavf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_queue_shutdown);
+
+       if (unloading)
+               cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING);
+       status = iavf_asq_send_command(hw, &desc, NULL, 0, NULL);
+
+       return status;
+}
+
+/**
+ * iavf_aq_get_set_rss_lut
+ * @hw: pointer to the hardware structure
+ * @vsi_id: vsi fw index
+ * @pf_lut: for PF table set true, for VSI table set false
+ * @lut: pointer to the lut buffer provided by the caller
+ * @lut_size: size of the lut buffer
+ * @set: set true to set the table, false to get the table
+ *
+ * Internal function to get or set RSS look up table
+ **/
+static iavf_status iavf_aq_get_set_rss_lut(struct iavf_hw *hw,
+                                          u16 vsi_id, bool pf_lut,
+                                          u8 *lut, u16 lut_size,
+                                          bool set)
+{
+       iavf_status status;
+       struct i40e_aq_desc desc;
+       struct i40e_aqc_get_set_rss_lut *cmd_resp =
+                  (struct i40e_aqc_get_set_rss_lut *)&desc.params.raw;
+
+       if (set)
+               iavf_fill_default_direct_cmd_desc(&desc,
+                                                 i40e_aqc_opc_set_rss_lut);
+       else
+               iavf_fill_default_direct_cmd_desc(&desc,
+                                                 i40e_aqc_opc_get_rss_lut);
+
+       /* Indirect command */
+       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_BUF);
+       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_RD);
+
+       cmd_resp->vsi_id =
+                       cpu_to_le16((u16)((vsi_id <<
+                                         I40E_AQC_SET_RSS_LUT_VSI_ID_SHIFT) &
+                                         I40E_AQC_SET_RSS_LUT_VSI_ID_MASK));
+       cmd_resp->vsi_id |= cpu_to_le16((u16)I40E_AQC_SET_RSS_LUT_VSI_VALID);
+
+       if (pf_lut)
+               cmd_resp->flags |= cpu_to_le16((u16)
+                                       ((I40E_AQC_SET_RSS_LUT_TABLE_TYPE_PF <<
+                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_SHIFT) &
+                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_MASK));
+       else
+               cmd_resp->flags |= cpu_to_le16((u16)
+                                       ((I40E_AQC_SET_RSS_LUT_TABLE_TYPE_VSI <<
+                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_SHIFT) &
+                                       I40E_AQC_SET_RSS_LUT_TABLE_TYPE_MASK));
+
+       status = iavf_asq_send_command(hw, &desc, lut, lut_size, NULL);
+
+       return status;
+}
+
+/**
+ * iavf_aq_get_rss_lut
+ * @hw: pointer to the hardware structure
+ * @vsi_id: vsi fw index
+ * @pf_lut: for PF table set true, for VSI table set false
+ * @lut: pointer to the lut buffer provided by the caller
+ * @lut_size: size of the lut buffer
+ *
+ * get the RSS lookup table, PF or VSI type
+ **/
+iavf_status iavf_aq_get_rss_lut(struct iavf_hw *hw, u16 vsi_id,
+                               bool pf_lut, u8 *lut, u16 lut_size)
+{
+       return iavf_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size,
+                                      false);
+}
+
+/**
+ * iavf_aq_set_rss_lut
+ * @hw: pointer to the hardware structure
+ * @vsi_id: vsi fw index
+ * @pf_lut: for PF table set true, for VSI table set false
+ * @lut: pointer to the lut buffer provided by the caller
+ * @lut_size: size of the lut buffer
+ *
+ * set the RSS lookup table, PF or VSI type
+ **/
+iavf_status iavf_aq_set_rss_lut(struct iavf_hw *hw, u16 vsi_id,
+                               bool pf_lut, u8 *lut, u16 lut_size)
+{
+       return iavf_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size, true);
+}
+
+/**
+ * iavf_aq_get_set_rss_key
+ * @hw: pointer to the hw struct
+ * @vsi_id: vsi fw index
+ * @key: pointer to key info struct
+ * @set: set true to set the key, false to get the key
+ *
+ * get the RSS key per VSI
+ **/
+static
+iavf_status iavf_aq_get_set_rss_key(struct iavf_hw *hw, u16 vsi_id,
+                                   struct i40e_aqc_get_set_rss_key_data *key,
+                                   bool set)
+{
+       iavf_status status;
+       struct i40e_aq_desc desc;
+       struct i40e_aqc_get_set_rss_key *cmd_resp =
+                       (struct i40e_aqc_get_set_rss_key *)&desc.params.raw;
+       u16 key_size = sizeof(struct i40e_aqc_get_set_rss_key_data);
+
+       if (set)
+               iavf_fill_default_direct_cmd_desc(&desc,
+                                                 i40e_aqc_opc_set_rss_key);
+       else
+               iavf_fill_default_direct_cmd_desc(&desc,
+                                                 i40e_aqc_opc_get_rss_key);
+
+       /* Indirect command */
+       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_BUF);
+       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_RD);
+
+       cmd_resp->vsi_id =
+                       cpu_to_le16((u16)((vsi_id <<
+                                         I40E_AQC_SET_RSS_KEY_VSI_ID_SHIFT) &
+                                         I40E_AQC_SET_RSS_KEY_VSI_ID_MASK));
+       cmd_resp->vsi_id |= cpu_to_le16((u16)I40E_AQC_SET_RSS_KEY_VSI_VALID);
+
+       status = iavf_asq_send_command(hw, &desc, key, key_size, NULL);
+
+       return status;
+}
+
+/**
+ * iavf_aq_get_rss_key
+ * @hw: pointer to the hw struct
+ * @vsi_id: vsi fw index
+ * @key: pointer to key info struct
+ *
+ **/
+iavf_status iavf_aq_get_rss_key(struct iavf_hw *hw, u16 vsi_id,
+                               struct i40e_aqc_get_set_rss_key_data *key)
+{
+       return iavf_aq_get_set_rss_key(hw, vsi_id, key, false);
+}
+
+/**
+ * iavf_aq_set_rss_key
+ * @hw: pointer to the hw struct
+ * @vsi_id: vsi fw index
+ * @key: pointer to key info struct
+ *
+ * set the RSS key per VSI
+ **/
+iavf_status iavf_aq_set_rss_key(struct iavf_hw *hw, u16 vsi_id,
+                               struct i40e_aqc_get_set_rss_key_data *key)
+{
+       return iavf_aq_get_set_rss_key(hw, vsi_id, key, true);
+}
+
+/* The iavf_ptype_lookup table is used to convert from the 8-bit ptype in the
+ * hardware to a bit-field that can be used by SW to more easily determine the
+ * packet type.
+ *
+ * Macros are used to shorten the table lines and make this table human
+ * readable.
+ *
+ * We store the PTYPE in the top byte of the bit field - this is just so that
+ * we can check that the table doesn't have a row missing, as the index into
+ * the table should be the PTYPE.
+ *
+ * Typical work flow:
+ *
+ * IF NOT iavf_ptype_lookup[ptype].known
+ * THEN
+ *      Packet is unknown
+ * ELSE IF iavf_ptype_lookup[ptype].outer_ip == I40E_RX_PTYPE_OUTER_IP
+ *      Use the rest of the fields to look at the tunnels, inner protocols, etc
+ * ELSE
+ *      Use the enum iavf_rx_l2_ptype to decode the packet type
+ * ENDIF
+ */
+
+/* macro to make the table lines short */
+#define IAVF_PTT(PTYPE, OUTER_IP, OUTER_IP_VER, OUTER_FRAG, T, TE, TEF, I, PL)\
+       {       PTYPE, \
+               1, \
+               IAVF_RX_PTYPE_OUTER_##OUTER_IP, \
+               IAVF_RX_PTYPE_OUTER_##OUTER_IP_VER, \
+               IAVF_RX_PTYPE_##OUTER_FRAG, \
+               IAVF_RX_PTYPE_TUNNEL_##T, \
+               IAVF_RX_PTYPE_TUNNEL_END_##TE, \
+               IAVF_RX_PTYPE_##TEF, \
+               IAVF_RX_PTYPE_INNER_PROT_##I, \
+               IAVF_RX_PTYPE_PAYLOAD_LAYER_##PL }
+
+#define IAVF_PTT_UNUSED_ENTRY(PTYPE) \
+               { PTYPE, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+/* shorter macros makes the table fit but are terse */
+#define IAVF_RX_PTYPE_NOF              IAVF_RX_PTYPE_NOT_FRAG
+#define IAVF_RX_PTYPE_FRG              IAVF_RX_PTYPE_FRAG
+#define IAVF_RX_PTYPE_INNER_PROT_TS    IAVF_RX_PTYPE_INNER_PROT_TIMESYNC
+
+/* Lookup table mapping the HW PTYPE to the bit field for decoding */
+struct iavf_rx_ptype_decoded iavf_ptype_lookup[] = {
+       /* L2 Packet types */
+       IAVF_PTT_UNUSED_ENTRY(0),
+       IAVF_PTT(1,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
+       IAVF_PTT(2,  L2, NONE, NOF, NONE, NONE, NOF, TS,   PAY2),
+       IAVF_PTT(3,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
+       IAVF_PTT_UNUSED_ENTRY(4),
+       IAVF_PTT_UNUSED_ENTRY(5),
+       IAVF_PTT(6,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
+       IAVF_PTT(7,  L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
+       IAVF_PTT_UNUSED_ENTRY(8),
+       IAVF_PTT_UNUSED_ENTRY(9),
+       IAVF_PTT(10, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
+       IAVF_PTT(11, L2, NONE, NOF, NONE, NONE, NOF, NONE, NONE),
+       IAVF_PTT(12, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(13, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(14, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(15, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(16, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(17, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(18, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(19, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(20, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(21, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY3),
+
+       /* Non Tunneled IPv4 */
+       IAVF_PTT(22, IP, IPV4, FRG, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(23, IP, IPV4, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(24, IP, IPV4, NOF, NONE, NONE, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(25),
+       IAVF_PTT(26, IP, IPV4, NOF, NONE, NONE, NOF, TCP,  PAY4),
+       IAVF_PTT(27, IP, IPV4, NOF, NONE, NONE, NOF, SCTP, PAY4),
+       IAVF_PTT(28, IP, IPV4, NOF, NONE, NONE, NOF, ICMP, PAY4),
+
+       /* IPv4 --> IPv4 */
+       IAVF_PTT(29, IP, IPV4, NOF, IP_IP, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(30, IP, IPV4, NOF, IP_IP, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(31, IP, IPV4, NOF, IP_IP, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(32),
+       IAVF_PTT(33, IP, IPV4, NOF, IP_IP, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(34, IP, IPV4, NOF, IP_IP, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(35, IP, IPV4, NOF, IP_IP, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv4 --> IPv6 */
+       IAVF_PTT(36, IP, IPV4, NOF, IP_IP, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(37, IP, IPV4, NOF, IP_IP, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(38, IP, IPV4, NOF, IP_IP, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(39),
+       IAVF_PTT(40, IP, IPV4, NOF, IP_IP, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(41, IP, IPV4, NOF, IP_IP, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(42, IP, IPV4, NOF, IP_IP, IPV6, NOF, ICMP, PAY4),
+
+       /* IPv4 --> GRE/NAT */
+       IAVF_PTT(43, IP, IPV4, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3),
+
+       /* IPv4 --> GRE/NAT --> IPv4 */
+       IAVF_PTT(44, IP, IPV4, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(45, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(46, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(47),
+       IAVF_PTT(48, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(49, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(50, IP, IPV4, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv4 --> GRE/NAT --> IPv6 */
+       IAVF_PTT(51, IP, IPV4, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(52, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(53, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(54),
+       IAVF_PTT(55, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(56, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(57, IP, IPV4, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4),
+
+       /* IPv4 --> GRE/NAT --> MAC */
+       IAVF_PTT(58, IP, IPV4, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3),
+
+       /* IPv4 --> GRE/NAT --> MAC --> IPv4 */
+       IAVF_PTT(59, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(60, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(61, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(62),
+       IAVF_PTT(63, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(64, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(65, IP, IPV4, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv4 --> GRE/NAT -> MAC --> IPv6 */
+       IAVF_PTT(66, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(67, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(68, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(69),
+       IAVF_PTT(70, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(71, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(72, IP, IPV4, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4),
+
+       /* IPv4 --> GRE/NAT --> MAC/VLAN */
+       IAVF_PTT(73, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3),
+
+       /* IPv4 ---> GRE/NAT -> MAC/VLAN --> IPv4 */
+       IAVF_PTT(74, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(75, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(76, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(77),
+       IAVF_PTT(78, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(79, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(80, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv4 -> GRE/NAT -> MAC/VLAN --> IPv6 */
+       IAVF_PTT(81, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(82, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(83, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(84),
+       IAVF_PTT(85, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(86, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(87, IP, IPV4, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4),
+
+       /* Non Tunneled IPv6 */
+       IAVF_PTT(88, IP, IPV6, FRG, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(89, IP, IPV6, NOF, NONE, NONE, NOF, NONE, PAY3),
+       IAVF_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP,  PAY3),
+       IAVF_PTT_UNUSED_ENTRY(91),
+       IAVF_PTT(92, IP, IPV6, NOF, NONE, NONE, NOF, TCP,  PAY4),
+       IAVF_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4),
+       IAVF_PTT(94, IP, IPV6, NOF, NONE, NONE, NOF, ICMP, PAY4),
+
+       /* IPv6 --> IPv4 */
+       IAVF_PTT(95,  IP, IPV6, NOF, IP_IP, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(96,  IP, IPV6, NOF, IP_IP, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(97,  IP, IPV6, NOF, IP_IP, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(98),
+       IAVF_PTT(99,  IP, IPV6, NOF, IP_IP, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(100, IP, IPV6, NOF, IP_IP, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(101, IP, IPV6, NOF, IP_IP, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv6 --> IPv6 */
+       IAVF_PTT(102, IP, IPV6, NOF, IP_IP, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(103, IP, IPV6, NOF, IP_IP, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(104, IP, IPV6, NOF, IP_IP, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(105),
+       IAVF_PTT(106, IP, IPV6, NOF, IP_IP, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(107, IP, IPV6, NOF, IP_IP, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(108, IP, IPV6, NOF, IP_IP, IPV6, NOF, ICMP, PAY4),
+
+       /* IPv6 --> GRE/NAT */
+       IAVF_PTT(109, IP, IPV6, NOF, IP_GRENAT, NONE, NOF, NONE, PAY3),
+
+       /* IPv6 --> GRE/NAT -> IPv4 */
+       IAVF_PTT(110, IP, IPV6, NOF, IP_GRENAT, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(111, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(112, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(113),
+       IAVF_PTT(114, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(115, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(116, IP, IPV6, NOF, IP_GRENAT, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv6 --> GRE/NAT -> IPv6 */
+       IAVF_PTT(117, IP, IPV6, NOF, IP_GRENAT, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(118, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(119, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(120),
+       IAVF_PTT(121, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(122, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(123, IP, IPV6, NOF, IP_GRENAT, IPV6, NOF, ICMP, PAY4),
+
+       /* IPv6 --> GRE/NAT -> MAC */
+       IAVF_PTT(124, IP, IPV6, NOF, IP_GRENAT_MAC, NONE, NOF, NONE, PAY3),
+
+       /* IPv6 --> GRE/NAT -> MAC -> IPv4 */
+       IAVF_PTT(125, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(126, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(127, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(128),
+       IAVF_PTT(129, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(130, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(131, IP, IPV6, NOF, IP_GRENAT_MAC, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv6 --> GRE/NAT -> MAC -> IPv6 */
+       IAVF_PTT(132, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(133, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(134, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(135),
+       IAVF_PTT(136, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(137, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(138, IP, IPV6, NOF, IP_GRENAT_MAC, IPV6, NOF, ICMP, PAY4),
+
+       /* IPv6 --> GRE/NAT -> MAC/VLAN */
+       IAVF_PTT(139, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, NONE, NOF, NONE, PAY3),
+
+       /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv4 */
+       IAVF_PTT(140, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, FRG, NONE, PAY3),
+       IAVF_PTT(141, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, NONE, PAY3),
+       IAVF_PTT(142, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(143),
+       IAVF_PTT(144, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, TCP,  PAY4),
+       IAVF_PTT(145, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, SCTP, PAY4),
+       IAVF_PTT(146, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV4, NOF, ICMP, PAY4),
+
+       /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv6 */
+       IAVF_PTT(147, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, FRG, NONE, PAY3),
+       IAVF_PTT(148, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, NONE, PAY3),
+       IAVF_PTT(149, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, UDP,  PAY4),
+       IAVF_PTT_UNUSED_ENTRY(150),
+       IAVF_PTT(151, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, TCP,  PAY4),
+       IAVF_PTT(152, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, SCTP, PAY4),
+       IAVF_PTT(153, IP, IPV6, NOF, IP_GRENAT_MAC_VLAN, IPV6, NOF, ICMP, PAY4),
+
+       /* unused entries */
+       IAVF_PTT_UNUSED_ENTRY(154),
+       IAVF_PTT_UNUSED_ENTRY(155),
+       IAVF_PTT_UNUSED_ENTRY(156),
+       IAVF_PTT_UNUSED_ENTRY(157),
+       IAVF_PTT_UNUSED_ENTRY(158),
+       IAVF_PTT_UNUSED_ENTRY(159),
+
+       IAVF_PTT_UNUSED_ENTRY(160),
+       IAVF_PTT_UNUSED_ENTRY(161),
+       IAVF_PTT_UNUSED_ENTRY(162),
+       IAVF_PTT_UNUSED_ENTRY(163),
+       IAVF_PTT_UNUSED_ENTRY(164),
+       IAVF_PTT_UNUSED_ENTRY(165),
+       IAVF_PTT_UNUSED_ENTRY(166),
+       IAVF_PTT_UNUSED_ENTRY(167),
+       IAVF_PTT_UNUSED_ENTRY(168),
+       IAVF_PTT_UNUSED_ENTRY(169),
+
+       IAVF_PTT_UNUSED_ENTRY(170),
+       IAVF_PTT_UNUSED_ENTRY(171),
+       IAVF_PTT_UNUSED_ENTRY(172),
+       IAVF_PTT_UNUSED_ENTRY(173),
+       IAVF_PTT_UNUSED_ENTRY(174),
+       IAVF_PTT_UNUSED_ENTRY(175),
+       IAVF_PTT_UNUSED_ENTRY(176),
+       IAVF_PTT_UNUSED_ENTRY(177),
+       IAVF_PTT_UNUSED_ENTRY(178),
+       IAVF_PTT_UNUSED_ENTRY(179),
+
+       IAVF_PTT_UNUSED_ENTRY(180),
+       IAVF_PTT_UNUSED_ENTRY(181),
+       IAVF_PTT_UNUSED_ENTRY(182),
+       IAVF_PTT_UNUSED_ENTRY(183),
+       IAVF_PTT_UNUSED_ENTRY(184),
+       IAVF_PTT_UNUSED_ENTRY(185),
+       IAVF_PTT_UNUSED_ENTRY(186),
+       IAVF_PTT_UNUSED_ENTRY(187),
+       IAVF_PTT_UNUSED_ENTRY(188),
+       IAVF_PTT_UNUSED_ENTRY(189),
+
+       IAVF_PTT_UNUSED_ENTRY(190),
+       IAVF_PTT_UNUSED_ENTRY(191),
+       IAVF_PTT_UNUSED_ENTRY(192),
+       IAVF_PTT_UNUSED_ENTRY(193),
+       IAVF_PTT_UNUSED_ENTRY(194),
+       IAVF_PTT_UNUSED_ENTRY(195),
+       IAVF_PTT_UNUSED_ENTRY(196),
+       IAVF_PTT_UNUSED_ENTRY(197),
+       IAVF_PTT_UNUSED_ENTRY(198),
+       IAVF_PTT_UNUSED_ENTRY(199),
+
+       IAVF_PTT_UNUSED_ENTRY(200),
+       IAVF_PTT_UNUSED_ENTRY(201),
+       IAVF_PTT_UNUSED_ENTRY(202),
+       IAVF_PTT_UNUSED_ENTRY(203),
+       IAVF_PTT_UNUSED_ENTRY(204),
+       IAVF_PTT_UNUSED_ENTRY(205),
+       IAVF_PTT_UNUSED_ENTRY(206),
+       IAVF_PTT_UNUSED_ENTRY(207),
+       IAVF_PTT_UNUSED_ENTRY(208),
+       IAVF_PTT_UNUSED_ENTRY(209),
+
+       IAVF_PTT_UNUSED_ENTRY(210),
+       IAVF_PTT_UNUSED_ENTRY(211),
+       IAVF_PTT_UNUSED_ENTRY(212),
+       IAVF_PTT_UNUSED_ENTRY(213),
+       IAVF_PTT_UNUSED_ENTRY(214),
+       IAVF_PTT_UNUSED_ENTRY(215),
+       IAVF_PTT_UNUSED_ENTRY(216),
+       IAVF_PTT_UNUSED_ENTRY(217),
+       IAVF_PTT_UNUSED_ENTRY(218),
+       IAVF_PTT_UNUSED_ENTRY(219),
+
+       IAVF_PTT_UNUSED_ENTRY(220),
+       IAVF_PTT_UNUSED_ENTRY(221),
+       IAVF_PTT_UNUSED_ENTRY(222),
+       IAVF_PTT_UNUSED_ENTRY(223),
+       IAVF_PTT_UNUSED_ENTRY(224),
+       IAVF_PTT_UNUSED_ENTRY(225),
+       IAVF_PTT_UNUSED_ENTRY(226),
+       IAVF_PTT_UNUSED_ENTRY(227),
+       IAVF_PTT_UNUSED_ENTRY(228),
+       IAVF_PTT_UNUSED_ENTRY(229),
+
+       IAVF_PTT_UNUSED_ENTRY(230),
+       IAVF_PTT_UNUSED_ENTRY(231),
+       IAVF_PTT_UNUSED_ENTRY(232),
+       IAVF_PTT_UNUSED_ENTRY(233),
+       IAVF_PTT_UNUSED_ENTRY(234),
+       IAVF_PTT_UNUSED_ENTRY(235),
+       IAVF_PTT_UNUSED_ENTRY(236),
+       IAVF_PTT_UNUSED_ENTRY(237),
+       IAVF_PTT_UNUSED_ENTRY(238),
+       IAVF_PTT_UNUSED_ENTRY(239),
+
+       IAVF_PTT_UNUSED_ENTRY(240),
+       IAVF_PTT_UNUSED_ENTRY(241),
+       IAVF_PTT_UNUSED_ENTRY(242),
+       IAVF_PTT_UNUSED_ENTRY(243),
+       IAVF_PTT_UNUSED_ENTRY(244),
+       IAVF_PTT_UNUSED_ENTRY(245),
+       IAVF_PTT_UNUSED_ENTRY(246),
+       IAVF_PTT_UNUSED_ENTRY(247),
+       IAVF_PTT_UNUSED_ENTRY(248),
+       IAVF_PTT_UNUSED_ENTRY(249),
+
+       IAVF_PTT_UNUSED_ENTRY(250),
+       IAVF_PTT_UNUSED_ENTRY(251),
+       IAVF_PTT_UNUSED_ENTRY(252),
+       IAVF_PTT_UNUSED_ENTRY(253),
+       IAVF_PTT_UNUSED_ENTRY(254),
+       IAVF_PTT_UNUSED_ENTRY(255)
+};
+
+/**
+ * iavf_aq_send_msg_to_pf
+ * @hw: pointer to the hardware structure
+ * @v_opcode: opcodes for VF-PF communication
+ * @v_retval: return error code
+ * @msg: pointer to the msg buffer
+ * @msglen: msg length
+ * @cmd_details: pointer to command details
+ *
+ * Send message to PF driver using admin queue. By default, this message
+ * is sent asynchronously, i.e. iavf_asq_send_command() does not wait for
+ * completion before returning.
+ **/
+iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
+                                  enum virtchnl_ops v_opcode,
+                                  iavf_status v_retval, u8 *msg, u16 msglen,
+                                  struct i40e_asq_cmd_details *cmd_details)
+{
+       struct i40e_asq_cmd_details details;
+       struct i40e_aq_desc desc;
+       iavf_status status;
+
+       iavf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_send_msg_to_pf);
+       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_SI);
+       desc.cookie_high = cpu_to_le32(v_opcode);
+       desc.cookie_low = cpu_to_le32(v_retval);
+       if (msglen) {
+               desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF
+                                               | I40E_AQ_FLAG_RD));
+               if (msglen > I40E_AQ_LARGE_BUF)
+                       desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB);
+               desc.datalen = cpu_to_le16(msglen);
+       }
+       if (!cmd_details) {
+               memset(&details, 0, sizeof(details));
+               details.async = true;
+               cmd_details = &details;
+       }
+       status = iavf_asq_send_command(hw, &desc, msg, msglen, cmd_details);
+       return status;
+}
+
+/**
+ * iavf_vf_parse_hw_config
+ * @hw: pointer to the hardware structure
+ * @msg: pointer to the virtual channel VF resource structure
+ *
+ * Given a VF resource message from the PF, populate the hw struct
+ * with appropriate information.
+ **/
+void iavf_vf_parse_hw_config(struct iavf_hw *hw,
+                            struct virtchnl_vf_resource *msg)
+{
+       struct virtchnl_vsi_resource *vsi_res;
+       int i;
+
+       vsi_res = &msg->vsi_res[0];
+
+       hw->dev_caps.num_vsis = msg->num_vsis;
+       hw->dev_caps.num_rx_qp = msg->num_queue_pairs;
+       hw->dev_caps.num_tx_qp = msg->num_queue_pairs;
+       hw->dev_caps.num_msix_vectors_vf = msg->max_vectors;
+       hw->dev_caps.dcb = msg->vf_cap_flags &
+                          VIRTCHNL_VF_OFFLOAD_L2;
+       hw->dev_caps.fcoe = 0;
+       for (i = 0; i < msg->num_vsis; i++) {
+               if (vsi_res->vsi_type == VIRTCHNL_VSI_SRIOV) {
+                       ether_addr_copy(hw->mac.perm_addr,
+                                       vsi_res->default_mac_addr);
+                       ether_addr_copy(hw->mac.addr,
+                                       vsi_res->default_mac_addr);
+               }
+               vsi_res++;
+       }
+}
+
+/**
+ * iavf_vf_reset
+ * @hw: pointer to the hardware structure
+ *
+ * Send a VF_RESET message to the PF. Does not wait for response from PF
+ * as none will be forthcoming. Immediately after calling this function,
+ * the admin queue should be shut down and (optionally) reinitialized.
+ **/
+iavf_status iavf_vf_reset(struct iavf_hw *hw)
+{
+       return iavf_aq_send_msg_to_pf(hw, VIRTCHNL_OP_RESET_VF,
+                                     0, NULL, 0, NULL);
+}
diff --git a/drivers/net/ethernet/intel/iavf/iavf_devids.h b/drivers/net/ethernet/intel/iavf/iavf_devids.h
new file mode 100644 (file)
index 0000000..8eb7b69
--- /dev/null
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#ifndef _IAVF_DEVIDS_H_
+#define _IAVF_DEVIDS_H_
+
+/* Device IDs for the VF driver */
+#define IAVF_DEV_ID_VF                 0x154C
+#define IAVF_DEV_ID_VF_HV              0x1571
+#define IAVF_DEV_ID_ADAPTIVE_VF                0x1889
+#define IAVF_DEV_ID_X722_VF            0x37CD
+#endif /* _IAVF_DEVIDS_H_ */
index aa157fdf909c05ca2e6dc24024375e1ec41f7411..59bb9de713f72f616db7f5b19a3055ede661ada2 100644 (file)
@@ -2,7 +2,7 @@
 /* Copyright(c) 2013 - 2018 Intel Corporation. */
 
 #include "iavf.h"
-#include "i40e_prototype.h"
+#include "iavf_prototype.h"
 #include "iavf_client.h"
 /* All iavf tracepoints are defined by the include below, which must
  * be included exactly once across the whole kernel with
diff --git a/drivers/net/ethernet/intel/iavf/iavf_osdep.h b/drivers/net/ethernet/intel/iavf/iavf_osdep.h
new file mode 100644 (file)
index 0000000..e6e0b03
--- /dev/null
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#ifndef _IAVF_OSDEP_H_
+#define _IAVF_OSDEP_H_
+
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <linux/if_vlan.h>
+#include <linux/tcp.h>
+#include <linux/pci.h>
+
+/* get readq/writeq support for 32 bit kernels, use the low-first version */
+#include <linux/io-64-nonatomic-lo-hi.h>
+
+/* File to be the magic between shared code and
+ * actual OS primitives
+ */
+
+#define hw_dbg(hw, S, A...)    do {} while (0)
+
+#define wr32(a, reg, value)    writel((value), ((a)->hw_addr + (reg)))
+#define rd32(a, reg)           readl((a)->hw_addr + (reg))
+
+#define wr64(a, reg, value)    writeq((value), ((a)->hw_addr + (reg)))
+#define rd64(a, reg)           readq((a)->hw_addr + (reg))
+#define iavf_flush(a)          readl((a)->hw_addr + IAVF_VFGEN_RSTAT)
+
+/* memory allocation tracking */
+struct iavf_dma_mem {
+       void *va;
+       dma_addr_t pa;
+       u32 size;
+};
+
+#define iavf_allocate_dma_mem(h, m, unused, s, a) \
+       iavf_allocate_dma_mem_d(h, m, s, a)
+#define iavf_free_dma_mem(h, m) iavf_free_dma_mem_d(h, m)
+
+struct iavf_virt_mem {
+       void *va;
+       u32 size;
+};
+#define iavf_allocate_virt_mem(h, m, s) iavf_allocate_virt_mem_d(h, m, s)
+#define iavf_free_virt_mem(h, m) iavf_free_virt_mem_d(h, m)
+
+#define iavf_debug(h, m, s, ...)  iavf_debug_d(h, m, s, ##__VA_ARGS__)
+extern void iavf_debug_d(void *hw, u32 mask, char *fmt_str, ...)
+       __attribute__ ((format(gnu_printf, 3, 4)));
+
+typedef enum iavf_status_code iavf_status;
+#endif /* _IAVF_OSDEP_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/iavf_prototype.h b/drivers/net/ethernet/intel/iavf/iavf_prototype.h
new file mode 100644 (file)
index 0000000..d668510
--- /dev/null
@@ -0,0 +1,67 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#ifndef _IAVF_PROTOTYPE_H_
+#define _IAVF_PROTOTYPE_H_
+
+#include "iavf_type.h"
+#include "iavf_alloc.h"
+#include <linux/avf/virtchnl.h>
+
+/* Prototypes for shared code functions that are not in
+ * the standard function pointer structures.  These are
+ * mostly because they are needed even before the init
+ * has happened and will assist in the early SW and FW
+ * setup.
+ */
+
+/* adminq functions */
+iavf_status iavf_init_adminq(struct iavf_hw *hw);
+iavf_status iavf_shutdown_adminq(struct iavf_hw *hw);
+void i40e_adminq_init_ring_data(struct iavf_hw *hw);
+iavf_status iavf_clean_arq_element(struct iavf_hw *hw,
+                                  struct i40e_arq_event_info *e,
+                                  u16 *events_pending);
+iavf_status iavf_asq_send_command(struct iavf_hw *hw, struct i40e_aq_desc *desc,
+                                 void *buff, /* can be NULL */
+                                 u16 buff_size,
+                                 struct i40e_asq_cmd_details *cmd_details);
+bool iavf_asq_done(struct iavf_hw *hw);
+
+/* debug function for adminq */
+void iavf_debug_aq(struct iavf_hw *hw, enum iavf_debug_mask mask,
+                  void *desc, void *buffer, u16 buf_len);
+
+void i40e_idle_aq(struct iavf_hw *hw);
+void iavf_resume_aq(struct iavf_hw *hw);
+bool iavf_check_asq_alive(struct iavf_hw *hw);
+iavf_status iavf_aq_queue_shutdown(struct iavf_hw *hw, bool unloading);
+const char *iavf_aq_str(struct iavf_hw *hw, enum i40e_admin_queue_err aq_err);
+const char *iavf_stat_str(struct iavf_hw *hw, iavf_status stat_err);
+
+iavf_status iavf_aq_get_rss_lut(struct iavf_hw *hw, u16 seid,
+                               bool pf_lut, u8 *lut, u16 lut_size);
+iavf_status iavf_aq_set_rss_lut(struct iavf_hw *hw, u16 seid,
+                               bool pf_lut, u8 *lut, u16 lut_size);
+iavf_status iavf_aq_get_rss_key(struct iavf_hw *hw, u16 seid,
+                               struct i40e_aqc_get_set_rss_key_data *key);
+iavf_status iavf_aq_set_rss_key(struct iavf_hw *hw, u16 seid,
+                               struct i40e_aqc_get_set_rss_key_data *key);
+
+iavf_status iavf_set_mac_type(struct iavf_hw *hw);
+
+extern struct iavf_rx_ptype_decoded iavf_ptype_lookup[];
+
+static inline struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype)
+{
+       return iavf_ptype_lookup[ptype];
+}
+
+void iavf_vf_parse_hw_config(struct iavf_hw *hw,
+                            struct virtchnl_vf_resource *msg);
+iavf_status iavf_vf_reset(struct iavf_hw *hw);
+iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
+                                  enum virtchnl_ops v_opcode,
+                                  iavf_status v_retval, u8 *msg, u16 msglen,
+                                  struct i40e_asq_cmd_details *cmd_details);
+#endif /* _IAVF_PROTOTYPE_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/iavf_register.h b/drivers/net/ethernet/intel/iavf/iavf_register.h
new file mode 100644 (file)
index 0000000..bf79333
--- /dev/null
@@ -0,0 +1,68 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#ifndef _IAVF_REGISTER_H_
+#define _IAVF_REGISTER_H_
+
+#define IAVF_VF_ARQBAH1 0x00006000 /* Reset: EMPR */
+#define IAVF_VF_ARQBAL1 0x00006C00 /* Reset: EMPR */
+#define IAVF_VF_ARQH1 0x00007400 /* Reset: EMPR */
+#define IAVF_VF_ARQH1_ARQH_SHIFT 0
+#define IAVF_VF_ARQH1_ARQH_MASK IAVF_MASK(0x3FF, IAVF_VF_ARQH1_ARQH_SHIFT)
+#define IAVF_VF_ARQLEN1 0x00008000 /* Reset: EMPR */
+#define IAVF_VF_ARQLEN1_ARQVFE_SHIFT 28
+#define IAVF_VF_ARQLEN1_ARQVFE_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQVFE_SHIFT)
+#define IAVF_VF_ARQLEN1_ARQOVFL_SHIFT 29
+#define IAVF_VF_ARQLEN1_ARQOVFL_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQOVFL_SHIFT)
+#define IAVF_VF_ARQLEN1_ARQCRIT_SHIFT 30
+#define IAVF_VF_ARQLEN1_ARQCRIT_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQCRIT_SHIFT)
+#define IAVF_VF_ARQLEN1_ARQENABLE_SHIFT 31
+#define IAVF_VF_ARQLEN1_ARQENABLE_MASK IAVF_MASK(0x1, IAVF_VF_ARQLEN1_ARQENABLE_SHIFT)
+#define IAVF_VF_ARQT1 0x00007000 /* Reset: EMPR */
+#define IAVF_VF_ATQBAH1 0x00007800 /* Reset: EMPR */
+#define IAVF_VF_ATQBAL1 0x00007C00 /* Reset: EMPR */
+#define IAVF_VF_ATQH1 0x00006400 /* Reset: EMPR */
+#define IAVF_VF_ATQLEN1 0x00006800 /* Reset: EMPR */
+#define IAVF_VF_ATQLEN1_ATQVFE_SHIFT 28
+#define IAVF_VF_ATQLEN1_ATQVFE_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQVFE_SHIFT)
+#define IAVF_VF_ATQLEN1_ATQOVFL_SHIFT 29
+#define IAVF_VF_ATQLEN1_ATQOVFL_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQOVFL_SHIFT)
+#define IAVF_VF_ATQLEN1_ATQCRIT_SHIFT 30
+#define IAVF_VF_ATQLEN1_ATQCRIT_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQCRIT_SHIFT)
+#define IAVF_VF_ATQLEN1_ATQENABLE_SHIFT 31
+#define IAVF_VF_ATQLEN1_ATQENABLE_MASK IAVF_MASK(0x1, IAVF_VF_ATQLEN1_ATQENABLE_SHIFT)
+#define IAVF_VF_ATQT1 0x00008400 /* Reset: EMPR */
+#define IAVF_VFGEN_RSTAT 0x00008800 /* Reset: VFR */
+#define IAVF_VFGEN_RSTAT_VFR_STATE_SHIFT 0
+#define IAVF_VFGEN_RSTAT_VFR_STATE_MASK IAVF_MASK(0x3, IAVF_VFGEN_RSTAT_VFR_STATE_SHIFT)
+#define IAVF_VFINT_DYN_CTL01 0x00005C00 /* Reset: VFR */
+#define IAVF_VFINT_DYN_CTL01_INTENA_SHIFT 0
+#define IAVF_VFINT_DYN_CTL01_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTL01_INTENA_SHIFT)
+#define IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT 3
+#define IAVF_VFINT_DYN_CTL01_ITR_INDX_MASK IAVF_MASK(0x3, IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT)
+#define IAVF_VFINT_DYN_CTLN1(_INTVF) (0x00003800 + ((_INTVF) * 4)) /* _i=0...15 */ /* Reset: VFR */
+#define IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT 0
+#define IAVF_VFINT_DYN_CTLN1_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT)
+#define IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT 2
+#define IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT)
+#define IAVF_VFINT_DYN_CTLN1_ITR_INDX_SHIFT 3
+#define IAVF_VFINT_DYN_CTLN1_ITR_INDX_MASK IAVF_MASK(0x3, IAVF_VFINT_DYN_CTLN1_ITR_INDX_SHIFT)
+#define IAVF_VFINT_DYN_CTLN1_INTERVAL_SHIFT 5
+#define IAVF_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_SHIFT 24
+#define IAVF_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_SW_ITR_INDX_ENA_SHIFT)
+#define IAVF_VFINT_ICR0_ENA1 0x00005000 /* Reset: CORER */
+#define IAVF_VFINT_ICR0_ENA1_ADMINQ_SHIFT 30
+#define IAVF_VFINT_ICR0_ENA1_ADMINQ_MASK IAVF_MASK(0x1, IAVF_VFINT_ICR0_ENA1_ADMINQ_SHIFT)
+#define IAVF_VFINT_ICR0_ENA1_RSVD_SHIFT 31
+#define IAVF_VFINT_ICR01 0x00004800 /* Reset: CORER */
+#define IAVF_VFINT_ITRN1(_i, _INTVF) (0x00002800 + ((_i) * 64 + (_INTVF) * 4)) /* _i=0...2, _INTVF=0...15 */ /* Reset: VFR */
+#define IAVF_QRX_TAIL1(_Q) (0x00002000 + ((_Q) * 4)) /* _i=0...15 */ /* Reset: CORER */
+#define IAVF_QTX_TAIL1(_Q) (0x00000000 + ((_Q) * 4)) /* _i=0...15 */ /* Reset: PFR */
+#define IAVF_VFQF_HENA(_i) (0x0000C400 + ((_i) * 4)) /* _i=0...1 */ /* Reset: CORER */
+#define IAVF_VFQF_HKEY(_i) (0x0000CC00 + ((_i) * 4)) /* _i=0...12 */ /* Reset: CORER */
+#define IAVF_VFQF_HKEY_MAX_INDEX 12
+#define IAVF_VFQF_HLUT(_i) (0x0000D000 + ((_i) * 4)) /* _i=0...15 */ /* Reset: CORER */
+#define IAVF_VFQF_HLUT_MAX_INDEX 15
+#define IAVF_VFINT_DYN_CTLN1_WB_ON_ITR_SHIFT 30
+#define IAVF_VFINT_DYN_CTLN1_WB_ON_ITR_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_WB_ON_ITR_SHIFT)
+#endif /* _IAVF_REGISTER_H_ */
diff --git a/drivers/net/ethernet/intel/iavf/iavf_status.h b/drivers/net/ethernet/intel/iavf/iavf_status.h
new file mode 100644 (file)
index 0000000..46742fa
--- /dev/null
@@ -0,0 +1,78 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#ifndef _IAVF_STATUS_H_
+#define _IAVF_STATUS_H_
+
+/* Error Codes */
+enum iavf_status_code {
+       I40E_SUCCESS                            = 0,
+       I40E_ERR_NVM                            = -1,
+       I40E_ERR_NVM_CHECKSUM                   = -2,
+       I40E_ERR_PHY                            = -3,
+       I40E_ERR_CONFIG                         = -4,
+       I40E_ERR_PARAM                          = -5,
+       I40E_ERR_MAC_TYPE                       = -6,
+       I40E_ERR_UNKNOWN_PHY                    = -7,
+       I40E_ERR_LINK_SETUP                     = -8,
+       I40E_ERR_ADAPTER_STOPPED                = -9,
+       I40E_ERR_INVALID_MAC_ADDR               = -10,
+       I40E_ERR_DEVICE_NOT_SUPPORTED           = -11,
+       I40E_ERR_MASTER_REQUESTS_PENDING        = -12,
+       I40E_ERR_INVALID_LINK_SETTINGS          = -13,
+       I40E_ERR_AUTONEG_NOT_COMPLETE           = -14,
+       I40E_ERR_RESET_FAILED                   = -15,
+       I40E_ERR_SWFW_SYNC                      = -16,
+       I40E_ERR_NO_AVAILABLE_VSI               = -17,
+       I40E_ERR_NO_MEMORY                      = -18,
+       I40E_ERR_BAD_PTR                        = -19,
+       I40E_ERR_RING_FULL                      = -20,
+       I40E_ERR_INVALID_PD_ID                  = -21,
+       I40E_ERR_INVALID_QP_ID                  = -22,
+       I40E_ERR_INVALID_CQ_ID                  = -23,
+       I40E_ERR_INVALID_CEQ_ID                 = -24,
+       I40E_ERR_INVALID_AEQ_ID                 = -25,
+       I40E_ERR_INVALID_SIZE                   = -26,
+       I40E_ERR_INVALID_ARP_INDEX              = -27,
+       I40E_ERR_INVALID_FPM_FUNC_ID            = -28,
+       I40E_ERR_QP_INVALID_MSG_SIZE            = -29,
+       I40E_ERR_QP_TOOMANY_WRS_POSTED          = -30,
+       I40E_ERR_INVALID_FRAG_COUNT             = -31,
+       I40E_ERR_QUEUE_EMPTY                    = -32,
+       I40E_ERR_INVALID_ALIGNMENT              = -33,
+       I40E_ERR_FLUSHED_QUEUE                  = -34,
+       I40E_ERR_INVALID_PUSH_PAGE_INDEX        = -35,
+       I40E_ERR_INVALID_IMM_DATA_SIZE          = -36,
+       I40E_ERR_TIMEOUT                        = -37,
+       I40E_ERR_OPCODE_MISMATCH                = -38,
+       I40E_ERR_CQP_COMPL_ERROR                = -39,
+       I40E_ERR_INVALID_VF_ID                  = -40,
+       I40E_ERR_INVALID_HMCFN_ID               = -41,
+       I40E_ERR_BACKING_PAGE_ERROR             = -42,
+       I40E_ERR_NO_PBLCHUNKS_AVAILABLE         = -43,
+       I40E_ERR_INVALID_PBLE_INDEX             = -44,
+       I40E_ERR_INVALID_SD_INDEX               = -45,
+       I40E_ERR_INVALID_PAGE_DESC_INDEX        = -46,
+       I40E_ERR_INVALID_SD_TYPE                = -47,
+       I40E_ERR_MEMCPY_FAILED                  = -48,
+       I40E_ERR_INVALID_HMC_OBJ_INDEX          = -49,
+       I40E_ERR_INVALID_HMC_OBJ_COUNT          = -50,
+       I40E_ERR_INVALID_SRQ_ARM_LIMIT          = -51,
+       I40E_ERR_SRQ_ENABLED                    = -52,
+       I40E_ERR_ADMIN_QUEUE_ERROR              = -53,
+       I40E_ERR_ADMIN_QUEUE_TIMEOUT            = -54,
+       I40E_ERR_BUF_TOO_SHORT                  = -55,
+       I40E_ERR_ADMIN_QUEUE_FULL               = -56,
+       I40E_ERR_ADMIN_QUEUE_NO_WORK            = -57,
+       I40E_ERR_BAD_IWARP_CQE                  = -58,
+       I40E_ERR_NVM_BLANK_MODE                 = -59,
+       I40E_ERR_NOT_IMPLEMENTED                = -60,
+       I40E_ERR_PE_DOORBELL_NOT_ENABLED        = -61,
+       I40E_ERR_DIAG_TEST_FAILED               = -62,
+       I40E_ERR_NOT_READY                      = -63,
+       I40E_NOT_SUPPORTED                      = -64,
+       I40E_ERR_FIRMWARE_API_VERSION           = -65,
+       I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR     = -66,
+};
+
+#endif /* _IAVF_STATUS_H_ */
index 1768c64a922f83e00ce1a7a7550c70114893bcff..edc349f4974827d6a09afe2f650c6327357f591e 100644 (file)
@@ -6,7 +6,7 @@
 
 #include "iavf.h"
 #include "iavf_trace.h"
-#include "i40e_prototype.h"
+#include "iavf_prototype.h"
 
 static inline __le64 build_ctob(u32 td_cmd, u32 td_offset, unsigned int size,
                                u32 td_tag)
diff --git a/drivers/net/ethernet/intel/iavf/iavf_type.h b/drivers/net/ethernet/intel/iavf/iavf_type.h
new file mode 100644 (file)
index 0000000..ca89583
--- /dev/null
@@ -0,0 +1,688 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2013 - 2018 Intel Corporation. */
+
+#ifndef _IAVF_TYPE_H_
+#define _IAVF_TYPE_H_
+
+#include "iavf_status.h"
+#include "iavf_osdep.h"
+#include "iavf_register.h"
+#include "i40e_adminq.h"
+#include "iavf_devids.h"
+
+#define IAVF_RXQ_CTX_DBUFF_SHIFT 7
+
+/* IAVF_MASK is a macro used on 32 bit registers */
+#define IAVF_MASK(mask, shift) ((u32)(mask) << (shift))
+
+#define IAVF_MAX_VSI_QP                        16
+#define IAVF_MAX_VF_VSI                        3
+#define IAVF_MAX_CHAINED_RX_BUFFERS    5
+
+/* forward declaration */
+struct iavf_hw;
+typedef void (*I40E_ADMINQ_CALLBACK)(struct iavf_hw *, struct i40e_aq_desc *);
+
+/* Data type manipulation macros. */
+
+#define IAVF_DESC_UNUSED(R)    \
+       ((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \
+       (R)->next_to_clean - (R)->next_to_use - 1)
+
+/* bitfields for Tx queue mapping in QTX_CTL */
+#define IAVF_QTX_CTL_VF_QUEUE  0x0
+#define IAVF_QTX_CTL_VM_QUEUE  0x1
+#define IAVF_QTX_CTL_PF_QUEUE  0x2
+
+/* debug masks - set these bits in hw->debug_mask to control output */
+enum iavf_debug_mask {
+       IAVF_DEBUG_INIT                 = 0x00000001,
+       IAVF_DEBUG_RELEASE              = 0x00000002,
+
+       IAVF_DEBUG_LINK                 = 0x00000010,
+       IAVF_DEBUG_PHY                  = 0x00000020,
+       IAVF_DEBUG_HMC                  = 0x00000040,
+       IAVF_DEBUG_NVM                  = 0x00000080,
+       IAVF_DEBUG_LAN                  = 0x00000100,
+       IAVF_DEBUG_FLOW                 = 0x00000200,
+       IAVF_DEBUG_DCB                  = 0x00000400,
+       IAVF_DEBUG_DIAG                 = 0x00000800,
+       IAVF_DEBUG_FD                   = 0x00001000,
+       IAVF_DEBUG_PACKAGE              = 0x00002000,
+
+       IAVF_DEBUG_AQ_MESSAGE           = 0x01000000,
+       IAVF_DEBUG_AQ_DESCRIPTOR        = 0x02000000,
+       IAVF_DEBUG_AQ_DESC_BUFFER       = 0x04000000,
+       IAVF_DEBUG_AQ_COMMAND           = 0x06000000,
+       IAVF_DEBUG_AQ                   = 0x0F000000,
+
+       IAVF_DEBUG_USER                 = 0xF0000000,
+
+       IAVF_DEBUG_ALL                  = 0xFFFFFFFF
+};
+
+/* These are structs for managing the hardware information and the operations.
+ * The structures of function pointers are filled out at init time when we
+ * know for sure exactly which hardware we're working with.  This gives us the
+ * flexibility of using the same main driver code but adapting to slightly
+ * different hardware needs as new parts are developed.  For this architecture,
+ * the Firmware and AdminQ are intended to insulate the driver from most of the
+ * future changes, but these structures will also do part of the job.
+ */
+enum iavf_mac_type {
+       IAVF_MAC_UNKNOWN = 0,
+       IAVF_MAC_XL710,
+       IAVF_MAC_VF,
+       IAVF_MAC_X722,
+       IAVF_MAC_X722_VF,
+       IAVF_MAC_GENERIC,
+};
+
+enum iavf_vsi_type {
+       IAVF_VSI_MAIN   = 0,
+       IAVF_VSI_VMDQ1  = 1,
+       IAVF_VSI_VMDQ2  = 2,
+       IAVF_VSI_CTRL   = 3,
+       IAVF_VSI_FCOE   = 4,
+       IAVF_VSI_MIRROR = 5,
+       IAVF_VSI_SRIOV  = 6,
+       IAVF_VSI_FDIR   = 7,
+       IAVF_VSI_TYPE_UNKNOWN
+};
+
+enum iavf_queue_type {
+       IAVF_QUEUE_TYPE_RX = 0,
+       IAVF_QUEUE_TYPE_TX,
+       IAVF_QUEUE_TYPE_PE_CEQ,
+       IAVF_QUEUE_TYPE_UNKNOWN
+};
+
+#define IAVF_HW_CAP_MAX_GPIO           30
+/* Capabilities of a PF or a VF or the whole device */
+struct iavf_hw_capabilities {
+       bool dcb;
+       bool fcoe;
+       u32 num_vsis;
+       u32 num_rx_qp;
+       u32 num_tx_qp;
+       u32 base_queue;
+       u32 num_msix_vectors_vf;
+};
+
+struct iavf_mac_info {
+       enum iavf_mac_type type;
+       u8 addr[ETH_ALEN];
+       u8 perm_addr[ETH_ALEN];
+       u8 san_addr[ETH_ALEN];
+       u16 max_fcoeq;
+};
+
+/* PCI bus types */
+enum iavf_bus_type {
+       iavf_bus_type_unknown = 0,
+       iavf_bus_type_pci,
+       iavf_bus_type_pcix,
+       iavf_bus_type_pci_express,
+       iavf_bus_type_reserved
+};
+
+/* PCI bus speeds */
+enum iavf_bus_speed {
+       iavf_bus_speed_unknown  = 0,
+       iavf_bus_speed_33       = 33,
+       iavf_bus_speed_66       = 66,
+       iavf_bus_speed_100      = 100,
+       iavf_bus_speed_120      = 120,
+       iavf_bus_speed_133      = 133,
+       iavf_bus_speed_2500     = 2500,
+       iavf_bus_speed_5000     = 5000,
+       iavf_bus_speed_8000     = 8000,
+       iavf_bus_speed_reserved
+};
+
+/* PCI bus widths */
+enum iavf_bus_width {
+       iavf_bus_width_unknown  = 0,
+       iavf_bus_width_pcie_x1  = 1,
+       iavf_bus_width_pcie_x2  = 2,
+       iavf_bus_width_pcie_x4  = 4,
+       iavf_bus_width_pcie_x8  = 8,
+       iavf_bus_width_32       = 32,
+       iavf_bus_width_64       = 64,
+       iavf_bus_width_reserved
+};
+
+/* Bus parameters */
+struct iavf_bus_info {
+       enum iavf_bus_speed speed;
+       enum iavf_bus_width width;
+       enum iavf_bus_type type;
+
+       u16 func;
+       u16 device;
+       u16 lan_id;
+       u16 bus_id;
+};
+
+#define IAVF_MAX_USER_PRIORITY         8
+/* Port hardware description */
+struct iavf_hw {
+       u8 __iomem *hw_addr;
+       void *back;
+
+       /* subsystem structs */
+       struct iavf_mac_info mac;
+       struct iavf_bus_info bus;
+
+       /* pci info */
+       u16 device_id;
+       u16 vendor_id;
+       u16 subsystem_device_id;
+       u16 subsystem_vendor_id;
+       u8 revision_id;
+
+       /* capabilities for entire device and PCI func */
+       struct iavf_hw_capabilities dev_caps;
+
+       /* Admin Queue info */
+       struct iavf_adminq_info aq;
+
+       /* debug mask */
+       u32 debug_mask;
+       char err_str[16];
+};
+
+struct iavf_driver_version {
+       u8 major_version;
+       u8 minor_version;
+       u8 build_version;
+       u8 subbuild_version;
+       u8 driver_string[32];
+};
+
+/* RX Descriptors */
+union iavf_16byte_rx_desc {
+       struct {
+               __le64 pkt_addr; /* Packet buffer address */
+               __le64 hdr_addr; /* Header buffer address */
+       } read;
+       struct {
+               struct {
+                       struct {
+                               union {
+                                       __le16 mirroring_status;
+                                       __le16 fcoe_ctx_id;
+                               } mirr_fcoe;
+                               __le16 l2tag1;
+                       } lo_dword;
+                       union {
+                               __le32 rss; /* RSS Hash */
+                               __le32 fd_id; /* Flow director filter id */
+                               __le32 fcoe_param; /* FCoE DDP Context id */
+                       } hi_dword;
+               } qword0;
+               struct {
+                       /* ext status/error/pktype/length */
+                       __le64 status_error_len;
+               } qword1;
+       } wb;  /* writeback */
+};
+
+union iavf_32byte_rx_desc {
+       struct {
+               __le64  pkt_addr; /* Packet buffer address */
+               __le64  hdr_addr; /* Header buffer address */
+                       /* bit 0 of hdr_buffer_addr is DD bit */
+               __le64  rsvd1;
+               __le64  rsvd2;
+       } read;
+       struct {
+               struct {
+                       struct {
+                               union {
+                                       __le16 mirroring_status;
+                                       __le16 fcoe_ctx_id;
+                               } mirr_fcoe;
+                               __le16 l2tag1;
+                       } lo_dword;
+                       union {
+                               __le32 rss; /* RSS Hash */
+                               __le32 fcoe_param; /* FCoE DDP Context id */
+                               /* Flow director filter id in case of
+                                * Programming status desc WB
+                                */
+                               __le32 fd_id;
+                       } hi_dword;
+               } qword0;
+               struct {
+                       /* status/error/pktype/length */
+                       __le64 status_error_len;
+               } qword1;
+               struct {
+                       __le16 ext_status; /* extended status */
+                       __le16 rsvd;
+                       __le16 l2tag2_1;
+                       __le16 l2tag2_2;
+               } qword2;
+               struct {
+                       union {
+                               __le32 flex_bytes_lo;
+                               __le32 pe_status;
+                       } lo_dword;
+                       union {
+                               __le32 flex_bytes_hi;
+                               __le32 fd_id;
+                       } hi_dword;
+               } qword3;
+       } wb;  /* writeback */
+};
+
+enum iavf_rx_desc_status_bits {
+       /* Note: These are predefined bit offsets */
+       IAVF_RX_DESC_STATUS_DD_SHIFT            = 0,
+       IAVF_RX_DESC_STATUS_EOF_SHIFT           = 1,
+       IAVF_RX_DESC_STATUS_L2TAG1P_SHIFT       = 2,
+       IAVF_RX_DESC_STATUS_L3L4P_SHIFT         = 3,
+       IAVF_RX_DESC_STATUS_CRCP_SHIFT          = 4,
+       IAVF_RX_DESC_STATUS_TSYNINDX_SHIFT      = 5, /* 2 BITS */
+       IAVF_RX_DESC_STATUS_TSYNVALID_SHIFT     = 7,
+       /* Note: Bit 8 is reserved in X710 and XL710 */
+       IAVF_RX_DESC_STATUS_EXT_UDP_0_SHIFT     = 8,
+       IAVF_RX_DESC_STATUS_UMBCAST_SHIFT       = 9, /* 2 BITS */
+       IAVF_RX_DESC_STATUS_FLM_SHIFT           = 11,
+       IAVF_RX_DESC_STATUS_FLTSTAT_SHIFT       = 12, /* 2 BITS */
+       IAVF_RX_DESC_STATUS_LPBK_SHIFT          = 14,
+       IAVF_RX_DESC_STATUS_IPV6EXADD_SHIFT     = 15,
+       IAVF_RX_DESC_STATUS_RESERVED_SHIFT      = 16, /* 2 BITS */
+       /* Note: For non-tunnel packets INT_UDP_0 is the right status for
+        * UDP header
+        */
+       IAVF_RX_DESC_STATUS_INT_UDP_0_SHIFT     = 18,
+       IAVF_RX_DESC_STATUS_LAST /* this entry must be last!!! */
+};
+
+#define IAVF_RXD_QW1_STATUS_SHIFT      0
+#define IAVF_RXD_QW1_STATUS_MASK       ((BIT(IAVF_RX_DESC_STATUS_LAST) - 1) \
+                                        << IAVF_RXD_QW1_STATUS_SHIFT)
+
+#define IAVF_RXD_QW1_STATUS_TSYNINDX_SHIFT IAVF_RX_DESC_STATUS_TSYNINDX_SHIFT
+#define IAVF_RXD_QW1_STATUS_TSYNINDX_MASK  (0x3UL << \
+                                           IAVF_RXD_QW1_STATUS_TSYNINDX_SHIFT)
+
+#define IAVF_RXD_QW1_STATUS_TSYNVALID_SHIFT IAVF_RX_DESC_STATUS_TSYNVALID_SHIFT
+#define IAVF_RXD_QW1_STATUS_TSYNVALID_MASK \
+                                   BIT_ULL(IAVF_RXD_QW1_STATUS_TSYNVALID_SHIFT)
+
+enum iavf_rx_desc_fltstat_values {
+       IAVF_RX_DESC_FLTSTAT_NO_DATA    = 0,
+       IAVF_RX_DESC_FLTSTAT_RSV_FD_ID  = 1, /* 16byte desc? FD_ID : RSV */
+       IAVF_RX_DESC_FLTSTAT_RSV        = 2,
+       IAVF_RX_DESC_FLTSTAT_RSS_HASH   = 3,
+};
+
+#define IAVF_RXD_QW1_ERROR_SHIFT       19
+#define IAVF_RXD_QW1_ERROR_MASK                (0xFFUL << IAVF_RXD_QW1_ERROR_SHIFT)
+
+enum iavf_rx_desc_error_bits {
+       /* Note: These are predefined bit offsets */
+       IAVF_RX_DESC_ERROR_RXE_SHIFT            = 0,
+       IAVF_RX_DESC_ERROR_RECIPE_SHIFT         = 1,
+       IAVF_RX_DESC_ERROR_HBO_SHIFT            = 2,
+       IAVF_RX_DESC_ERROR_L3L4E_SHIFT          = 3, /* 3 BITS */
+       IAVF_RX_DESC_ERROR_IPE_SHIFT            = 3,
+       IAVF_RX_DESC_ERROR_L4E_SHIFT            = 4,
+       IAVF_RX_DESC_ERROR_EIPE_SHIFT           = 5,
+       IAVF_RX_DESC_ERROR_OVERSIZE_SHIFT       = 6,
+       IAVF_RX_DESC_ERROR_PPRS_SHIFT           = 7
+};
+
+enum iavf_rx_desc_error_l3l4e_fcoe_masks {
+       IAVF_RX_DESC_ERROR_L3L4E_NONE           = 0,
+       IAVF_RX_DESC_ERROR_L3L4E_PROT           = 1,
+       IAVF_RX_DESC_ERROR_L3L4E_FC             = 2,
+       IAVF_RX_DESC_ERROR_L3L4E_DMAC_ERR       = 3,
+       IAVF_RX_DESC_ERROR_L3L4E_DMAC_WARN      = 4
+};
+
+#define IAVF_RXD_QW1_PTYPE_SHIFT       30
+#define IAVF_RXD_QW1_PTYPE_MASK                (0xFFULL << IAVF_RXD_QW1_PTYPE_SHIFT)
+
+/* Packet type non-ip values */
+enum iavf_rx_l2_ptype {
+       IAVF_RX_PTYPE_L2_RESERVED                       = 0,
+       IAVF_RX_PTYPE_L2_MAC_PAY2                       = 1,
+       IAVF_RX_PTYPE_L2_TIMESYNC_PAY2                  = 2,
+       IAVF_RX_PTYPE_L2_FIP_PAY2                       = 3,
+       IAVF_RX_PTYPE_L2_OUI_PAY2                       = 4,
+       IAVF_RX_PTYPE_L2_MACCNTRL_PAY2                  = 5,
+       IAVF_RX_PTYPE_L2_LLDP_PAY2                      = 6,
+       IAVF_RX_PTYPE_L2_ECP_PAY2                       = 7,
+       IAVF_RX_PTYPE_L2_EVB_PAY2                       = 8,
+       IAVF_RX_PTYPE_L2_QCN_PAY2                       = 9,
+       IAVF_RX_PTYPE_L2_EAPOL_PAY2                     = 10,
+       IAVF_RX_PTYPE_L2_ARP                            = 11,
+       IAVF_RX_PTYPE_L2_FCOE_PAY3                      = 12,
+       IAVF_RX_PTYPE_L2_FCOE_FCDATA_PAY3               = 13,
+       IAVF_RX_PTYPE_L2_FCOE_FCRDY_PAY3                = 14,
+       IAVF_RX_PTYPE_L2_FCOE_FCRSP_PAY3                = 15,
+       IAVF_RX_PTYPE_L2_FCOE_FCOTHER_PA                = 16,
+       IAVF_RX_PTYPE_L2_FCOE_VFT_PAY3                  = 17,
+       IAVF_RX_PTYPE_L2_FCOE_VFT_FCDATA                = 18,
+       IAVF_RX_PTYPE_L2_FCOE_VFT_FCRDY                 = 19,
+       IAVF_RX_PTYPE_L2_FCOE_VFT_FCRSP                 = 20,
+       IAVF_RX_PTYPE_L2_FCOE_VFT_FCOTHER               = 21,
+       IAVF_RX_PTYPE_GRENAT4_MAC_PAY3                  = 58,
+       IAVF_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4    = 87,
+       IAVF_RX_PTYPE_GRENAT6_MAC_PAY3                  = 124,
+       IAVF_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4    = 153
+};
+
+struct iavf_rx_ptype_decoded {
+       u32 ptype:8;
+       u32 known:1;
+       u32 outer_ip:1;
+       u32 outer_ip_ver:1;
+       u32 outer_frag:1;
+       u32 tunnel_type:3;
+       u32 tunnel_end_prot:2;
+       u32 tunnel_end_frag:1;
+       u32 inner_prot:4;
+       u32 payload_layer:3;
+};
+
+enum iavf_rx_ptype_outer_ip {
+       IAVF_RX_PTYPE_OUTER_L2  = 0,
+       IAVF_RX_PTYPE_OUTER_IP  = 1
+};
+
+enum iavf_rx_ptype_outer_ip_ver {
+       IAVF_RX_PTYPE_OUTER_NONE        = 0,
+       IAVF_RX_PTYPE_OUTER_IPV4        = 0,
+       IAVF_RX_PTYPE_OUTER_IPV6        = 1
+};
+
+enum iavf_rx_ptype_outer_fragmented {
+       IAVF_RX_PTYPE_NOT_FRAG  = 0,
+       IAVF_RX_PTYPE_FRAG      = 1
+};
+
+enum iavf_rx_ptype_tunnel_type {
+       IAVF_RX_PTYPE_TUNNEL_NONE               = 0,
+       IAVF_RX_PTYPE_TUNNEL_IP_IP              = 1,
+       IAVF_RX_PTYPE_TUNNEL_IP_GRENAT          = 2,
+       IAVF_RX_PTYPE_TUNNEL_IP_GRENAT_MAC      = 3,
+       IAVF_RX_PTYPE_TUNNEL_IP_GRENAT_MAC_VLAN = 4,
+};
+
+enum iavf_rx_ptype_tunnel_end_prot {
+       IAVF_RX_PTYPE_TUNNEL_END_NONE   = 0,
+       IAVF_RX_PTYPE_TUNNEL_END_IPV4   = 1,
+       IAVF_RX_PTYPE_TUNNEL_END_IPV6   = 2,
+};
+
+enum iavf_rx_ptype_inner_prot {
+       IAVF_RX_PTYPE_INNER_PROT_NONE           = 0,
+       IAVF_RX_PTYPE_INNER_PROT_UDP            = 1,
+       IAVF_RX_PTYPE_INNER_PROT_TCP            = 2,
+       IAVF_RX_PTYPE_INNER_PROT_SCTP           = 3,
+       IAVF_RX_PTYPE_INNER_PROT_ICMP           = 4,
+       IAVF_RX_PTYPE_INNER_PROT_TIMESYNC       = 5
+};
+
+enum iavf_rx_ptype_payload_layer {
+       IAVF_RX_PTYPE_PAYLOAD_LAYER_NONE        = 0,
+       IAVF_RX_PTYPE_PAYLOAD_LAYER_PAY2        = 1,
+       IAVF_RX_PTYPE_PAYLOAD_LAYER_PAY3        = 2,
+       IAVF_RX_PTYPE_PAYLOAD_LAYER_PAY4        = 3,
+};
+
+#define IAVF_RXD_QW1_LENGTH_PBUF_SHIFT 38
+#define IAVF_RXD_QW1_LENGTH_PBUF_MASK  (0x3FFFULL << \
+                                        IAVF_RXD_QW1_LENGTH_PBUF_SHIFT)
+
+#define IAVF_RXD_QW1_LENGTH_HBUF_SHIFT 52
+#define IAVF_RXD_QW1_LENGTH_HBUF_MASK  (0x7FFULL << \
+                                        IAVF_RXD_QW1_LENGTH_HBUF_SHIFT)
+
+#define IAVF_RXD_QW1_LENGTH_SPH_SHIFT  63
+#define IAVF_RXD_QW1_LENGTH_SPH_MASK   BIT_ULL(IAVF_RXD_QW1_LENGTH_SPH_SHIFT)
+
+enum iavf_rx_desc_ext_status_bits {
+       /* Note: These are predefined bit offsets */
+       IAVF_RX_DESC_EXT_STATUS_L2TAG2P_SHIFT   = 0,
+       IAVF_RX_DESC_EXT_STATUS_L2TAG3P_SHIFT   = 1,
+       IAVF_RX_DESC_EXT_STATUS_FLEXBL_SHIFT    = 2, /* 2 BITS */
+       IAVF_RX_DESC_EXT_STATUS_FLEXBH_SHIFT    = 4, /* 2 BITS */
+       IAVF_RX_DESC_EXT_STATUS_FDLONGB_SHIFT   = 9,
+       IAVF_RX_DESC_EXT_STATUS_FCOELONGB_SHIFT = 10,
+       IAVF_RX_DESC_EXT_STATUS_PELONGB_SHIFT   = 11,
+};
+
+enum iavf_rx_desc_pe_status_bits {
+       /* Note: These are predefined bit offsets */
+       IAVF_RX_DESC_PE_STATUS_QPID_SHIFT       = 0, /* 18 BITS */
+       IAVF_RX_DESC_PE_STATUS_L4PORT_SHIFT     = 0, /* 16 BITS */
+       IAVF_RX_DESC_PE_STATUS_IPINDEX_SHIFT    = 16, /* 8 BITS */
+       IAVF_RX_DESC_PE_STATUS_QPIDHIT_SHIFT    = 24,
+       IAVF_RX_DESC_PE_STATUS_APBVTHIT_SHIFT   = 25,
+       IAVF_RX_DESC_PE_STATUS_PORTV_SHIFT      = 26,
+       IAVF_RX_DESC_PE_STATUS_URG_SHIFT        = 27,
+       IAVF_RX_DESC_PE_STATUS_IPFRAG_SHIFT     = 28,
+       IAVF_RX_DESC_PE_STATUS_IPOPT_SHIFT      = 29
+};
+
+#define IAVF_RX_PROG_STATUS_DESC_LENGTH_SHIFT          38
+#define IAVF_RX_PROG_STATUS_DESC_LENGTH                        0x2000000
+
+#define IAVF_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT      2
+#define IAVF_RX_PROG_STATUS_DESC_QW1_PROGID_MASK       (0x7UL << \
+                               IAVF_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT)
+
+#define IAVF_RX_PROG_STATUS_DESC_QW1_ERROR_SHIFT       19
+#define IAVF_RX_PROG_STATUS_DESC_QW1_ERROR_MASK                (0x3FUL << \
+                               IAVF_RX_PROG_STATUS_DESC_QW1_ERROR_SHIFT)
+
+enum iavf_rx_prog_status_desc_status_bits {
+       /* Note: These are predefined bit offsets */
+       IAVF_RX_PROG_STATUS_DESC_DD_SHIFT       = 0,
+       IAVF_RX_PROG_STATUS_DESC_PROG_ID_SHIFT  = 2 /* 3 BITS */
+};
+
+enum iavf_rx_prog_status_desc_prog_id_masks {
+       IAVF_RX_PROG_STATUS_DESC_FD_FILTER_STATUS       = 1,
+       IAVF_RX_PROG_STATUS_DESC_FCOE_CTXT_PROG_STATUS  = 2,
+       IAVF_RX_PROG_STATUS_DESC_FCOE_CTXT_INVL_STATUS  = 4,
+};
+
+enum iavf_rx_prog_status_desc_error_bits {
+       /* Note: These are predefined bit offsets */
+       IAVF_RX_PROG_STATUS_DESC_FD_TBL_FULL_SHIFT      = 0,
+       IAVF_RX_PROG_STATUS_DESC_NO_FD_ENTRY_SHIFT      = 1,
+       IAVF_RX_PROG_STATUS_DESC_FCOE_TBL_FULL_SHIFT    = 2,
+       IAVF_RX_PROG_STATUS_DESC_FCOE_CONFLICT_SHIFT    = 3
+};
+
+/* TX Descriptor */
+struct iavf_tx_desc {
+       __le64 buffer_addr; /* Address of descriptor's data buf */
+       __le64 cmd_type_offset_bsz;
+};
+
+#define IAVF_TXD_QW1_DTYPE_SHIFT       0
+#define IAVF_TXD_QW1_DTYPE_MASK                (0xFUL << IAVF_TXD_QW1_DTYPE_SHIFT)
+
+enum iavf_tx_desc_dtype_value {
+       IAVF_TX_DESC_DTYPE_DATA         = 0x0,
+       IAVF_TX_DESC_DTYPE_NOP          = 0x1, /* same as Context desc */
+       IAVF_TX_DESC_DTYPE_CONTEXT      = 0x1,
+       IAVF_TX_DESC_DTYPE_FCOE_CTX     = 0x2,
+       IAVF_TX_DESC_DTYPE_FILTER_PROG  = 0x8,
+       IAVF_TX_DESC_DTYPE_DDP_CTX      = 0x9,
+       IAVF_TX_DESC_DTYPE_FLEX_DATA    = 0xB,
+       IAVF_TX_DESC_DTYPE_FLEX_CTX_1   = 0xC,
+       IAVF_TX_DESC_DTYPE_FLEX_CTX_2   = 0xD,
+       IAVF_TX_DESC_DTYPE_DESC_DONE    = 0xF
+};
+
+#define IAVF_TXD_QW1_CMD_SHIFT 4
+#define IAVF_TXD_QW1_CMD_MASK  (0x3FFUL << IAVF_TXD_QW1_CMD_SHIFT)
+
+enum iavf_tx_desc_cmd_bits {
+       IAVF_TX_DESC_CMD_EOP                    = 0x0001,
+       IAVF_TX_DESC_CMD_RS                     = 0x0002,
+       IAVF_TX_DESC_CMD_ICRC                   = 0x0004,
+       IAVF_TX_DESC_CMD_IL2TAG1                = 0x0008,
+       IAVF_TX_DESC_CMD_DUMMY                  = 0x0010,
+       IAVF_TX_DESC_CMD_IIPT_NONIP             = 0x0000, /* 2 BITS */
+       IAVF_TX_DESC_CMD_IIPT_IPV6              = 0x0020, /* 2 BITS */
+       IAVF_TX_DESC_CMD_IIPT_IPV4              = 0x0040, /* 2 BITS */
+       IAVF_TX_DESC_CMD_IIPT_IPV4_CSUM         = 0x0060, /* 2 BITS */
+       IAVF_TX_DESC_CMD_FCOET                  = 0x0080,
+       IAVF_TX_DESC_CMD_L4T_EOFT_UNK           = 0x0000, /* 2 BITS */
+       IAVF_TX_DESC_CMD_L4T_EOFT_TCP           = 0x0100, /* 2 BITS */
+       IAVF_TX_DESC_CMD_L4T_EOFT_SCTP          = 0x0200, /* 2 BITS */
+       IAVF_TX_DESC_CMD_L4T_EOFT_UDP           = 0x0300, /* 2 BITS */
+       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_N         = 0x0000, /* 2 BITS */
+       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_T         = 0x0100, /* 2 BITS */
+       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_NI        = 0x0200, /* 2 BITS */
+       IAVF_TX_DESC_CMD_L4T_EOFT_EOF_A         = 0x0300, /* 2 BITS */
+};
+
+#define IAVF_TXD_QW1_OFFSET_SHIFT      16
+#define IAVF_TXD_QW1_OFFSET_MASK       (0x3FFFFULL << \
+                                        IAVF_TXD_QW1_OFFSET_SHIFT)
+
+enum iavf_tx_desc_length_fields {
+       /* Note: These are predefined bit offsets */
+       IAVF_TX_DESC_LENGTH_MACLEN_SHIFT        = 0, /* 7 BITS */
+       IAVF_TX_DESC_LENGTH_IPLEN_SHIFT         = 7, /* 7 BITS */
+       IAVF_TX_DESC_LENGTH_L4_FC_LEN_SHIFT     = 14 /* 4 BITS */
+};
+
+#define IAVF_TXD_QW1_TX_BUF_SZ_SHIFT   34
+#define IAVF_TXD_QW1_TX_BUF_SZ_MASK    (0x3FFFULL << \
+                                        IAVF_TXD_QW1_TX_BUF_SZ_SHIFT)
+
+#define IAVF_TXD_QW1_L2TAG1_SHIFT      48
+#define IAVF_TXD_QW1_L2TAG1_MASK       (0xFFFFULL << IAVF_TXD_QW1_L2TAG1_SHIFT)
+
+/* Context descriptors */
+struct iavf_tx_context_desc {
+       __le32 tunneling_params;
+       __le16 l2tag2;
+       __le16 rsvd;
+       __le64 type_cmd_tso_mss;
+};
+
+#define IAVF_TXD_CTX_QW1_CMD_SHIFT     4
+#define IAVF_TXD_CTX_QW1_CMD_MASK      (0xFFFFUL << IAVF_TXD_CTX_QW1_CMD_SHIFT)
+
+enum iavf_tx_ctx_desc_cmd_bits {
+       IAVF_TX_CTX_DESC_TSO            = 0x01,
+       IAVF_TX_CTX_DESC_TSYN           = 0x02,
+       IAVF_TX_CTX_DESC_IL2TAG2        = 0x04,
+       IAVF_TX_CTX_DESC_IL2TAG2_IL2H   = 0x08,
+       IAVF_TX_CTX_DESC_SWTCH_NOTAG    = 0x00,
+       IAVF_TX_CTX_DESC_SWTCH_UPLINK   = 0x10,
+       IAVF_TX_CTX_DESC_SWTCH_LOCAL    = 0x20,
+       IAVF_TX_CTX_DESC_SWTCH_VSI      = 0x30,
+       IAVF_TX_CTX_DESC_SWPE           = 0x40
+};
+
+/* Packet Classifier Types for filters */
+enum iavf_filter_pctype {
+       /* Note: Values 0-28 are reserved for future use.
+        * Value 29, 30, 32 are not supported on XL710 and X710.
+        */
+       IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP        = 29,
+       IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP      = 30,
+       IAVF_FILTER_PCTYPE_NONF_IPV4_UDP                = 31,
+       IAVF_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK     = 32,
+       IAVF_FILTER_PCTYPE_NONF_IPV4_TCP                = 33,
+       IAVF_FILTER_PCTYPE_NONF_IPV4_SCTP               = 34,
+       IAVF_FILTER_PCTYPE_NONF_IPV4_OTHER              = 35,
+       IAVF_FILTER_PCTYPE_FRAG_IPV4                    = 36,
+       /* Note: Values 37-38 are reserved for future use.
+        * Value 39, 40, 42 are not supported on XL710 and X710.
+        */
+       IAVF_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP        = 39,
+       IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP      = 40,
+       IAVF_FILTER_PCTYPE_NONF_IPV6_UDP                = 41,
+       IAVF_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK     = 42,
+       IAVF_FILTER_PCTYPE_NONF_IPV6_TCP                = 43,
+       IAVF_FILTER_PCTYPE_NONF_IPV6_SCTP               = 44,
+       IAVF_FILTER_PCTYPE_NONF_IPV6_OTHER              = 45,
+       IAVF_FILTER_PCTYPE_FRAG_IPV6                    = 46,
+       /* Note: Value 47 is reserved for future use */
+       IAVF_FILTER_PCTYPE_FCOE_OX                      = 48,
+       IAVF_FILTER_PCTYPE_FCOE_RX                      = 49,
+       IAVF_FILTER_PCTYPE_FCOE_OTHER                   = 50,
+       /* Note: Values 51-62 are reserved for future use */
+       IAVF_FILTER_PCTYPE_L2_PAYLOAD                   = 63,
+};
+
+#define IAVF_TXD_CTX_QW1_TSO_LEN_SHIFT 30
+#define IAVF_TXD_CTX_QW1_TSO_LEN_MASK  (0x3FFFFULL << \
+                                        IAVF_TXD_CTX_QW1_TSO_LEN_SHIFT)
+
+#define IAVF_TXD_CTX_QW1_MSS_SHIFT     50
+#define IAVF_TXD_CTX_QW1_MSS_MASK      (0x3FFFULL << \
+                                        IAVF_TXD_CTX_QW1_MSS_SHIFT)
+
+#define IAVF_TXD_CTX_QW1_VSI_SHIFT     50
+#define IAVF_TXD_CTX_QW1_VSI_MASK      (0x1FFULL << IAVF_TXD_CTX_QW1_VSI_SHIFT)
+
+#define IAVF_TXD_CTX_QW0_EXT_IP_SHIFT  0
+#define IAVF_TXD_CTX_QW0_EXT_IP_MASK   (0x3ULL << \
+                                        IAVF_TXD_CTX_QW0_EXT_IP_SHIFT)
+
+enum iavf_tx_ctx_desc_eipt_offload {
+       IAVF_TX_CTX_EXT_IP_NONE         = 0x0,
+       IAVF_TX_CTX_EXT_IP_IPV6         = 0x1,
+       IAVF_TX_CTX_EXT_IP_IPV4_NO_CSUM = 0x2,
+       IAVF_TX_CTX_EXT_IP_IPV4         = 0x3
+};
+
+#define IAVF_TXD_CTX_QW0_EXT_IPLEN_SHIFT       2
+#define IAVF_TXD_CTX_QW0_EXT_IPLEN_MASK        (0x3FULL << \
+                                        IAVF_TXD_CTX_QW0_EXT_IPLEN_SHIFT)
+
+#define IAVF_TXD_CTX_QW0_NATT_SHIFT    9
+#define IAVF_TXD_CTX_QW0_NATT_MASK     (0x3ULL << IAVF_TXD_CTX_QW0_NATT_SHIFT)
+
+#define IAVF_TXD_CTX_UDP_TUNNELING     BIT_ULL(IAVF_TXD_CTX_QW0_NATT_SHIFT)
+#define IAVF_TXD_CTX_GRE_TUNNELING     (0x2ULL << IAVF_TXD_CTX_QW0_NATT_SHIFT)
+
+#define IAVF_TXD_CTX_QW0_EIP_NOINC_SHIFT       11
+#define IAVF_TXD_CTX_QW0_EIP_NOINC_MASK \
+                                      BIT_ULL(IAVF_TXD_CTX_QW0_EIP_NOINC_SHIFT)
+
+#define IAVF_TXD_CTX_EIP_NOINC_IPID_CONST      IAVF_TXD_CTX_QW0_EIP_NOINC_MASK
+
+#define IAVF_TXD_CTX_QW0_NATLEN_SHIFT  12
+#define IAVF_TXD_CTX_QW0_NATLEN_MASK   (0X7FULL << \
+                                        IAVF_TXD_CTX_QW0_NATLEN_SHIFT)
+
+#define IAVF_TXD_CTX_QW0_DECTTL_SHIFT  19
+#define IAVF_TXD_CTX_QW0_DECTTL_MASK   (0xFULL << \
+                                        IAVF_TXD_CTX_QW0_DECTTL_SHIFT)
+
+#define IAVF_TXD_CTX_QW0_L4T_CS_SHIFT  23
+#define IAVF_TXD_CTX_QW0_L4T_CS_MASK   BIT_ULL(IAVF_TXD_CTX_QW0_L4T_CS_SHIFT)
+
+/* Statistics collected by each port, VSI, VEB, and S-channel */
+struct iavf_eth_stats {
+       u64 rx_bytes;                   /* gorc */
+       u64 rx_unicast;                 /* uprc */
+       u64 rx_multicast;               /* mprc */
+       u64 rx_broadcast;               /* bprc */
+       u64 rx_discards;                /* rdpc */
+       u64 rx_unknown_protocol;        /* rupp */
+       u64 tx_bytes;                   /* gotc */
+       u64 tx_unicast;                 /* uptc */
+       u64 tx_multicast;               /* mptc */
+       u64 tx_broadcast;               /* bptc */
+       u64 tx_discards;                /* tdpc */
+       u64 tx_errors;                  /* tepc */
+};
+#endif /* _IAVF_TYPE_H_ */
index 930d351a5cc54706b43bd330c94e3af50bc7ced0..e64751da09212ae6c95088e5296af784e1ca00a1 100644 (file)
@@ -2,7 +2,7 @@
 /* Copyright(c) 2013 - 2018 Intel Corporation. */
 
 #include "iavf.h"
-#include "i40e_prototype.h"
+#include "iavf_prototype.h"
 #include "iavf_client.h"
 
 /* busy wait delay in msec */