Skip to content

Commit c851a9d

Browse files
mkalderondavem330
authored andcommitted
qed: Introduce iWARP personality
iWARP personality introduced the need for differentiating in several places in the code whether we are RoCE, iWARP or either. This leads to introducing new macros for querying the personality. Signed-off-by: Michal Kalderon <[email protected]> Signed-off-by: Yuval Mintz <[email protected]> Signed-off-by: Ariel Elior <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent a5192c5 commit c851a9d

File tree

7 files changed

+43
-27
lines changed

7 files changed

+43
-27
lines changed

drivers/net/ethernet/qlogic/qed/qed.h

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,14 +210,16 @@ struct qed_tunn_update_params {
210210

211211
/* The PCI personality is not quite synonymous to protocol ID:
212212
* 1. All personalities need CORE connections
213-
* 2. The Ethernet personality may support also the RoCE protocol
213+
* 2. The Ethernet personality may support also the RoCE/iWARP protocol
214214
*/
215215
enum qed_pci_personality {
216216
QED_PCI_ETH,
217217
QED_PCI_FCOE,
218218
QED_PCI_ISCSI,
219219
QED_PCI_ETH_ROCE,
220-
QED_PCI_DEFAULT /* default in shmem */
220+
QED_PCI_ETH_IWARP,
221+
QED_PCI_ETH_RDMA,
222+
QED_PCI_DEFAULT, /* default in shmem */
221223
};
222224

223225
/* All VFs are symmetric, all counters are PF + all VFs */
@@ -277,6 +279,7 @@ enum qed_dev_cap {
277279
QED_DEV_CAP_FCOE,
278280
QED_DEV_CAP_ISCSI,
279281
QED_DEV_CAP_ROCE,
282+
QED_DEV_CAP_IWARP,
280283
};
281284

282285
enum qed_wol_support {
@@ -286,7 +289,24 @@ enum qed_wol_support {
286289

287290
struct qed_hw_info {
288291
/* PCI personality */
289-
enum qed_pci_personality personality;
292+
enum qed_pci_personality personality;
293+
#define QED_IS_RDMA_PERSONALITY(dev) \
294+
((dev)->hw_info.personality == QED_PCI_ETH_ROCE || \
295+
(dev)->hw_info.personality == QED_PCI_ETH_IWARP || \
296+
(dev)->hw_info.personality == QED_PCI_ETH_RDMA)
297+
#define QED_IS_ROCE_PERSONALITY(dev) \
298+
((dev)->hw_info.personality == QED_PCI_ETH_ROCE || \
299+
(dev)->hw_info.personality == QED_PCI_ETH_RDMA)
300+
#define QED_IS_IWARP_PERSONALITY(dev) \
301+
((dev)->hw_info.personality == QED_PCI_ETH_IWARP || \
302+
(dev)->hw_info.personality == QED_PCI_ETH_RDMA)
303+
#define QED_IS_L2_PERSONALITY(dev) \
304+
((dev)->hw_info.personality == QED_PCI_ETH || \
305+
QED_IS_RDMA_PERSONALITY(dev))
306+
#define QED_IS_FCOE_PERSONALITY(dev) \
307+
((dev)->hw_info.personality == QED_PCI_FCOE)
308+
#define QED_IS_ISCSI_PERSONALITY(dev) \
309+
((dev)->hw_info.personality == QED_PCI_ISCSI)
290310

291311
/* Resource Allocation scheme results */
292312
u32 resc_start[QED_MAX_RESC];

drivers/net/ethernet/qlogic/qed/qed_cxt.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ u32 qed_cxt_cfg_ilt_compute_excess(struct qed_hwfn *p_hwfn, u32 used_lines)
853853
if (!excess_lines)
854854
return 0;
855855

856-
if (p_hwfn->hw_info.personality != QED_PCI_ETH_ROCE)
856+
if (!QED_IS_RDMA_PERSONALITY(p_hwfn))
857857
return 0;
858858

859859
p_mngr = p_hwfn->p_cxt_mngr;
@@ -1033,7 +1033,7 @@ static int qed_ilt_blk_alloc(struct qed_hwfn *p_hwfn,
10331033
u32 lines, line, sz_left, lines_to_skip = 0;
10341034

10351035
/* Special handling for RoCE that supports dynamic allocation */
1036-
if ((p_hwfn->hw_info.personality == QED_PCI_ETH_ROCE) &&
1036+
if (QED_IS_RDMA_PERSONALITY(p_hwfn) &&
10371037
((ilt_client == ILT_CLI_CDUT) || ilt_client == ILT_CLI_TSDM))
10381038
return 0;
10391039

@@ -1833,7 +1833,7 @@ static void qed_tm_init_pf(struct qed_hwfn *p_hwfn)
18331833
tm_offset += tm_iids.pf_tids[i];
18341834
}
18351835

1836-
if (p_hwfn->hw_info.personality == QED_PCI_ETH_ROCE)
1836+
if (QED_IS_RDMA_PERSONALITY(p_hwfn))
18371837
active_seg_mask = 0;
18381838

18391839
STORE_RT_REG(p_hwfn, TM_REG_PF_ENABLE_TASK_RT_OFFSET, active_seg_mask);
@@ -2344,7 +2344,7 @@ qed_cxt_dynamic_ilt_alloc(struct qed_hwfn *p_hwfn,
23442344
last_cid_allocated - 1);
23452345

23462346
if (!p_hwfn->b_rdma_enabled_in_prs) {
2347-
/* Enable RoCE search */
2347+
/* Enable RDMA search */
23482348
qed_wr(p_hwfn, p_ptt, p_hwfn->rdma_prs_search_reg, 1);
23492349
p_hwfn->b_rdma_enabled_in_prs = true;
23502350
}

drivers/net/ethernet/qlogic/qed/qed_dev.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -936,7 +936,7 @@ int qed_resc_alloc(struct qed_dev *cdev)
936936

937937
/* EQ */
938938
n_eqes = qed_chain_get_capacity(&p_hwfn->p_spq->chain);
939-
if (p_hwfn->hw_info.personality == QED_PCI_ETH_ROCE) {
939+
if (QED_IS_RDMA_PERSONALITY(p_hwfn)) {
940940
num_cons = qed_cxt_get_proto_cid_count(p_hwfn,
941941
PROTOCOLID_ROCE,
942942
NULL) * 2;
@@ -2057,7 +2057,7 @@ static void qed_hw_set_feat(struct qed_hwfn *p_hwfn)
20572057
qed_int_get_num_sbs(p_hwfn, &sb_cnt);
20582058

20592059
if (IS_ENABLED(CONFIG_QED_RDMA) &&
2060-
p_hwfn->hw_info.personality == QED_PCI_ETH_ROCE) {
2060+
QED_IS_RDMA_PERSONALITY(p_hwfn)) {
20612061
/* Roce CNQ each requires: 1 status block + 1 CNQ. We divide
20622062
* the status blocks equally between L2 / RoCE but with
20632063
* consideration as to how many l2 queues / cnqs we have.
@@ -2068,9 +2068,7 @@ static void qed_hw_set_feat(struct qed_hwfn *p_hwfn)
20682068

20692069
non_l2_sbs = feat_num[QED_RDMA_CNQ];
20702070
}
2071-
2072-
if (p_hwfn->hw_info.personality == QED_PCI_ETH_ROCE ||
2073-
p_hwfn->hw_info.personality == QED_PCI_ETH) {
2071+
if (QED_IS_L2_PERSONALITY(p_hwfn)) {
20742072
/* Start by allocating VF queues, then PF's */
20752073
feat_num[QED_VF_L2_QUE] = min_t(u32,
20762074
RESC_NUM(p_hwfn, QED_L2_QUEUE),
@@ -2083,12 +2081,12 @@ static void qed_hw_set_feat(struct qed_hwfn *p_hwfn)
20832081
QED_VF_L2_QUE));
20842082
}
20852083

2086-
if (p_hwfn->hw_info.personality == QED_PCI_FCOE)
2084+
if (QED_IS_FCOE_PERSONALITY(p_hwfn))
20872085
feat_num[QED_FCOE_CQ] = min_t(u32, sb_cnt.cnt,
20882086
RESC_NUM(p_hwfn,
20892087
QED_CMDQS_CQS));
20902088

2091-
if (p_hwfn->hw_info.personality == QED_PCI_ISCSI)
2089+
if (QED_IS_ISCSI_PERSONALITY(p_hwfn))
20922090
feat_num[QED_ISCSI_CQ] = min_t(u32, sb_cnt.cnt,
20932091
RESC_NUM(p_hwfn,
20942092
QED_CMDQS_CQS));

drivers/net/ethernet/qlogic/qed/qed_l2.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ int qed_l2_alloc(struct qed_hwfn *p_hwfn)
7979
unsigned long **pp_qids;
8080
u32 i;
8181

82-
if (p_hwfn->hw_info.personality != QED_PCI_ETH &&
83-
p_hwfn->hw_info.personality != QED_PCI_ETH_ROCE)
82+
if (!QED_IS_L2_PERSONALITY(p_hwfn))
8483
return 0;
8584

8685
p_l2_info = kzalloc(sizeof(*p_l2_info), GFP_KERNEL);

drivers/net/ethernet/qlogic/qed/qed_ll2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1421,7 +1421,7 @@ int qed_ll2_establish_connection(void *cxt, u8 connection_handle)
14211421
if (rc)
14221422
goto out;
14231423

1424-
if (p_hwfn->hw_info.personality != QED_PCI_ETH_ROCE)
1424+
if (!QED_IS_RDMA_PERSONALITY(p_hwfn))
14251425
qed_wr(p_hwfn, p_ptt, PRS_REG_USE_LIGHT_L2, 1);
14261426

14271427
qed_ll2_establish_connection_ooo(p_hwfn, p_ll2_conn);

drivers/net/ethernet/qlogic/qed/qed_main.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@ static int qed_init_pci(struct qed_dev *cdev, struct pci_dev *pdev)
237237
int qed_fill_dev_info(struct qed_dev *cdev,
238238
struct qed_dev_info *dev_info)
239239
{
240+
struct qed_hwfn *p_hwfn = QED_LEADING_HWFN(cdev);
241+
struct qed_hw_info *hw_info = &p_hwfn->hw_info;
240242
struct qed_tunnel_info *tun = &cdev->tunnel;
241243
struct qed_ptt *ptt;
242244

@@ -260,11 +262,10 @@ int qed_fill_dev_info(struct qed_dev *cdev,
260262
dev_info->pci_mem_start = cdev->pci_params.mem_start;
261263
dev_info->pci_mem_end = cdev->pci_params.mem_end;
262264
dev_info->pci_irq = cdev->pci_params.irq;
263-
dev_info->rdma_supported = (cdev->hwfns[0].hw_info.personality ==
264-
QED_PCI_ETH_ROCE);
265+
dev_info->rdma_supported = QED_IS_RDMA_PERSONALITY(p_hwfn);
265266
dev_info->is_mf_default = IS_MF_DEFAULT(&cdev->hwfns[0]);
266267
dev_info->dev_type = cdev->type;
267-
ether_addr_copy(dev_info->hw_mac, cdev->hwfns[0].hw_info.hw_mac_addr);
268+
ether_addr_copy(dev_info->hw_mac, hw_info->hw_mac_addr);
268269

269270
if (IS_PF(cdev)) {
270271
dev_info->fw_major = FW_MAJOR_VERSION;
@@ -274,8 +275,7 @@ int qed_fill_dev_info(struct qed_dev *cdev,
274275
dev_info->mf_mode = cdev->mf_mode;
275276
dev_info->tx_switching = true;
276277

277-
if (QED_LEADING_HWFN(cdev)->hw_info.b_wol_support ==
278-
QED_WOL_SUPPORT_PME)
278+
if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME)
279279
dev_info->wol_support = true;
280280

281281
dev_info->abs_pf_id = QED_LEADING_HWFN(cdev)->abs_pf_id;
@@ -304,7 +304,7 @@ int qed_fill_dev_info(struct qed_dev *cdev,
304304
&dev_info->mfw_rev, NULL);
305305
}
306306

307-
dev_info->mtu = QED_LEADING_HWFN(cdev)->hw_info.mtu;
307+
dev_info->mtu = hw_info->mtu;
308308

309309
return 0;
310310
}
@@ -790,7 +790,7 @@ static int qed_slowpath_setup_int(struct qed_dev *cdev,
790790
cdev->num_hwfns;
791791

792792
if (!IS_ENABLED(CONFIG_QED_RDMA) ||
793-
QED_LEADING_HWFN(cdev)->hw_info.personality != QED_PCI_ETH_ROCE)
793+
!QED_IS_RDMA_PERSONALITY(QED_LEADING_HWFN(cdev)))
794794
return 0;
795795

796796
for_each_hwfn(cdev, i)
@@ -931,8 +931,7 @@ static void qed_update_pf_params(struct qed_dev *cdev,
931931
/* In case we might support RDMA, don't allow qede to be greedy
932932
* with the L2 contexts. Allow for 64 queues [rx, tx, xdp] per hwfn.
933933
*/
934-
if (QED_LEADING_HWFN(cdev)->hw_info.personality ==
935-
QED_PCI_ETH_ROCE) {
934+
if (QED_IS_RDMA_PERSONALITY(QED_LEADING_HWFN(cdev))) {
936935
u16 *num_cons;
937936

938937
num_cons = &params->eth_pf_params.num_cons;

include/linux/qed/common_hsi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,7 @@ enum protocol_type {
778778
PROTOCOLID_ROCE,
779779
PROTOCOLID_CORE,
780780
PROTOCOLID_ETH,
781-
PROTOCOLID_RESERVED4,
781+
PROTOCOLID_IWARP,
782782
PROTOCOLID_RESERVED5,
783783
PROTOCOLID_PREROCE,
784784
PROTOCOLID_COMMON,

0 commit comments

Comments
 (0)