{
        struct be_eq_obj *eqo = dev;
 
-       event_handle(eqo);
+       be_eq_notify(eqo->adapter, eqo->q.id, false, true, 0);
+       napi_schedule(&eqo->napi);
        return IRQ_HANDLED;
 }
 
 {
        struct be_eq_obj *eqo = container_of(napi, struct be_eq_obj, napi);
        struct be_adapter *adapter = eqo->adapter;
-       int max_work = 0, work, i;
+       int max_work = 0, work, i, num_evts;
        bool tx_done;
 
+       num_evts = events_get(eqo);
+
        /* Process all TXQs serviced by this EQ */
        for (i = eqo->idx; i < adapter->num_tx_qs; i += adapter->num_evt_qs) {
                tx_done = be_process_tx(adapter, &adapter->tx_obj[i],
 
        if (max_work < budget) {
                napi_complete(napi);
-               be_eq_notify(adapter, eqo->q.id, true, false, 0);
+               be_eq_notify(adapter, eqo->q.id, true, false, num_evts);
        } else {
                /* As we'll continue in polling mode, count and clear events */
-               be_eq_notify(adapter, eqo->q.id, false, false, events_get(eqo));
+               be_eq_notify(adapter, eqo->q.id, false, false, num_evts);
        }
        return max_work;
 }