This revision was automatically updated to reflect the committed changes.
Closed by commit rS298974: tcp/lro: Refactor the active list operation. 
(authored by sephe).

CHANGED PRIOR TO COMMIT
  https://reviews.freebsd.org/D6137?vs=15725&id=15841#toc

REPOSITORY
  rS FreeBSD src repository

CHANGES SINCE LAST UPDATE
  https://reviews.freebsd.org/D6137?vs=15725&id=15841

REVISION DETAIL
  https://reviews.freebsd.org/D6137

AFFECTED FILES
  head/sys/netinet/tcp_lro.c

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: sepherosa_gmail.com, network, adrian, delphij, glebius, hselasky, np, 
decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, transport, 
rrs, gallatin
Cc: freebsd-net-list
diff --git a/head/sys/netinet/tcp_lro.c b/head/sys/netinet/tcp_lro.c
--- a/head/sys/netinet/tcp_lro.c
+++ b/head/sys/netinet/tcp_lro.c
@@ -69,6 +69,20 @@
 
 static void	tcp_lro_rx_done(struct lro_ctrl *lc);
 
+static __inline void
+tcp_lro_active_insert(struct lro_ctrl *lc, struct lro_entry *le)
+{
+
+	LIST_INSERT_HEAD(&lc->lro_active, le, next);
+}
+
+static __inline void
+tcp_lro_active_remove(struct lro_entry *le)
+{
+
+	LIST_REMOVE(le, next);
+}
+
 int
 tcp_lro_init(struct lro_ctrl *lc)
 {
@@ -129,7 +143,7 @@
 
 	/* free active mbufs, if any */
 	while ((le = LIST_FIRST(&lc->lro_active)) != NULL) {
-		LIST_REMOVE(le, next);
+		tcp_lro_active_remove(le);
 		m_freem(le->m_head);
 	}
 
@@ -234,7 +248,7 @@
 	struct lro_entry *le;
 
 	while ((le = LIST_FIRST(&lc->lro_active)) != NULL) {
-		LIST_REMOVE(le, next);
+		tcp_lro_active_remove(le);
 		tcp_lro_flush(lc, le);
 	}
 }
@@ -252,7 +266,7 @@
 	timevalsub(&tv, timeout);
 	LIST_FOREACH_SAFE(le, &lc->lro_active, next, le_tmp) {
 		if (timevalcmp(&tv, &le->mtime, >=)) {
-			LIST_REMOVE(le, next);
+			tcp_lro_active_remove(le);
 			tcp_lro_flush(lc, le);
 		}
 	}
@@ -620,16 +634,16 @@
 
 		/* Flush now if appending will result in overflow. */
 		if (le->p_len > (lc->lro_length_lim - tcp_data_len)) {
-			LIST_REMOVE(le, next);
+			tcp_lro_active_remove(le);
 			tcp_lro_flush(lc, le);
 			break;
 		}
 
 		/* Try to append the new segment. */
 		if (__predict_false(seq != le->next_seq ||
 		    (tcp_data_len == 0 && le->ack_seq == th->th_ack))) {
 			/* Out of order packet or duplicate ACK. */
-			LIST_REMOVE(le, next);
+			tcp_lro_active_remove(le);
 			tcp_lro_flush(lc, le);
 			return (TCP_LRO_CANNOT);
 		}
@@ -662,7 +676,7 @@
 			 * be further delayed.
 			 */
 			if (le->append_cnt >= lc->lro_ackcnt_lim) {
-				LIST_REMOVE(le, next);
+				tcp_lro_active_remove(le);
 				tcp_lro_flush(lc, le);
 			}
 			return (0);
@@ -686,7 +700,7 @@
 		 * overflow, pro-actively flush now.
 		 */
 		if (le->p_len > (lc->lro_length_lim - lc->ifp->if_mtu)) {
-			LIST_REMOVE(le, next);
+			tcp_lro_active_remove(le);
 			tcp_lro_flush(lc, le);
 		} else
 			getmicrotime(&le->mtime);
@@ -701,7 +715,7 @@
 	/* Start a new segment chain. */
 	le = LIST_FIRST(&lc->lro_free);
 	LIST_REMOVE(le, next);
-	LIST_INSERT_HEAD(&lc->lro_active, le, next);
+	tcp_lro_active_insert(lc, le);
 	getmicrotime(&le->mtime);
 
 	/* Start filling in details. */

_______________________________________________
freebsd-net@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to