mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-20 11:11:24 +00:00
Fix bug in the netfront driver that caused excessive packet drops during
receive processing. Remove unnecessary restrictions on the mbuf chain length built during an LRO receive. This restriction was copied from the Linux netfront driver where the LRO implementation cannot handle more than 18 discontinuities. The FreeBSD implementation has no such restriction. MFC after: 1 week
This commit is contained in:
parent
c8045145b7
commit
8577146eac
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=218056
@ -1273,7 +1273,6 @@ xennet_get_responses(struct netfront_info *np,
|
||||
struct mbuf *m, *m0, *m_prev;
|
||||
grant_ref_t ref = xennet_get_rx_ref(np, *cons);
|
||||
RING_IDX ref_cons = *cons;
|
||||
int max = 5 /* MAX_TX_REQ_FRAGS + (rx->status <= RX_COPY_THRESHOLD) */;
|
||||
int frags = 1;
|
||||
int err = 0;
|
||||
u_long ret;
|
||||
@ -1416,20 +1415,10 @@ xennet_get_responses(struct netfront_info *np,
|
||||
frags++;
|
||||
}
|
||||
*list = m0;
|
||||
|
||||
if (unlikely(frags > max)) {
|
||||
if (net_ratelimit())
|
||||
WPRINTK("Too many frags\n");
|
||||
printf("%s: too many frags %d > max %d\n", __func__, frags,
|
||||
max);
|
||||
err = E2BIG;
|
||||
}
|
||||
|
||||
*cons += frags;
|
||||
|
||||
*pages_flipped_p = pages_flipped;
|
||||
|
||||
return err;
|
||||
return (err);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user