瀏覽代碼

qed: Prevent 100g from working in MSI

Adapter can support 100g in both MSIx and INTa, but not in MSI.

Signed-off-by: Sudarsana Reddy Kalluru <sudarsana.kalluru@qlogic.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Sudarsana Reddy Kalluru 9 年之前
父節點
當前提交
bb13ace7dc
共有 2 個文件被更改,包括 15 次插入8 次删除
  1. 5 0
      drivers/net/ethernet/qlogic/qed/qed_dev.c
  2. 10 8
      drivers/net/ethernet/qlogic/qed/qed_main.c

+ 5 - 0
drivers/net/ethernet/qlogic/qed/qed_dev.c

@@ -835,6 +835,11 @@ int qed_hw_init(struct qed_dev *cdev,
 	u32 load_code, param;
 	u32 load_code, param;
 	int rc, mfw_rc, i;
 	int rc, mfw_rc, i;
 
 
+	if ((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)) {
 	if (IS_PF(cdev)) {
 		rc = qed_init_fw_data(cdev, bin_fw_data);
 		rc = qed_init_fw_data(cdev, bin_fw_data);
 		if (rc != 0)
 		if (rc != 0)

+ 10 - 8
drivers/net/ethernet/qlogic/qed/qed_main.c

@@ -413,15 +413,17 @@ static int qed_set_int_mode(struct qed_dev *cdev, bool force_mode)
 		/* Fallthrough */
 		/* Fallthrough */
 
 
 	case QED_INT_MODE_MSI:
 	case QED_INT_MODE_MSI:
-		rc = pci_enable_msi(cdev->pdev);
-		if (!rc) {
-			int_params->out.int_mode = QED_INT_MODE_MSI;
-			goto out;
-		}
+		if (cdev->num_hwfns == 1) {
+			rc = pci_enable_msi(cdev->pdev);
+			if (!rc) {
+				int_params->out.int_mode = QED_INT_MODE_MSI;
+				goto out;
+			}
 
 
-		DP_NOTICE(cdev, "Failed to enable MSI\n");
-		if (force_mode)
-			goto out;
+			DP_NOTICE(cdev, "Failed to enable MSI\n");
+			if (force_mode)
+				goto out;
+		}
 		/* Fallthrough */
 		/* Fallthrough */
 
 
 	case QED_INT_MODE_INTA:
 	case QED_INT_MODE_INTA: