qed: hw_init() to receive parameter-struct
authorMintz, Yuval <Yuval.Mintz@cavium.com>
Tue, 28 Mar 2017 12:12:51 +0000 (15:12 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Mar 2017 01:05:23 +0000 (18:05 -0700)
We'll soon need additional information, so start by changing
the infrastructure to receive the initializing variables
via a parameter struct.

Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qed/qed_dev.c
drivers/net/ethernet/qlogic/qed/qed_dev_api.h
drivers/net/ethernet/qlogic/qed/qed_main.c

index cf95da5679c3558d9ac35b4bd91bcd24c7a4bad9..109299833b147da13426d3139329a63352950138 100644 (file)
@@ -1106,25 +1106,20 @@ static void qed_reset_mb_shadow(struct qed_hwfn *p_hwfn,
               p_hwfn->mcp_info->mfw_mb_cur, p_hwfn->mcp_info->mfw_mb_length);
 }
 
-int qed_hw_init(struct qed_dev *cdev,
-               struct qed_tunn_start_params *p_tunn,
-               bool b_hw_start,
-               enum qed_int_mode int_mode,
-               bool allow_npar_tx_switch,
-               const u8 *bin_fw_data)
+int qed_hw_init(struct qed_dev *cdev, struct qed_hw_init_params *p_params)
 {
        u32 load_code, param, drv_mb_param;
        bool b_default_mtu = true;
        struct qed_hwfn *p_hwfn;
        int rc = 0, mfw_rc, i;
 
-       if ((int_mode == QED_INT_MODE_MSI) && (cdev->num_hwfns > 1)) {
+       if ((p_params->int_mode == QED_INT_MODE_MSI) && (cdev->num_hwfns > 1)) {
                DP_NOTICE(cdev, "MSI mode is not supported for CMT devices\n");
                return -EINVAL;
        }
 
        if (IS_PF(cdev)) {
-               rc = qed_init_fw_data(cdev, bin_fw_data);
+               rc = qed_init_fw_data(cdev, p_params->bin_fw_data);
                if (rc)
                        return rc;
        }
@@ -1181,11 +1176,15 @@ int qed_hw_init(struct qed_dev *cdev,
                /* Fall into */
                case FW_MSG_CODE_DRV_LOAD_FUNCTION:
                        rc = qed_hw_init_pf(p_hwfn, p_hwfn->p_main_ptt,
-                                           p_tunn, p_hwfn->hw_info.hw_mode,
-                                           b_hw_start, int_mode,
-                                           allow_npar_tx_switch);
+                                           p_params->p_tunn,
+                                           p_hwfn->hw_info.hw_mode,
+                                           p_params->b_hw_start,
+                                           p_params->int_mode,
+                                           p_params->allow_npar_tx_switch);
                        break;
                default:
+                       DP_NOTICE(p_hwfn,
+                                 "Unexpected load code [0x%08x]", load_code);
                        rc = -EINVAL;
                        break;
                }
index e96eccff3a41f50cfd4f8612d1c21e2f9199ee97..8f45f4655e2bedb6edb7f172b98dece68804d8a2 100644 (file)
@@ -82,26 +82,31 @@ int qed_resc_alloc(struct qed_dev *cdev);
  */
 void qed_resc_setup(struct qed_dev *cdev);
 
+struct qed_hw_init_params {
+       /* Tunneling parameters */
+       struct qed_tunn_start_params *p_tunn;
+
+       bool b_hw_start;
+
+       /* Interrupt mode [msix, inta, etc.] to use */
+       enum qed_int_mode int_mode;
+
+       /* NPAR tx switching to be used for vports for tx-switching */
+       bool allow_npar_tx_switch;
+
+       /* Binary fw data pointer in binary fw file */
+       const u8 *bin_fw_data;
+};
+
 /**
  * @brief qed_hw_init -
  *
  * @param cdev
- * @param p_tunn
- * @param b_hw_start
- * @param int_mode - interrupt mode [msix, inta, etc.] to use.
- * @param allow_npar_tx_switch - npar tx switching to be used
- *       for vports configured for tx-switching.
- * @param bin_fw_data - binary fw data pointer in binary fw file.
- *                     Pass NULL if not using binary fw file.
+ * @param p_params
  *
  * @return int
  */
-int qed_hw_init(struct qed_dev *cdev,
-               struct qed_tunn_start_params *p_tunn,
-               bool b_hw_start,
-               enum qed_int_mode int_mode,
-               bool allow_npar_tx_switch,
-               const u8 *bin_fw_data);
+int qed_hw_init(struct qed_dev *cdev, struct qed_hw_init_params *p_params);
 
 /**
  * @brief qed_hw_timers_stop_all - stop the timers HW block
index f2ae90ab0977acdef3a408576324d7e46cd6e187..ae0ab3b1601d278c0e04d71d43f64e4493c95cd7 100644 (file)
@@ -901,6 +901,7 @@ static void qed_update_pf_params(struct qed_dev *cdev,
 static int qed_slowpath_start(struct qed_dev *cdev,
                              struct qed_slowpath_params *params)
 {
+       struct qed_hw_init_params hw_init_params;
        struct qed_tunn_start_params tunn_info;
        struct qed_mcp_drv_version drv_version;
        const u8 *data = NULL;
@@ -966,9 +967,14 @@ static int qed_slowpath_start(struct qed_dev *cdev,
        tunn_info.tunn_clss_ipgre = QED_TUNN_CLSS_MAC_VLAN;
 
        /* Start the slowpath */
-       rc = qed_hw_init(cdev, &tunn_info, true,
-                        cdev->int_params.out.int_mode,
-                        true, data);
+       memset(&hw_init_params, 0, sizeof(hw_init_params));
+       hw_init_params.p_tunn = &tunn_info;
+       hw_init_params.b_hw_start = true;
+       hw_init_params.int_mode = cdev->int_params.out.int_mode;
+       hw_init_params.allow_npar_tx_switch = true;
+       hw_init_params.bin_fw_data = data;
+
+       rc = qed_hw_init(cdev, &hw_init_params);
        if (rc)
                goto err2;