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

Commit c5ac9319 authored by Yuval Mintz's avatar Yuval Mintz Committed by David S. Miller
Browse files

qed: Add iscsi/rdma personalities



This patch adds in the ecore 2 new personalities in addition to
QED_PCI_ETH - QED_PCI_ISCSI and QED_PCI_ETH_ROCE.

Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7a9b6b8f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -127,6 +127,8 @@ struct qed_tunn_update_params {
 */
enum qed_pci_personality {
	QED_PCI_ETH,
	QED_PCI_ISCSI,
	QED_PCI_ETH_ROCE,
	QED_PCI_DEFAULT /* default in shmem */
};

@@ -170,6 +172,8 @@ enum QED_PORT_MODE {

enum qed_dev_cap {
	QED_DEV_CAP_ETH,
	QED_DEV_CAP_ISCSI,
	QED_DEV_CAP_ROCE,
};

struct qed_hw_info {
+6 −0
Original line number Diff line number Diff line
@@ -1472,6 +1472,12 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn,
	if (device_capabilities & NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET)
		__set_bit(QED_DEV_CAP_ETH,
			  &p_hwfn->hw_info.device_capabilities);
	if (device_capabilities & NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI)
		__set_bit(QED_DEV_CAP_ISCSI,
			  &p_hwfn->hw_info.device_capabilities);
	if (device_capabilities & NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE)
		__set_bit(QED_DEV_CAP_ROCE,
			  &p_hwfn->hw_info.device_capabilities);

	return qed_mcp_fill_shmem_func_info(p_hwfn, p_ptt);
}
+5 −1
Original line number Diff line number Diff line
@@ -650,7 +650,7 @@ struct mstorm_vf_zone {
/* personality per PF */
enum personality_type {
	BAD_PERSONALITY_TYP,
	PERSONALITY_RESERVED,
	PERSONALITY_ISCSI,
	PERSONALITY_RESERVED2,
	PERSONALITY_RDMA_AND_ETH,
	PERSONALITY_RESERVED3,
@@ -7072,6 +7072,8 @@ struct public_func {
#define FUNC_MF_CFG_PROTOCOL_MASK	0x000000f0
#define FUNC_MF_CFG_PROTOCOL_SHIFT	4
#define FUNC_MF_CFG_PROTOCOL_ETHERNET	0x00000000
#define FUNC_MF_CFG_PROTOCOL_ISCSI              0x00000010
#define FUNC_MF_CFG_PROTOCOL_ROCE               0x00000030
#define FUNC_MF_CFG_PROTOCOL_MAX	0x00000030

#define FUNC_MF_CFG_MIN_BW_MASK		0x0000ff00
@@ -7405,6 +7407,8 @@ struct nvm_cfg1_glob {
	u32 misc_sig;
	u32 device_capabilities;
#define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET	0x1
#define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI		0x4
#define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE		0x8
	u32 power_dissipated;
	u32 power_consumed;
	u32 efi_version;
+4 −1
Original line number Diff line number Diff line
@@ -207,6 +207,8 @@ int qed_fill_dev_info(struct qed_dev *cdev,
	dev_info->pci_mem_start = cdev->pci_params.mem_start;
	dev_info->pci_mem_end = cdev->pci_params.mem_end;
	dev_info->pci_irq = cdev->pci_params.irq;
	dev_info->rdma_supported =
	    (cdev->hwfns[0].hw_info.personality == QED_PCI_ETH_ROCE);
	dev_info->is_mf_default = IS_MF_DEFAULT(&cdev->hwfns[0]);
	ether_addr_copy(dev_info->hw_mac, cdev->hwfns[0].hw_info.hw_mac_addr);

@@ -901,6 +903,7 @@ static int qed_slowpath_stop(struct qed_dev *cdev)

	if (IS_PF(cdev)) {
		qed_free_stream_mem(cdev);
		if (IS_QED_ETH_IF(cdev))
			qed_sriov_disable(cdev, true);

		qed_nic_stop(cdev);
+12 −1
Original line number Diff line number Diff line
@@ -977,8 +977,19 @@ qed_mcp_get_shmem_proto(struct qed_hwfn *p_hwfn,

	switch (p_info->config & FUNC_MF_CFG_PROTOCOL_MASK) {
	case FUNC_MF_CFG_PROTOCOL_ETHERNET:
		if (test_bit(QED_DEV_CAP_ROCE,
			     &p_hwfn->hw_info.device_capabilities))
			*p_proto = QED_PCI_ETH_ROCE;
		else
			*p_proto = QED_PCI_ETH;
		break;
	case FUNC_MF_CFG_PROTOCOL_ISCSI:
		*p_proto = QED_PCI_ISCSI;
		break;
	case FUNC_MF_CFG_PROTOCOL_ROCE:
		DP_NOTICE(p_hwfn, "RoCE personality is not a valid value!\n");
		rc = -EINVAL;
		break;
	default:
		rc = -EINVAL;
	}
Loading