Skip to content

Commit 4110768

Browse files
jpirkodavem330
authored andcommitted
mlxsw: pci: Check number of CQEs for CQE version 2
Check number of CQEs for CQE version 2 reported by QUERY_AQ_CAP command. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 8404f6f commit 4110768

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

drivers/net/ethernet/mellanox/mlxsw/cmd.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,10 +424,15 @@ MLXSW_ITEM32(cmd_mbox, query_aq_cap, log_max_rdq_sz, 0x04, 24, 8);
424424
MLXSW_ITEM32(cmd_mbox, query_aq_cap, max_num_rdqs, 0x04, 0, 8);
425425

426426
/* cmd_mbox_query_aq_cap_log_max_cq_sz
427-
* Log (base 2) of max CQEs allowed on CQ.
427+
* Log (base 2) of the Maximum CQEs allowed in a CQ for CQEv0 and CQEv1.
428428
*/
429429
MLXSW_ITEM32(cmd_mbox, query_aq_cap, log_max_cq_sz, 0x08, 24, 8);
430430

431+
/* cmd_mbox_query_aq_cap_log_max_cqv2_sz
432+
* Log (base 2) of the Maximum CQEs allowed in a CQ for CQEv2.
433+
*/
434+
MLXSW_ITEM32(cmd_mbox, query_aq_cap, log_max_cqv2_sz, 0x08, 16, 8);
435+
431436
/* cmd_mbox_query_aq_cap_max_num_cqs
432437
* Maximum number of CQs.
433438
*/

drivers/net/ethernet/mellanox/mlxsw/pci.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,7 @@ static int mlxsw_pci_aqs_init(struct mlxsw_pci *mlxsw_pci, char *mbox)
959959
u8 rdq_log2sz;
960960
u8 num_cqs;
961961
u8 cq_log2sz;
962+
u8 cqv2_log2sz;
962963
u8 num_eqs;
963964
u8 eq_log2sz;
964965
int err;
@@ -974,6 +975,7 @@ static int mlxsw_pci_aqs_init(struct mlxsw_pci *mlxsw_pci, char *mbox)
974975
rdq_log2sz = mlxsw_cmd_mbox_query_aq_cap_log_max_rdq_sz_get(mbox);
975976
num_cqs = mlxsw_cmd_mbox_query_aq_cap_max_num_cqs_get(mbox);
976977
cq_log2sz = mlxsw_cmd_mbox_query_aq_cap_log_max_cq_sz_get(mbox);
978+
cqv2_log2sz = mlxsw_cmd_mbox_query_aq_cap_log_max_cqv2_sz_get(mbox);
977979
num_eqs = mlxsw_cmd_mbox_query_aq_cap_max_num_eqs_get(mbox);
978980
eq_log2sz = mlxsw_cmd_mbox_query_aq_cap_log_max_eq_sz_get(mbox);
979981

@@ -986,6 +988,8 @@ static int mlxsw_pci_aqs_init(struct mlxsw_pci *mlxsw_pci, char *mbox)
986988
if ((1 << sdq_log2sz != MLXSW_PCI_WQE_COUNT) ||
987989
(1 << rdq_log2sz != MLXSW_PCI_WQE_COUNT) ||
988990
(1 << cq_log2sz != MLXSW_PCI_CQE01_COUNT) ||
991+
(mlxsw_pci->max_cqe_ver == MLXSW_PCI_CQE_V2 &&
992+
(1 << cqv2_log2sz != MLXSW_PCI_CQE2_COUNT)) ||
989993
(1 << eq_log2sz != MLXSW_PCI_EQE_COUNT)) {
990994
dev_err(&pdev->dev, "Unsupported number of async queue descriptors\n");
991995
return -EINVAL;

0 commit comments

Comments
 (0)