I touched upon this in another reply.
For forcedeth it should never be zero, it gets set in
netif_napi_add() to RX_WORK_PER_LOOP which is unconditionally
defined to 64.
Afterwards napi->weight should never be modified and that is
what is passed into n->poll().
Perhaps some memory scribble is causing it to be zero'd.
-