When adding Admin Command Interface and E610 device support, some ACI
capabilities definition code was missed due to the way shared driver code
snapshot was generated. Add missing code paths.

Fixes: 25b48e569f2f ("net/ixgbe/base: add E610 Admin Command Interface")
Fixes: 7c3bfffda43d ("net/ixgbe/base: detect E610 device capabilities")

Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com>
---
 drivers/net/ixgbe/base/ixgbe_e610.c      | 49 ++++++++++++++++++++++++
 drivers/net/ixgbe/base/ixgbe_type_e610.h |  4 ++
 2 files changed, 53 insertions(+)

diff --git a/drivers/net/ixgbe/base/ixgbe_e610.c 
b/drivers/net/ixgbe/base/ixgbe_e610.c
index 3e2be07731..1f3a4532da 100644
--- a/drivers/net/ixgbe/base/ixgbe_e610.c
+++ b/drivers/net/ixgbe/base/ixgbe_e610.c
@@ -671,6 +671,9 @@ ixgbe_parse_common_caps(struct ixgbe_hw *hw, struct 
ixgbe_hw_common_caps *caps,
        case IXGBE_ACI_CAPS_VALID_FUNCTIONS:
                caps->valid_functions = number;
                break;
+       case IXGBE_ACI_CAPS_SRIOV:
+               caps->sr_iov_1_1 = (number == 1);
+               break;
        case IXGBE_ACI_CAPS_VMDQ:
                caps->vmdq = (number == 1);
                break;
@@ -833,6 +836,25 @@ ixgbe_parse_valid_functions_cap(struct ixgbe_hw *hw,
        hw->logical_pf_id = ixgbe_func_id_to_logical_id(number, hw->pf_id);
 }
 
+/**
+ * ixgbe_parse_vf_dev_caps - Parse IXGBE_ACI_CAPS_VF device caps
+ * @hw: pointer to the HW struct
+ * @dev_p: pointer to device capabilities structure
+ * @cap: capability element to parse
+ *
+ * Parse IXGBE_ACI_CAPS_VF for device capabilities.
+ */
+static void ixgbe_parse_vf_dev_caps(struct ixgbe_hw *hw,
+                                   struct ixgbe_hw_dev_caps *dev_p,
+                                   struct ixgbe_aci_cmd_list_caps_elem *cap)
+{
+       u32 number = IXGBE_LE32_TO_CPU(cap->number);
+
+       UNREFERENCED_1PARAMETER(hw);
+
+       dev_p->num_vfs_exposed = number;
+}
+
 /**
  * ixgbe_parse_vsi_dev_caps - Parse IXGBE_ACI_CAPS_VSI device caps
  * @hw: pointer to the HW struct
@@ -944,6 +966,9 @@ static void ixgbe_parse_dev_caps(struct ixgbe_hw *hw,
                        ixgbe_parse_valid_functions_cap(hw, dev_p,
                                                        &cap_resp[i]);
                        break;
+               case IXGBE_ACI_CAPS_VF:
+                       ixgbe_parse_vf_dev_caps(hw, dev_p, &cap_resp[i]);
+                       break;
                case IXGBE_ACI_CAPS_VSI:
                        ixgbe_parse_vsi_dev_caps(hw, dev_p, &cap_resp[i]);
                        break;
@@ -962,6 +987,27 @@ static void ixgbe_parse_dev_caps(struct ixgbe_hw *hw,
 
 }
 
+/**
+ * ixgbe_parse_vf_func_caps - Parse IXGBE_ACI_CAPS_VF function caps
+ * @hw: pointer to the HW struct
+ * @func_p: pointer to function capabilities structure
+ * @cap: pointer to the capability element to parse
+ *
+ * Extract function capabilities for IXGBE_ACI_CAPS_VF.
+ */
+static void ixgbe_parse_vf_func_caps(struct ixgbe_hw *hw,
+                                    struct ixgbe_hw_func_caps *func_p,
+                                    struct ixgbe_aci_cmd_list_caps_elem *cap)
+{
+       u32 logical_id = IXGBE_LE32_TO_CPU(cap->logical_id);
+       u32 number = IXGBE_LE32_TO_CPU(cap->number);
+
+       UNREFERENCED_1PARAMETER(hw);
+
+       func_p->num_allocd_vfs = number;
+       func_p->vf_base_id = logical_id;
+}
+
 /**
  * ixgbe_get_num_per_func - determine number of resources per PF
  * @hw: pointer to the HW structure
@@ -1073,6 +1119,9 @@ static void ixgbe_parse_func_caps(struct ixgbe_hw *hw,
                                        &cap_resp[i], "func caps");
 
                switch (cap) {
+               case IXGBE_ACI_CAPS_VF:
+                       ixgbe_parse_vf_func_caps(hw, func_p, &cap_resp[i]);
+                       break;
                case IXGBE_ACI_CAPS_VSI:
                        ixgbe_parse_vsi_func_caps(hw, func_p, &cap_resp[i]);
                        break;
diff --git a/drivers/net/ixgbe/base/ixgbe_type_e610.h 
b/drivers/net/ixgbe/base/ixgbe_type_e610.h
index 9e72053e2a..dcb874e42e 100644
--- a/drivers/net/ixgbe/base/ixgbe_type_e610.h
+++ b/drivers/net/ixgbe/base/ixgbe_type_e610.h
@@ -672,6 +672,8 @@ struct ixgbe_aci_cmd_list_caps_elem {
        __le16 cap;
 #define IXGBE_ACI_CAPS_VALID_FUNCTIONS                 0x0005
 #define IXGBE_ACI_MAX_VALID_FUNCTIONS                  0x8
+#define IXGBE_ACI_CAPS_SRIOV                           0x0012
+#define IXGBE_ACI_CAPS_VF                              0x0013
 #define IXGBE_ACI_CAPS_VMDQ                            0x0014
 #define IXGBE_ACI_CAPS_VSI                             0x0017
 #define IXGBE_ACI_CAPS_DCB                             0x0018
@@ -1954,6 +1956,8 @@ struct ixgbe_hw_common_caps {
 #define IXGBE_MAX_SUPPORTED_GPIO_SDP   8
        u8 led[IXGBE_MAX_SUPPORTED_GPIO_LED];
        u8 sdp[IXGBE_MAX_SUPPORTED_GPIO_SDP];
+       /* SR-IOV virtualization */
+       u8 sr_iov_1_1;                  /* SR-IOV enabled */
        /* VMDQ */
        u8 vmdq;                        /* VMDQ supported */
 
-- 
2.43.5

Reply via email to