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: Yuval Mintz <Yuval.Mintz@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
7a9b6b8f6e
commit
c5ac93191d
@@ -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 {
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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,7 +903,8 @@ static int qed_slowpath_stop(struct qed_dev *cdev)
|
||||
|
||||
if (IS_PF(cdev)) {
|
||||
qed_free_stream_mem(cdev);
|
||||
qed_sriov_disable(cdev, true);
|
||||
if (IS_QED_ETH_IF(cdev))
|
||||
qed_sriov_disable(cdev, true);
|
||||
|
||||
qed_nic_stop(cdev);
|
||||
qed_slowpath_irq_free(cdev);
|
||||
|
@@ -977,7 +977,18 @@ 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:
|
||||
*p_proto = QED_PCI_ETH;
|
||||
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;
|
||||
|
@@ -358,11 +358,26 @@ int qed_sp_pf_start(struct qed_hwfn *p_hwfn,
|
||||
|
||||
qed_tunn_set_pf_start_params(p_hwfn, p_tunn,
|
||||
&p_ramrod->tunnel_config);
|
||||
p_hwfn->hw_info.personality = PERSONALITY_ETH;
|
||||
|
||||
if (IS_MF_SI(p_hwfn))
|
||||
p_ramrod->allow_npar_tx_switching = allow_npar_tx_switch;
|
||||
|
||||
switch (p_hwfn->hw_info.personality) {
|
||||
case QED_PCI_ETH:
|
||||
p_ramrod->personality = PERSONALITY_ETH;
|
||||
break;
|
||||
case QED_PCI_ISCSI:
|
||||
p_ramrod->personality = PERSONALITY_ISCSI;
|
||||
break;
|
||||
case QED_PCI_ETH_ROCE:
|
||||
p_ramrod->personality = PERSONALITY_RDMA_AND_ETH;
|
||||
break;
|
||||
default:
|
||||
DP_NOTICE(p_hwfn, "Unkown personality %d\n",
|
||||
p_hwfn->hw_info.personality);
|
||||
p_ramrod->personality = PERSONALITY_ETH;
|
||||
}
|
||||
|
||||
if (p_hwfn->cdev->p_iov_info) {
|
||||
struct qed_hw_sriov_info *p_iov = p_hwfn->cdev->p_iov_info;
|
||||
|
||||
|
Reference in New Issue
Block a user