svn commit: r294869 - in head: sys/dev/cxgbe/tom sys/netinet usr.bin/systat
Sepherosa Ziehau
sepherosa at gmail.com
Wed Jan 27 03:51:04 UTC 2016
BTW, amd64 LINT builds fine.
On Wed, Jan 27, 2016 at 11:50 AM, Sepherosa Ziehau <sepherosa at gmail.com> wrote:
> 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
--
Tomorrow Will Never Die
More information about the svn-src-head
mailing list