mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-22 09:31:51 +00:00
[undi] Apply quota only to number of complete received packets
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
779d65222e
commit
d31cf2de30
@ -72,8 +72,8 @@ struct undi_nic {
|
||||
/** Delay between retries of PXENV_UNDI_INITIALIZE */
|
||||
#define UNDI_INITIALIZE_RETRY_DELAY_MS 200
|
||||
|
||||
/** Maximum number of calls to PXENV_UNDI_ISR per poll */
|
||||
#define UNDI_POLL_QUOTA 4
|
||||
/** Maximum number of received packets per poll */
|
||||
#define UNDI_RX_QUOTA 4
|
||||
|
||||
/** Alignment of received frame payload */
|
||||
#define UNDI_RX_ALIGN 16
|
||||
@ -331,7 +331,7 @@ static void undinet_poll ( struct net_device *netdev ) {
|
||||
struct undi_nic *undinic = netdev->priv;
|
||||
struct s_PXENV_UNDI_ISR undi_isr;
|
||||
struct io_buffer *iobuf = NULL;
|
||||
unsigned int quota = UNDI_POLL_QUOTA;
|
||||
unsigned int quota = UNDI_RX_QUOTA;
|
||||
size_t len;
|
||||
size_t reserve_len;
|
||||
size_t frag_len;
|
||||
@ -370,7 +370,7 @@ static void undinet_poll ( struct net_device *netdev ) {
|
||||
}
|
||||
|
||||
/* Run through the ISR loop */
|
||||
while ( quota-- ) {
|
||||
while ( quota ) {
|
||||
profile_start ( &undinet_isr_call_profiler );
|
||||
if ( ( rc = pxeparent_call ( undinet_entry, PXENV_UNDI_ISR,
|
||||
&undi_isr,
|
||||
@ -424,6 +424,7 @@ static void undinet_poll ( struct net_device *netdev ) {
|
||||
if ( iob_len ( iobuf ) == len ) {
|
||||
/* Whole packet received; deliver it */
|
||||
netdev_rx ( netdev, iob_disown ( iobuf ) );
|
||||
quota--;
|
||||
/* Etherboot 5.4 fails to return all packets
|
||||
* under mild load; pretend it retriggered.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user