qed: Add API for SmartAN query.
authorSudarsana Reddy Kalluru <skalluru@marvell.com>
Thu, 7 Feb 2019 14:20:11 +0000 (06:20 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 Feb 2019 06:39:01 +0000 (22:39 -0800)
The patch adds driver interface to read the SmartAN capability from
management firmware.

Signed-off-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
Signed-off-by: Ariel Elior <aelior@marvell.com>
Signed-off-by: Michal Kalderon <mkalderon@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qed/qed_hsi.h
drivers/net/ethernet/qlogic/qed/qed_main.c
drivers/net/ethernet/qlogic/qed/qed_mcp.c
drivers/net/ethernet/qlogic/qed/qed_mcp.h
include/linux/qed/qed_if.h

index 417121e74ee93d3b3e8585b787f664709bbf6d69..37edaa8475129624bdd26d1fe27d0e7159c047a6 100644 (file)
@@ -12796,6 +12796,7 @@ struct public_drv_mb {
 #define FW_MB_PARAM_GET_PF_RDMA_BOTH           0x3
 
 /* get MFW feature support response */
+#define FW_MB_PARAM_FEATURE_SUPPORT_SMARTLINQ  0x00000001
 #define FW_MB_PARAM_FEATURE_SUPPORT_EEE                0x00000002
 #define FW_MB_PARAM_FEATURE_SUPPORT_VLINK      0x00010000
 
index b47352643fb5818938c35b369776a0310fb0a13d..f164d4acebcb43a4cd7b2858ad31e95e80467b74 100644 (file)
@@ -281,6 +281,8 @@ int qed_fill_dev_info(struct qed_dev *cdev,
                if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME)
                        dev_info->wol_support = true;
 
+               dev_info->smart_an = qed_mcp_is_smart_an_supported(p_hwfn);
+
                dev_info->abs_pf_id = QED_LEADING_HWFN(cdev)->abs_pf_id;
        } else {
                qed_vf_get_fw_version(&cdev->hwfns[0], &dev_info->fw_major,
index bb8541847aa56df37f368697bbed9503ba44f8e2..cc27fd60d68913970762ff442a660227d48b3ae3 100644 (file)
@@ -3654,6 +3654,12 @@ void qed_mcp_resc_lock_default_init(struct qed_resc_lock_params *p_lock,
        }
 }
 
+bool qed_mcp_is_smart_an_supported(struct qed_hwfn *p_hwfn)
+{
+       return !!(p_hwfn->mcp_info->capabilities &
+                 FW_MB_PARAM_FEATURE_SUPPORT_SMARTLINQ);
+}
+
 int qed_mcp_get_capabilities(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
 {
        u32 mcp_resp;
index 6e1d72a669ae29049410843aee0a614d0d8f6dcb..2799e67417659f660f9f0ba6d9791494564e129a 100644 (file)
@@ -1148,6 +1148,16 @@ void qed_mcp_resc_lock_default_init(struct qed_resc_lock_params *p_lock,
                                    struct qed_resc_unlock_params *p_unlock,
                                    enum qed_resc_lock
                                    resource, bool b_is_permanent);
+
+/**
+ * @brief - Return whether management firmware support smart AN
+ *
+ * @param p_hwfn
+ *
+ * @return bool - true if feature is supported.
+ */
+bool qed_mcp_is_smart_an_supported(struct qed_hwfn *p_hwfn);
+
 /**
  * @brief Learn of supported MFW features; To be done during early init
  *
index 35170f74ed80558c52bd399f8dbec76230afa35f..f6165d304b4dd2f0a3a2a7246e9bdebbcec74676 100644 (file)
@@ -643,6 +643,7 @@ struct qed_dev_info {
        u16             mtu;
 
        bool wol_support;
+       bool smart_an;
 
        /* MBI version */
        u32 mbi_version;