Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4940b8cd authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'qlcnic-next'



Jitendra Kalsaria says:

====================
qlcnic driver updates

This patch series containes following changes -
* Optimize MAC learning code.
* Export board temperature using hwmon-sysfs interface.
* Add support for configuring Tx interrupt coalescing parameters from VF.
* Logging error messages in error path.
* Restrict extended vNIC support in legacy interrupt mode and log appropriate
  message.

Please apply this series to net-next.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents f7167750 d7365744
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -66,6 +66,17 @@ config QLCNIC_VXLAN
	  Say Y here if you want to enable hardware offload support for
	  Virtual eXtensible Local Area Network (VXLAN) in the driver.

config QLCNIC_HWMON
	bool "QLOGIC QLCNIC 82XX and 83XX family HWMON support"
	depends on QLCNIC && HWMON
	default y
	---help---
	  This configuration parameter can be used to read the
	  board temperature in Converged Ethernet devices
	  supported by qlcnic.

	  This data is available via the hwmon sysfs interface.

config QLGE
	tristate "QLogic QLGE 10Gb Ethernet Driver Support"
	depends on PCI
+17 −2
Original line number Diff line number Diff line
@@ -39,8 +39,8 @@

#define _QLCNIC_LINUX_MAJOR 5
#define _QLCNIC_LINUX_MINOR 3
#define _QLCNIC_LINUX_SUBVERSION 57
#define QLCNIC_LINUX_VERSIONID  "5.3.57"
#define _QLCNIC_LINUX_SUBVERSION 58
#define QLCNIC_LINUX_VERSIONID  "5.3.58"
#define QLCNIC_DRV_IDC_VER  0x01
#define QLCNIC_DRIVER_VERSION  ((_QLCNIC_LINUX_MAJOR << 16) |\
		 (_QLCNIC_LINUX_MINOR << 8) | (_QLCNIC_LINUX_SUBVERSION))
@@ -537,6 +537,7 @@ struct qlcnic_hardware_context {
	u8 phys_port_id[ETH_ALEN];
	u8 lb_mode;
	u16 vxlan_port;
	struct device *hwmon_dev;
};

struct qlcnic_adapter_stats {
@@ -2361,4 +2362,18 @@ static inline u32 qlcnic_get_vnic_func_count(struct qlcnic_adapter *adapter)
	else
		return QLC_DEFAULT_VNIC_COUNT;
}

#ifdef CONFIG_QLCNIC_HWMON
void qlcnic_register_hwmon_dev(struct qlcnic_adapter *);
void qlcnic_unregister_hwmon_dev(struct qlcnic_adapter *);
#else
static inline void qlcnic_register_hwmon_dev(struct qlcnic_adapter *adapter)
{
	return;
}
static inline void qlcnic_unregister_hwmon_dev(struct qlcnic_adapter *adapter)
{
	return;
}
#endif
#endif				/* __QLCNIC_H_ */
+12 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ static void qlcnic_83xx_get_beacon_state(struct qlcnic_adapter *);
#define RSS_HASHTYPE_IP_TCP		0x3
#define QLC_83XX_FW_MBX_CMD		0
#define QLC_SKIP_INACTIVE_PCI_REGS	7
#define QLC_MAX_LEGACY_FUNC_SUPP	8

static const struct qlcnic_mailbox_metadata qlcnic_83xx_mbx_tbl[] = {
	{QLCNIC_CMD_CONFIGURE_IP_ADDR, 6, 1},
@@ -357,8 +358,15 @@ int qlcnic_83xx_setup_intr(struct qlcnic_adapter *adapter)
	if (!ahw->intr_tbl)
		return -ENOMEM;

	if (!(adapter->flags & QLCNIC_MSIX_ENABLED))
	if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) {
		if (adapter->ahw->pci_func >= QLC_MAX_LEGACY_FUNC_SUPP) {
			dev_err(&adapter->pdev->dev, "PCI function number 8 and higher are not supported with legacy interrupt, func 0x%x\n",
				ahw->pci_func);
			return -EOPNOTSUPP;
		}

		qlcnic_83xx_enable_legacy(adapter);
	}

	for (i = 0; i < num_msix; i++) {
		if (adapter->flags & QLCNIC_MSIX_ENABLED)
@@ -879,6 +887,9 @@ int qlcnic_83xx_alloc_mbx_args(struct qlcnic_cmd_args *mbx,
			return 0;
		}
	}

	dev_err(&adapter->pdev->dev, "%s: Invalid mailbox command opcode 0x%x\n",
		__func__, type);
	return -EINVAL;
}

+2 −0
Original line number Diff line number Diff line
@@ -2181,6 +2181,8 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
		max_sds_rings = QLCNIC_MAX_SDS_RINGS;
		max_tx_rings = QLCNIC_MAX_TX_RINGS;
	} else {
		dev_err(&adapter->pdev->dev, "%s: Invalid opmode %d\n",
			__func__, ret);
		return -EIO;
	}

+11 −2
Original line number Diff line number Diff line
@@ -1027,8 +1027,11 @@ int qlcnic_config_port_mirroring(struct qlcnic_adapter *adapter, u8 id,
	u32 arg1;

	if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC ||
	    !(adapter->eswitch[id].flags & QLCNIC_SWITCH_ENABLE))
	    !(adapter->eswitch[id].flags & QLCNIC_SWITCH_ENABLE)) {
		dev_err(&adapter->pdev->dev, "%s: Not a management function\n",
			__func__);
		return err;
	}

	arg1 = id | (enable_mirroring ? BIT_4 : 0);
	arg1 |= pci_func << 8;
@@ -1318,8 +1321,12 @@ int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
	u32 arg1, arg2 = 0;
	u8 pci_func;

	if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC)
	if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC) {
		dev_err(&adapter->pdev->dev, "%s: Not a management function\n",
			__func__);
		return err;
	}

	pci_func = esw_cfg->pci_func;
	index = qlcnic_is_valid_nic_func(adapter, pci_func);
	if (index < 0)
@@ -1363,6 +1370,8 @@ int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
			arg1 &= ~(0x0ffff << 16);
			break;
	default:
		dev_err(&adapter->pdev->dev, "%s: Invalid opmode 0x%x\n",
			__func__, esw_cfg->op_mode);
		return err;
	}

Loading