schedule_delayed_work(&bp->fw_reset_task, delay);
 }
 
-static void bnxt_queue_sp_work(struct bnxt *bp)
+static void __bnxt_queue_sp_work(struct bnxt *bp)
 {
        if (BNXT_PF(bp))
                queue_work(bnxt_pf_wq, &bp->sp_task);
                schedule_work(&bp->sp_task);
 }
 
+static void bnxt_queue_sp_work(struct bnxt *bp, unsigned int event)
+{
+       set_bit(event, &bp->sp_event);
+       __bnxt_queue_sp_work(bp);
+}
+
 static void bnxt_sched_reset_rxr(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
 {
        if (!rxr->bnapi->in_reset) {
                        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);
+               __bnxt_queue_sp_work(bp);
        }
        rxr->rx_next_cons = 0xffff;
 }
        default:
                goto async_event_process_exit;
        }
-       bnxt_queue_sp_work(bp);
+       __bnxt_queue_sp_work(bp);
 async_event_process_exit:
        return 0;
 }
                }
 
                set_bit(vf_id - bp->pf.first_vf_id, bp->pf.vf_event_bmap);
-               set_bit(BNXT_HWRM_EXEC_FWD_REQ_SP_EVENT, &bp->sp_event);
-               bnxt_queue_sp_work(bp);
+               bnxt_queue_sp_work(bp, BNXT_HWRM_EXEC_FWD_REQ_SP_EVENT);
                break;
 
        case CMPL_BASE_TYPE_HWRM_ASYNC_EVENT:
        if (mask != vnic->rx_mask || uc_update || mc_update) {
                vnic->rx_mask = mask;
 
-               set_bit(BNXT_RX_MASK_SP_EVENT, &bp->sp_event);
-               bnxt_queue_sp_work(bp);
+               bnxt_queue_sp_work(bp, BNXT_RX_MASK_SP_EVENT);
        }
 }
 
        struct bnxt *bp = netdev_priv(dev);
 
        netdev_err(bp->dev,  "TX timeout detected, starting reset task!\n");
-       set_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event);
-       bnxt_queue_sp_work(bp);
+       bnxt_queue_sp_work(bp, BNXT_RESET_TASK_SP_EVENT);
 }
 
 static void bnxt_fw_health_check(struct bnxt *bp)
        return;
 
 fw_reset:
-       set_bit(BNXT_FW_EXCEPTION_SP_EVENT, &bp->sp_event);
-       bnxt_queue_sp_work(bp);
+       bnxt_queue_sp_work(bp, BNXT_FW_EXCEPTION_SP_EVENT);
 }
 
 static void bnxt_timer(struct timer_list *t)
        if (bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY)
                bnxt_fw_health_check(bp);
 
-       if (BNXT_LINK_IS_UP(bp) && bp->stats_coal_ticks) {
-               set_bit(BNXT_PERIODIC_STATS_SP_EVENT, &bp->sp_event);
-               bnxt_queue_sp_work(bp);
-       }
+       if (BNXT_LINK_IS_UP(bp) && bp->stats_coal_ticks)
+               bnxt_queue_sp_work(bp, BNXT_PERIODIC_STATS_SP_EVENT);
 
-       if (bnxt_tc_flower_enabled(bp)) {
-               set_bit(BNXT_FLOW_STATS_SP_EVENT, &bp->sp_event);
-               bnxt_queue_sp_work(bp);
-       }
+       if (bnxt_tc_flower_enabled(bp))
+               bnxt_queue_sp_work(bp, BNXT_FLOW_STATS_SP_EVENT);
 
 #ifdef CONFIG_RFS_ACCEL
-       if ((bp->flags & BNXT_FLAG_RFS) && bp->ntp_fltr_count) {
-               set_bit(BNXT_RX_NTP_FLTR_SP_EVENT, &bp->sp_event);
-               bnxt_queue_sp_work(bp);
-       }
+       if ((bp->flags & BNXT_FLAG_RFS) && bp->ntp_fltr_count)
+               bnxt_queue_sp_work(bp, BNXT_RX_NTP_FLTR_SP_EVENT);
 #endif /*CONFIG_RFS_ACCEL*/
 
        if (bp->link_info.phy_retry) {
                        bp->link_info.phy_retry = false;
                        netdev_warn(bp->dev, "failed to update phy settings after maximum retries.\n");
                } else {
-                       set_bit(BNXT_UPDATE_PHY_SP_EVENT, &bp->sp_event);
-                       bnxt_queue_sp_work(bp);
+                       bnxt_queue_sp_work(bp, BNXT_UPDATE_PHY_SP_EVENT);
                }
        }
 
-       if (test_bit(BNXT_STATE_L2_FILTER_RETRY, &bp->state)) {
-               set_bit(BNXT_RX_MASK_SP_EVENT, &bp->sp_event);
-               bnxt_queue_sp_work(bp);
-       }
+       if (test_bit(BNXT_STATE_L2_FILTER_RETRY, &bp->state))
+               bnxt_queue_sp_work(bp, BNXT_RX_MASK_SP_EVENT);
 
        if ((bp->flags & BNXT_FLAG_CHIP_P5) && !bp->chip_rev &&
-           netif_carrier_ok(dev)) {
-               set_bit(BNXT_RING_COAL_NOW_SP_EVENT, &bp->sp_event);
-               bnxt_queue_sp_work(bp);
-       }
+           netif_carrier_ok(dev))
+               bnxt_queue_sp_work(bp, BNXT_RING_COAL_NOW_SP_EVENT);
+
 bnxt_restart_timer:
        mod_timer(&bp->timer, jiffies + bp->current_interval);
 }
        bp->ntp_fltr_count++;
        spin_unlock_bh(&bp->ntp_fltr_lock);
 
-       set_bit(BNXT_RX_NTP_FLTR_SP_EVENT, &bp->sp_event);
-       bnxt_queue_sp_work(bp);
+       bnxt_queue_sp_work(bp, BNXT_RX_NTP_FLTR_SP_EVENT);
 
        return new_fltr->sw_id;