bnxt_re: Fix incorrect usage of test_bit()
test_bit() takes a bit number while the 'flags' field in struct bnxt_qplib_rcfw was using actual BIT position converted values. Fix this by assigning bit numbers and use consistent APIs all the flag values. Also logging a message in case of failure. Thanks to Dan Carpenter for pointing this out. Suggested-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
6a28d5a92c
commit
a0ddc2ec8f
|
@ -1071,9 +1071,10 @@ static int bnxt_re_ib_reg(struct bnxt_re_dev *rdev)
|
||||||
*/
|
*/
|
||||||
rc = bnxt_qplib_alloc_rcfw_channel(rdev->en_dev->pdev, &rdev->rcfw,
|
rc = bnxt_qplib_alloc_rcfw_channel(rdev->en_dev->pdev, &rdev->rcfw,
|
||||||
BNXT_RE_MAX_QPC_COUNT);
|
BNXT_RE_MAX_QPC_COUNT);
|
||||||
if (rc)
|
if (rc) {
|
||||||
|
pr_err("Failed to allocate RCFW Channel: %#x\n", rc);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
}
|
||||||
rc = bnxt_re_net_ring_alloc
|
rc = bnxt_re_net_ring_alloc
|
||||||
(rdev, rdev->rcfw.creq.pbl[PBL_LVL_0].pg_map_arr,
|
(rdev, rdev->rcfw.creq.pbl[PBL_LVL_0].pg_map_arr,
|
||||||
rdev->rcfw.creq.pbl[rdev->rcfw.creq.level].pg_count,
|
rdev->rcfw.creq.pbl[rdev->rcfw.creq.level].pg_count,
|
||||||
|
|
|
@ -168,14 +168,14 @@ static int __send_message(struct bnxt_qplib_rcfw *rcfw, struct cmdq_base *req,
|
||||||
rcfw->seq_num++;
|
rcfw->seq_num++;
|
||||||
|
|
||||||
cmdq_prod = cmdq->prod;
|
cmdq_prod = cmdq->prod;
|
||||||
if (rcfw->flags & FIRMWARE_FIRST_FLAG) {
|
if (test_bit(FIRMWARE_FIRST_FLAG, &rcfw->flags)) {
|
||||||
/* The very first doorbell write
|
/* The very first doorbell write
|
||||||
* is required to set this flag
|
* is required to set this flag
|
||||||
* which prompts the FW to reset
|
* which prompts the FW to reset
|
||||||
* its internal pointers
|
* its internal pointers
|
||||||
*/
|
*/
|
||||||
cmdq_prod |= FIRMWARE_FIRST_FLAG;
|
cmdq_prod |= BIT(FIRMWARE_FIRST_FLAG);
|
||||||
rcfw->flags &= ~FIRMWARE_FIRST_FLAG;
|
clear_bit(FIRMWARE_FIRST_FLAG, &rcfw->flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ring CMDQ DB */
|
/* ring CMDQ DB */
|
||||||
|
@ -618,7 +618,7 @@ int bnxt_qplib_enable_rcfw_channel(struct pci_dev *pdev,
|
||||||
|
|
||||||
/* General */
|
/* General */
|
||||||
rcfw->seq_num = 0;
|
rcfw->seq_num = 0;
|
||||||
rcfw->flags = FIRMWARE_FIRST_FLAG;
|
set_bit(FIRMWARE_FIRST_FLAG, &rcfw->flags);
|
||||||
bmap_size = BITS_TO_LONGS(RCFW_MAX_OUTSTANDING_CMD *
|
bmap_size = BITS_TO_LONGS(RCFW_MAX_OUTSTANDING_CMD *
|
||||||
sizeof(unsigned long));
|
sizeof(unsigned long));
|
||||||
rcfw->cmdq_bitmap = kzalloc(bmap_size, GFP_KERNEL);
|
rcfw->cmdq_bitmap = kzalloc(bmap_size, GFP_KERNEL);
|
||||||
|
|
|
@ -162,9 +162,9 @@ struct bnxt_qplib_rcfw {
|
||||||
unsigned long *cmdq_bitmap;
|
unsigned long *cmdq_bitmap;
|
||||||
u32 bmap_size;
|
u32 bmap_size;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
#define FIRMWARE_INITIALIZED_FLAG BIT(0)
|
#define FIRMWARE_INITIALIZED_FLAG 0
|
||||||
#define FIRMWARE_FIRST_FLAG BIT(31)
|
#define FIRMWARE_FIRST_FLAG 31
|
||||||
#define FIRMWARE_TIMED_OUT BIT(3)
|
#define FIRMWARE_TIMED_OUT 3
|
||||||
wait_queue_head_t waitq;
|
wait_queue_head_t waitq;
|
||||||
int (*aeq_handler)(struct bnxt_qplib_rcfw *,
|
int (*aeq_handler)(struct bnxt_qplib_rcfw *,
|
||||||
struct creq_func_event *);
|
struct creq_func_event *);
|
||||||
|
|
Loading…
Reference in New Issue