Re: svn commit: r307083 - head/sys/netinet

2016-10-11 Thread Jonathan Looney
On Tue, Oct 11, 2016 at 10:30 PM, Jonathan T. Looney 
wrote:

> Author: jtl
> Date: Wed Oct 12 02:30:33 2016
> New Revision: 307083
> URL: https://svnweb.freebsd.org/changeset/base/307083
>
> Log:
>   Currently, when tcp_input() receives a packet on a session that matches a
>   TCPCB, it checks (so->so_options & SO_ACCEPTCONN) to determine whether or
>   not the socket is a listening socket. However, this causes the code to
>   access a different cacheline. If we first check if the socket is in the
>   LISTEN state, we can avoid accessing so->so_options when processing
> packets
>   received for ESTABLISHED sessions.
>
>   If INVARIANTS is defined, the code still needs to access both variables
> to
>   check that so->so_options is consistent with the state.
>
>   Reviewed by:  gallatin
>   MFC after:1 week
>   Sponsored by: Netflix
>

This should have also noted:
Differential Revision: https://reviews.freebsd.org/D8221

Sorry for the omission!

Jonathan
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r307083 - head/sys/netinet

2016-10-11 Thread Jonathan T. Looney
Author: jtl
Date: Wed Oct 12 02:30:33 2016
New Revision: 307083
URL: https://svnweb.freebsd.org/changeset/base/307083

Log:
  Currently, when tcp_input() receives a packet on a session that matches a
  TCPCB, it checks (so->so_options & SO_ACCEPTCONN) to determine whether or
  not the socket is a listening socket. However, this causes the code to
  access a different cacheline. If we first check if the socket is in the
  LISTEN state, we can avoid accessing so->so_options when processing packets
  received for ESTABLISHED sessions.
  
  If INVARIANTS is defined, the code still needs to access both variables to
  check that so->so_options is consistent with the state.
  
  Reviewed by:  gallatin
  MFC after:1 week
  Sponsored by: Netflix

Modified:
  head/sys/netinet/tcp_input.c

Modified: head/sys/netinet/tcp_input.c
==
--- head/sys/netinet/tcp_input.cWed Oct 12 02:16:42 2016
(r307082)
+++ head/sys/netinet/tcp_input.cWed Oct 12 02:30:33 2016
(r307083)
@@ -1071,11 +1071,11 @@ relocked:
 * state) we look into the SYN cache if this is a new connection
 * attempt or the completion of a previous one.
 */
-   if (so->so_options & SO_ACCEPTCONN) {
+   KASSERT(tp->t_state == TCPS_LISTEN || !(so->so_options & SO_ACCEPTCONN),
+   ("%s: so accepting but tp %p not listening", __func__, tp));
+   if (tp->t_state == TCPS_LISTEN && (so->so_options & SO_ACCEPTCONN)) {
struct in_conninfo inc;
 
-   KASSERT(tp->t_state == TCPS_LISTEN, ("%s: so accepting but "
-   "tp not listening", __func__));
bzero(, sizeof(inc));
 #ifdef INET6
if (isipv6) {
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"