svn commit: r294869 - in head: sys/dev/cxgbe/tom sys/netinet usr.bin/systat

Sepherosa Ziehau sepherosa at gmail.com
Wed Jan 27 03:50:45 UTC 2016


This seems to break i386 LINT:

/usr/freebsd-svn/head/sys/modules/cxgb/tom/../../../dev/cxgb/ulp/tom/cxgb_cpl_io.c:1021:20:
error: use of undeclared identifier 'tcpstates'; did you mean
'tcpstat'?
            toep->tp_tid, tcpstates[tp->t_state], toep, inp);
                          ^~~~~~~~~
                          tcpstat
/usr/freebsd-svn/head/sys/sys/ktr.h:89:69: note: expanded from macro 'CTR5'
#define CTR5(m, format, p1, p2, p3, p4, p5)     CTR6(m, format, p1,
p2, p3, p4, p5, 0)
                                                                        ^
/usr/freebsd-svn/head/sys/sys/ktr.h:81:44: note: expanded from macro 'CTR6'
                    (u_long)(p1), (u_long)(p2), (u_long)(p3),           \
                                                         ^
/usr/freebsd-svn/head/sys/netinet/tcp_var.h:604:39: note: 'tcpstat'
declared here
VNET_PCPUSTAT_DECLARE(struct tcpstat, tcpstat); /* tcp statistics */
                                      ^
--- all_subdir_ctl ---
--- ctl_error.o ---
cc  -O2 -pipe  -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE
-nostdinc   -DHAVE_KERNEL_OPTION_HEADERS -include
/usr/obj/i386.i386/usr/freebsd-svn/head/sys/LINT/opt_global.h -I.
-I/usr/freebsd-svn/head/sys -fno-common
-I/usr/obj/i386.i386/usr/freebsd-svn/head/sys/LINT -fno-builtin
-mno-mmx -mno-sse -msoft-float -ffreestanding -fwrapv
-fstack-protector -Wall -Wredundant-decls -Wnested-externs
-Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline
-Wcast-qual  -Wundef -Wno-pointer-sign
-D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
-fdiagnostics-show-option  -Wno-unknown-pragmas
-Wno-error-tautological-compare -Wno-error-empty-body
-Wno-error-parentheses-equality -Wno-error-unused-function
-Wno-error-pointer-sign -Wno-error-shift-negative-value  -mno-aes
-mno-avx  -std=iso9899:1999 -c
/usr/freebsd-svn/head/sys/modules/ctl/../../cam/ctl/ctl_error.c -o
ctl_error.o
--- all_subdir_cxgb ---
/usr/freebsd-svn/head/sys/net/vnet.h:89:33: note: expanded from macro
'VNET_PCPUSTAT_DECLARE'
    VNET_DECLARE(counter_u64_t, name[sizeof(type) / sizeof(uint64_t)])
                                ^
/usr/freebsd-svn/head/sys/net/vnet.h:399:37: note: expanded from macro
'VNET_DECLARE'
#define VNET_DECLARE(t, n)      extern t n
                                         ^
/usr/freebsd-svn/head/sys/modules/cxgb/tom/../../../dev/cxgb/ulp/tom/cxgb_cpl_io.c:1230:16:
error: use of undeclared identifier 'tcpstates'; did you mean
'tcpstat'?
            tid, tp ? tcpstates[tp->t_state] : "no tp" , toep->tp_flags, inp);
                      ^~~~~~~~~
                      tcpstat
/usr/freebsd-svn/head/sys/sys/ktr.h:89:69: note: expanded from macro 'CTR5'
#define CTR5(m, format, p1, p2, p3, p4, p5)     CTR6(m, format, p1,
p2, p3, p4, p5, 0)
                                                                        ^
/usr/freebsd-svn/head/sys/sys/ktr.h:81:44: note: expanded from macro 'CTR6'
                    (u_long)(p1), (u_long)(p2), (u_long)(p3),           \
                                                         ^
/usr/freebsd-svn/head/sys/netinet/tcp_var.h:604:39: note: 'tcpstat'
declared here
VNET_PCPUSTAT_DECLARE(struct tcpstat, tcpstat); /* tcp statistics */
                                      ^
/usr/freebsd-svn/head/sys/net/vnet.h:89:33: note: expanded from macro
'VNET_PCPUSTAT_DECLARE'
    VNET_DECLARE(counter_u64_t, name[sizeof(type) / sizeof(uint64_t)])
                                ^
/usr/freebsd-svn/head/sys/net/vnet.h:399:37: note: expanded from macro
'VNET_DECLARE'
#define VNET_DECLARE(t, n)      extern t n
                                         ^
/usr/freebsd-svn/head/sys/modules/cxgb/tom/../../../dev/cxgb/ulp/tom/cxgb_cpl_io.c:1230:14:
error: pointer type mismatch ('counter_u64_t' (aka 'unsigned long long
*') and 'char *') [-Werror,-Wpointer-type-mismatch]
            tid, tp ? tcpstates[tp->t_state] : "no tp" , toep->tp_flags, inp);
                    ^ ~~~~~~~~~~~~~~~~~~~~~~   ~~~~~~~
/usr/freebsd-svn/head/sys/sys/ktr.h:89:69: note: expanded from macro 'CTR5'
#define CTR5(m, format, p1, p2, p3, p4, p5)     CTR6(m, format, p1,
p2, p3, p4, p5, 0)
                                                                        ^
/usr/freebsd-svn/head/sys/sys/ktr.h:81:44: note: expanded from macro 'CTR6'
                    (u_long)(p1), (u_long)(p2), (u_long)(p3),           \
                                                         ^
/usr/freebsd-svn/head/sys/modules/cxgb/tom/../../../dev/cxgb/ulp/tom/cxgb_cpl_io.c:1293:11:
error: use of undeclared identifier 'tcpstates'; did you mean
'tcpstat'?
            tp ? tcpstates[tp->t_state] : "no tp", toep->tp_flags);
                 ^~~~~~~~~
                 tcpstat
/usr/freebsd-svn/head/sys/sys/ktr.h:88:65: note: expanded from macro 'CTR4'
#define CTR4(m, format, p1, p2, p3, p4) CTR6(m, format, p1, p2, p3, p4, 0, 0)
                                                                ^
/usr/freebsd-svn/head/sys/sys/ktr.h:81:44: note: expanded from macro 'CTR6'
                    (u_long)(p1), (u_long)(p2), (u_long)(p3),           \
                                                         ^
/usr/freebsd-svn/head/sys/netinet/tcp_var.h:604:39: note: 'tcpstat'
declared here
VNET_PCPUSTAT_DECLARE(struct tcpstat, tcpstat); /* tcp statistics */
                                      ^
/usr/freebsd-svn/head/sys/net/vnet.h:89:33: note: expanded from macro
'VNET_PCPUSTAT_DECLARE'
    VNET_DECLARE(counter_u64_t, name[sizeof(type) / sizeof(uint64_t)])
                                ^
/usr/freebsd-svn/head/sys/net/vnet.h:399:37: note: expanded from macro
'VNET_DECLARE'
#define VNET_DECLARE(t, n)      extern t n
                                         ^
/usr/freebsd-svn/head/sys/modules/cxgb/tom/../../../dev/cxgb/ulp/tom/cxgb_cpl_io.c:1293:9:
error: pointer type mismatch ('counter_u64_t' (aka 'unsigned long long
*') and 'char *') [-Werror,-Wpointer-type-mismatch]
            tp ? tcpstates[tp->t_state] : "no tp", toep->tp_flags);
               ^ ~~~~~~~~~~~~~~~~~~~~~~   ~~~~~~~
/usr/freebsd-svn/head/sys/sys/ktr.h:88:65: note: expanded from macro 'CTR4'
#define CTR4(m, format, p1, p2, p3, p4) CTR6(m, format, p1, p2, p3, p4, 0, 0)
                                                                ^
/usr/freebsd-svn/head/sys/sys/ktr.h:81:44: note: expanded from macro 'CTR6'
                    (u_long)(p1), (u_long)(p2), (u_long)(p3),           \
                                                         ^
/usr/freebsd-svn/head/sys/modules/cxgb/tom/../../../dev/cxgb/ulp/tom/cxgb_cpl_io.c:1499:21:
error: use of undeclared identifier 'tcpstates'; did you mean
'tcpstat'?
            __func__, tid, tcpstates[tp->t_state], toep, toep->tp_flags,
                           ^~~~~~~~~
                           tcpstat
/usr/freebsd-svn/head/sys/sys/ktr.h:81:44: note: expanded from macro 'CTR6'
                    (u_long)(p1), (u_long)(p2), (u_long)(p3),           \
                                                         ^
/usr/freebsd-svn/head/sys/netinet/tcp_var.h:604:39: note: 'tcpstat'
declared here
VNET_PCPUSTAT_DECLARE(struct tcpstat, tcpstat); /* tcp statistics */
                                      ^
/usr/freebsd-svn/head/sys/net/vnet.h:89:33: note: expanded from macro
'VNET_PCPUSTAT_DECLARE'
    VNET_DECLARE(counter_u64_t, name[sizeof(type) / sizeof(uint64_t)])
                                ^
/usr/freebsd-svn/head/sys/net/vnet.h:399:37: note: expanded from macro
'VNET_DECLARE'
#define VNET_DECLARE(t, n)      extern t n
                                         ^
/usr/freebsd-svn/head/sys/modules/cxgb/tom/../../../dev/cxgb/ulp/tom/cxgb_cpl_io.c:1585:47:
error: use of undeclared identifier 'tcpstates'; did you mean
'tcpstat'?
        CTR4(KTR_CXGB, "%s tid %u, toep %p, inp %p", tcpstates[tp->t_state],
                                                     ^~~~~~~~~
                                                     tcpstat
/usr/freebsd-svn/head/sys/sys/ktr.h:88:57: note: expanded from macro 'CTR4'
#define CTR4(m, format, p1, p2, p3, p4) CTR6(m, format, p1, p2, p3, p4, 0, 0)
                                                        ^
/usr/freebsd-svn/head/sys/sys/ktr.h:81:16: note: expanded from macro 'CTR6'
                    (u_long)(p1), (u_long)(p2), (u_long)(p3),           \
                             ^
/usr/freebsd-svn/head/sys/netinet/tcp_var.h:604:39: note: 'tcpstat'
declared here
VNET_PCPUSTAT_DECLARE(struct tcpstat, tcpstat); /* tcp statistics */
                                      ^
/usr/freebsd-svn/head/sys/net/vnet.h:89:33: note: expanded from macro
'VNET_PCPUSTAT_DECLARE'
    VNET_DECLARE(counter_u64_t, name[sizeof(type) / sizeof(uint64_t)])
                                ^
/usr/freebsd-svn/head/sys/net/vnet.h:399:37: note: expanded from macro
'VNET_DECLARE'
#define VNET_DECLARE(t, n)      extern t n

On Wed, Jan 27, 2016 at 8:45 AM, Gleb Smirnoff <glebius at freebsd.org> wrote:
> Author: glebius
> Date: Wed Jan 27 00:45:46 2016
> New Revision: 294869
> URL: https://svnweb.freebsd.org/changeset/base/294869
>
> Log:
>   Augment struct tcpstat with tcps_states[], which is used for book-keeping
>   the amount of TCP connections by state.  Provides a cheap way to get
>   connection count without traversing the whole pcb list.
>
>   Sponsored by: Netflix
>
> Modified:
>   head/sys/dev/cxgbe/tom/t4_cpl_io.c
>   head/sys/netinet/tcp_offload.c
>   head/sys/netinet/tcp_subr.c
>   head/sys/netinet/tcp_syncache.c
>   head/sys/netinet/tcp_timewait.c
>   head/sys/netinet/tcp_usrreq.c
>   head/sys/netinet/tcp_var.h
>   head/usr.bin/systat/netstat.c
>
> Modified: head/sys/dev/cxgbe/tom/t4_cpl_io.c
> ==============================================================================
> --- head/sys/dev/cxgbe/tom/t4_cpl_io.c  Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/sys/dev/cxgbe/tom/t4_cpl_io.c  Wed Jan 27 00:45:46 2016        (r294869)
> @@ -45,10 +45,10 @@ __FBSDID("$FreeBSD$");
>  #include <netinet/in_pcb.h>
>  #include <netinet/ip.h>
>  #include <netinet/ip6.h>
> -#include <netinet/tcp_var.h>
>  #define TCPSTATES
>  #include <netinet/tcp_fsm.h>
>  #include <netinet/tcp_seq.h>
> +#include <netinet/tcp_var.h>
>  #include <netinet/toecore.h>
>
>  #include "common/common.h"
>
> Modified: head/sys/netinet/tcp_offload.c
> ==============================================================================
> --- head/sys/netinet/tcp_offload.c      Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/sys/netinet/tcp_offload.c      Wed Jan 27 00:45:46 2016        (r294869)
> @@ -42,10 +42,10 @@ __FBSDID("$FreeBSD$");
>  #include <netinet/in.h>
>  #include <netinet/in_pcb.h>
>  #include <netinet/tcp.h>
> -#include <netinet/tcp_var.h>
>  #include <netinet/tcp_offload.h>
>  #define        TCPOUTFLAGS
>  #include <netinet/tcp_fsm.h>
> +#include <netinet/tcp_var.h>
>  #include <netinet/toecore.h>
>
>  int registered_toedevs;
>
> Modified: head/sys/netinet/tcp_subr.c
> ==============================================================================
> --- head/sys/netinet/tcp_subr.c Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/sys/netinet/tcp_subr.c Wed Jan 27 00:45:46 2016        (r294869)
> @@ -1468,6 +1468,7 @@ tcp_close(struct tcpcb *tp)
>  #endif
>         in_pcbdrop(inp);
>         TCPSTAT_INC(tcps_closed);
> +       TCPSTAT_DEC(tcps_states[tp->t_state]);
>         KASSERT(inp->inp_socket != NULL, ("tcp_close: inp_socket NULL"));
>         so = inp->inp_socket;
>         soisdisconnected(so);
> @@ -2910,6 +2911,8 @@ tcp_state_change(struct tcpcb *tp, int n
>         int pstate = tp->t_state;
>  #endif
>
> +       TCPSTAT_DEC(tcps_states[tp->t_state]);
> +       TCPSTAT_INC(tcps_states[newstate]);
>         tp->t_state = newstate;
>         TCP_PROBE6(state__change, NULL, tp, NULL, tp, NULL, pstate);
>  }
>
> Modified: head/sys/netinet/tcp_syncache.c
> ==============================================================================
> --- head/sys/netinet/tcp_syncache.c     Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/sys/netinet/tcp_syncache.c     Wed Jan 27 00:45:46 2016        (r294869)
> @@ -351,6 +351,7 @@ syncache_insert(struct syncache *sc, str
>
>         SCH_UNLOCK(sch);
>
> +       TCPSTAT_INC(tcps_states[TCPS_SYN_RECEIVED]);
>         TCPSTAT_INC(tcps_sc_added);
>  }
>
> @@ -364,6 +365,7 @@ syncache_drop(struct syncache *sc, struc
>
>         SCH_LOCK_ASSERT(sch);
>
> +       TCPSTAT_DEC(tcps_states[TCPS_SYN_RECEIVED]);
>         TAILQ_REMOVE(&sch->sch_bucket, sc, sc_hash);
>         sch->sch_length--;
>
> @@ -992,7 +994,16 @@ syncache_expand(struct in_conninfo *inc,
>                         goto failed;
>                 }
>         } else {
> -               /* Pull out the entry to unlock the bucket row. */
> +               /*
> +                * Pull out the entry to unlock the bucket row.
> +                *
> +                * NOTE: We must decrease TCPS_SYN_RECEIVED count here, not
> +                * tcp_state_change().  The tcpcb is not existent at this
> +                * moment.  A new one will be allocated via syncache_socket->
> +                * sonewconn->tcp_usr_attach in TCPS_CLOSED state, then
> +                * syncache_socket() will change it to TCPS_SYN_RECEIVED.
> +                */
> +               TCPSTAT_DEC(tcps_states[TCPS_SYN_RECEIVED]);
>                 TAILQ_REMOVE(&sch->sch_bucket, sc, sc_hash);
>                 sch->sch_length--;
>  #ifdef TCP_OFFLOAD
>
> Modified: head/sys/netinet/tcp_timewait.c
> ==============================================================================
> --- head/sys/netinet/tcp_timewait.c     Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/sys/netinet/tcp_timewait.c     Wed Jan 27 00:45:46 2016        (r294869)
> @@ -660,6 +660,7 @@ tcp_tw_2msl_stop(struct tcptw *tw, int r
>
>         if (!reuse)
>                 uma_zfree(V_tcptw_zone, tw);
> +       TCPSTAT_DEC(tcps_states[TCPS_TIME_WAIT]);
>  }
>
>  struct tcptw *
>
> Modified: head/sys/netinet/tcp_usrreq.c
> ==============================================================================
> --- head/sys/netinet/tcp_usrreq.c       Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/sys/netinet/tcp_usrreq.c       Wed Jan 27 00:45:46 2016        (r294869)
> @@ -1883,6 +1883,7 @@ tcp_attach(struct socket *so)
>         tp->t_state = TCPS_CLOSED;
>         INP_WUNLOCK(inp);
>         INP_INFO_RUNLOCK(&V_tcbinfo);
> +       TCPSTAT_INC(tcps_states[TCPS_CLOSED]);
>         return (0);
>  }
>
>
> Modified: head/sys/netinet/tcp_var.h
> ==============================================================================
> --- head/sys/netinet/tcp_var.h  Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/sys/netinet/tcp_var.h  Wed Jan 27 00:45:46 2016        (r294869)
> @@ -34,6 +34,7 @@
>  #define _NETINET_TCP_VAR_H_
>
>  #include <netinet/tcp.h>
> +#include <netinet/tcp_fsm.h>
>
>  #ifdef _KERNEL
>  #include <net/vnet.h>
> @@ -587,6 +588,9 @@ struct      tcpstat {
>         uint64_t tcps_sig_err_sigopt;   /* No signature expected by socket */
>         uint64_t tcps_sig_err_nosigopt; /* No signature provided by segment */
>
> +       /* Running connection count. */
> +       uint64_t tcps_states[TCP_NSTATES];
> +
>         uint64_t _pad[12];              /* 6 UTO, 6 TBD */
>  };
>
>
> Modified: head/usr.bin/systat/netstat.c
> ==============================================================================
> --- head/usr.bin/systat/netstat.c       Wed Jan 27 00:24:24 2016        (r294868)
> +++ head/usr.bin/systat/netstat.c       Wed Jan 27 00:45:46 2016        (r294869)
> @@ -59,10 +59,10 @@ static const char sccsid[] = "@(#)netsta
>  #include <netinet/tcp.h>
>  #include <netinet/tcpip.h>
>  #include <netinet/tcp_seq.h>
> -#include <netinet/tcp_var.h>
>  #define TCPSTATES
>  #include <netinet/tcp_fsm.h>
>  #include <netinet/tcp_timer.h>
> +#include <netinet/tcp_var.h>
>  #include <netinet/tcp_debug.h>
>  #include <netinet/udp.h>
>  #include <netinet/udp_var.h>
>



-- 
Tomorrow Will Never Die


More information about the svn-src-head mailing list