eth: bnxt: move and rename reset helpers
Move the reset helpers, subsequent patches will need some of them on the Tx path. While at it rename bnxt_sched_reset(), on more recent chips it schedules a queue reset, instead of a fuller reset. Link: https://lore.kernel.org/r/20230720010440.1967136-2-kuba@kernel.org Reviewed-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
59be3baa8d
commit
fea2993aec
|
@ -293,6 +293,38 @@ static void bnxt_db_cq(struct bnxt *bp, struct bnxt_db_info *db, u32 idx)
|
|||
BNXT_DB_CQ(db, idx);
|
||||
}
|
||||
|
||||
static void bnxt_queue_fw_reset_work(struct bnxt *bp, unsigned long delay)
|
||||
{
|
||||
if (!(test_bit(BNXT_STATE_IN_FW_RESET, &bp->state)))
|
||||
return;
|
||||
|
||||
if (BNXT_PF(bp))
|
||||
queue_delayed_work(bnxt_pf_wq, &bp->fw_reset_task, delay);
|
||||
else
|
||||
schedule_delayed_work(&bp->fw_reset_task, delay);
|
||||
}
|
||||
|
||||
static void bnxt_queue_sp_work(struct bnxt *bp)
|
||||
{
|
||||
if (BNXT_PF(bp))
|
||||
queue_work(bnxt_pf_wq, &bp->sp_task);
|
||||
else
|
||||
schedule_work(&bp->sp_task);
|
||||
}
|
||||
|
||||
static void bnxt_sched_reset_rxr(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
|
||||
{
|
||||
if (!rxr->bnapi->in_reset) {
|
||||
rxr->bnapi->in_reset = true;
|
||||
if (bp->flags & BNXT_FLAG_CHIP_P5)
|
||||
set_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event);
|
||||
else
|
||||
set_bit(BNXT_RST_RING_SP_EVENT, &bp->sp_event);
|
||||
bnxt_queue_sp_work(bp);
|
||||
}
|
||||
rxr->rx_next_cons = 0xffff;
|
||||
}
|
||||
|
||||
const u16 bnxt_lhint_arr[] = {
|
||||
TX_BD_FLAGS_LHINT_512_AND_SMALLER,
|
||||
TX_BD_FLAGS_LHINT_512_TO_1023,
|
||||
|
@ -1234,38 +1266,6 @@ static int bnxt_discard_rx(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void bnxt_queue_fw_reset_work(struct bnxt *bp, unsigned long delay)
|
||||
{
|
||||
if (!(test_bit(BNXT_STATE_IN_FW_RESET, &bp->state)))
|
||||
return;
|
||||
|
||||
if (BNXT_PF(bp))
|
||||
queue_delayed_work(bnxt_pf_wq, &bp->fw_reset_task, delay);
|
||||
else
|
||||
schedule_delayed_work(&bp->fw_reset_task, delay);
|
||||
}
|
||||
|
||||
static void bnxt_queue_sp_work(struct bnxt *bp)
|
||||
{
|
||||
if (BNXT_PF(bp))
|
||||
queue_work(bnxt_pf_wq, &bp->sp_task);
|
||||
else
|
||||
schedule_work(&bp->sp_task);
|
||||
}
|
||||
|
||||
static void bnxt_sched_reset(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
|
||||
{
|
||||
if (!rxr->bnapi->in_reset) {
|
||||
rxr->bnapi->in_reset = true;
|
||||
if (bp->flags & BNXT_FLAG_CHIP_P5)
|
||||
set_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event);
|
||||
else
|
||||
set_bit(BNXT_RST_RING_SP_EVENT, &bp->sp_event);
|
||||
bnxt_queue_sp_work(bp);
|
||||
}
|
||||
rxr->rx_next_cons = 0xffff;
|
||||
}
|
||||
|
||||
static u16 bnxt_alloc_agg_idx(struct bnxt_rx_ring_info *rxr, u16 agg_id)
|
||||
{
|
||||
struct bnxt_tpa_idx_map *map = rxr->rx_tpa_idx_map;
|
||||
|
@ -1320,7 +1320,7 @@ static void bnxt_tpa_start(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
|
|||
netdev_warn(bp->dev, "TPA cons %x, expected cons %x, error code %x\n",
|
||||
cons, rxr->rx_next_cons,
|
||||
TPA_START_ERROR_CODE(tpa_start1));
|
||||
bnxt_sched_reset(bp, rxr);
|
||||
bnxt_sched_reset_rxr(bp, rxr);
|
||||
return;
|
||||
}
|
||||
/* Store cfa_code in tpa_info to use in tpa_end
|
||||
|
@ -1844,7 +1844,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
|
|||
if (rxr->rx_next_cons != 0xffff)
|
||||
netdev_warn(bp->dev, "RX cons %x != expected cons %x\n",
|
||||
cons, rxr->rx_next_cons);
|
||||
bnxt_sched_reset(bp, rxr);
|
||||
bnxt_sched_reset_rxr(bp, rxr);
|
||||
if (rc1)
|
||||
return rc1;
|
||||
goto next_rx_no_prod_no_len;
|
||||
|
@ -1882,7 +1882,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
|
|||
!(bp->fw_cap & BNXT_FW_CAP_RING_MONITOR)) {
|
||||
netdev_warn_once(bp->dev, "RX buffer error %x\n",
|
||||
rx_err);
|
||||
bnxt_sched_reset(bp, rxr);
|
||||
bnxt_sched_reset_rxr(bp, rxr);
|
||||
}
|
||||
}
|
||||
goto next_rx_no_len;
|
||||
|
@ -2329,7 +2329,7 @@ static int bnxt_async_event_process(struct bnxt *bp,
|
|||
goto async_event_process_exit;
|
||||
}
|
||||
rxr = bp->bnapi[grp_idx]->rx_ring;
|
||||
bnxt_sched_reset(bp, rxr);
|
||||
bnxt_sched_reset_rxr(bp, rxr);
|
||||
goto async_event_process_exit;
|
||||
}
|
||||
case ASYNC_EVENT_CMPL_EVENT_ID_ECHO_REQUEST: {
|
||||
|
|
Loading…
Reference in New Issue