Skip to content

Commit

Permalink
al_eth: improve TCP LRO
Browse files Browse the repository at this point in the history
Use the appropriate function to flush correctly all entries. The old
code does not remove the element from the hash table, only from the
active queue.

Reviewed by:		Peter Lei, rscheff
MFC after:		1 week
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D46434
  • Loading branch information
tuexen committed Sep 5, 2024
1 parent 5203dcc commit 0b45d36
Showing 1 changed file with 1 addition and 5 deletions.
6 changes: 1 addition & 5 deletions sys/dev/al_eth/al_eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -1580,7 +1580,6 @@ al_eth_rx_recv_work(void *arg, int pending)
{
struct al_eth_ring *rx_ring = arg;
struct mbuf *mbuf;
struct lro_entry *queued;
unsigned int qid = rx_ring->ring_id;
struct al_eth_pkt *hal_pkt = &rx_ring->hal_pkt;
uint16_t next_to_clean = rx_ring->next_to_clean;
Expand Down Expand Up @@ -1671,10 +1670,7 @@ al_eth_rx_recv_work(void *arg, int pending)
"%s: not filling rx queue %d\n", __func__, qid);
}

while (((queued = LIST_FIRST(&rx_ring->lro.lro_active)) != NULL)) {
LIST_REMOVE(queued, next);
tcp_lro_flush(&rx_ring->lro, queued);
}
tcp_lro_flush_all(&rx_ring->lro);

if (napi != 0) {
rx_ring->enqueue_is_running = 0;
Expand Down

0 comments on commit 0b45d36

Please sign in to comment.