OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc2/] [newlib/] [libc/] [sys/] [linux/] [include/] [netns/] [spp_var.h] - Blame information for rev 207

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 207 jeremybenn
/*
2
 * Copyright (c) 1984, 1985, 1986, 1987, 1993
3
 *      The Regents of the University of California.  All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions
7
 * are met:
8
 * 1. Redistributions of source code must retain the above copyright
9
 *    notice, this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright
11
 *    notice, this list of conditions and the following disclaimer in the
12
 *    documentation and/or other materials provided with the distribution.
13
 * 3. All advertising materials mentioning features or use of this software
14
 *    must display the following acknowledgement:
15
 *      This product includes software developed by the University of
16
 *      California, Berkeley and its contributors.
17
 * 4. Neither the name of the University nor the names of its contributors
18
 *    may be used to endorse or promote products derived from this software
19
 *    without specific prior written permission.
20
 *
21
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31
 * SUCH DAMAGE.
32
 *
33
 *      @(#)spp_var.h   8.1 (Berkeley) 6/10/93
34
 * $FreeBSD: src/sys/netns/spp_var.h,v 1.11 1999/12/29 04:46:21 peter Exp $
35
 */
36
 
37
#ifndef _NETNS_SPP_VAR_H_
38
#define _NETNS_SPP_VAR_H_
39
 
40
/*
41
 * Sp control block, one per connection
42
 */
43
struct sppcb {
44
        struct  spidp_q s_q;            /* queue for out-of-order receipt */
45
        struct  nspcb   *s_nspcb;       /* backpointer to internet pcb */
46
        u_char  s_state;
47
        u_char  s_flags;
48
#define SF_ACKNOW       0x01            /* Ack peer immediately */
49
#define SF_DELACK       0x02            /* Ack, but try to delay it */
50
#define SF_HI   0x04                    /* Show headers on input */
51
#define SF_HO   0x08                    /* Show headers on output */
52
#define SF_PI   0x10                    /* Packet (datagram) interface */
53
#define SF_WIN  0x20                    /* Window info changed */
54
#define SF_RXT  0x40                    /* Rxt info changed */
55
#define SF_RVD  0x80                    /* Calling from read usrreq routine */
56
        u_short s_mtu;                  /* Max packet size for this stream */
57
/* use sequence fields in headers to store sequence numbers for this
58
   connection */
59
        struct  idp     *s_idp;
60
        struct  sphdr   s_shdr;         /* prototype header to transmit */
61
#define s_cc s_shdr.sp_cc               /* connection control (for EM bit) */
62
#define s_dt s_shdr.sp_dt               /* datastream type */
63
#define s_sid s_shdr.sp_sid             /* source connection identifier */
64
#define s_did s_shdr.sp_did             /* destination connection identifier */
65
#define s_seq s_shdr.sp_seq             /* sequence number */
66
#define s_ack s_shdr.sp_ack             /* acknowledge number */
67
#define s_alo s_shdr.sp_alo             /* allocation number */
68
#define s_dport s_idp->idp_dna.x_port   /* where we are sending */
69
        struct sphdr s_rhdr;            /* last received header (in effect!)*/
70
        u_short s_rack;                 /* their acknowledge number */
71
        u_short s_ralo;                 /* their allocation number */
72
        u_short s_smax;                 /* highest packet # we have sent */
73
        u_short s_snxt;                 /* which packet to send next */
74
 
75
/* congestion control */
76
#define CUNIT   1024                    /* scaling for ... */
77
        int     s_cwnd;                 /* Congestion-controlled window */
78
                                        /* in packets * CUNIT */
79
        short   s_swnd;                 /* == tcp snd_wnd, in packets */
80
        short   s_smxw;                 /* == tcp max_sndwnd */
81
                                        /* difference of two spp_seq's can be
82
                                           no bigger than a short */
83
        u_short s_swl1;                 /* == tcp snd_wl1 */
84
        u_short s_swl2;                 /* == tcp snd_wl2 */
85
        int     s_cwmx;                 /* max allowable cwnd */
86
        int     s_ssthresh;             /* s_cwnd size threshhold for
87
                                         * slow start exponential-to-
88
                                         * linear switch */
89
/* transmit timing stuff
90
 * srtt and rttvar are stored as fixed point, for convenience in smoothing.
91
 * srtt has 3 bits to the right of the binary point, rttvar has 2.
92
 */
93
        short   s_idle;                 /* time idle */
94
        short   s_timer[SPPT_NTIMERS];  /* timers */
95
        short   s_rxtshift;             /* log(2) of rexmt exp. backoff */
96
        short   s_rxtcur;               /* current retransmit value */
97
        u_short s_rtseq;                /* packet being timed */
98
        short   s_rtt;                  /* timer for round trips */
99
        short   s_srtt;                 /* averaged timer */
100
        short   s_rttvar;               /* variance in round trip time */
101
        char    s_force;                /* which timer expired */
102
        char    s_dupacks;              /* counter to intuit xmt loss */
103
 
104
/* out of band data */
105
        char    s_oobflags;
106
#define SF_SOOB 0x08                    /* sending out of band data */
107
#define SF_IOOB 0x10                    /* receiving out of band data */
108
        char    s_iobc;                 /* input characters */
109
/* debug stuff */
110
        u_short s_want;                 /* Last candidate for sending */
111
        char    s_outx;                 /* exit taken from spp_output */
112
        char    s_inx;                  /* exit taken from spp_input */
113
        u_short s_flags2;               /* more flags for testing */
114
#define SF_NEWCALL      0x100           /* for new_recvmsg */
115
#define SO_NEWCALL      10              /* for new_recvmsg */
116
};
117
 
118
#define nstosppcb(np)   ((struct sppcb *)(np)->nsp_pcb)
119
#define sotosppcb(so)   (nstosppcb(sotonspcb(so)))
120
 
121
struct  sppstat {
122
        long    spps_connattempt;       /* connections initiated */
123
        long    spps_accepts;           /* connections accepted */
124
        long    spps_connects;          /* connections established */
125
        long    spps_drops;             /* connections dropped */
126
        long    spps_conndrops;         /* embryonic connections dropped */
127
        long    spps_closed;            /* conn. closed (includes drops) */
128
        long    spps_segstimed;         /* segs where we tried to get rtt */
129
        long    spps_rttupdated;        /* times we succeeded */
130
        long    spps_delack;            /* delayed acks sent */
131
        long    spps_timeoutdrop;       /* conn. dropped in rxmt timeout */
132
        long    spps_rexmttimeo;        /* retransmit timeouts */
133
        long    spps_persisttimeo;      /* persist timeouts */
134
        long    spps_keeptimeo;         /* keepalive timeouts */
135
        long    spps_keepprobe;         /* keepalive probes sent */
136
        long    spps_keepdrops;         /* connections dropped in keepalive */
137
 
138
        long    spps_sndtotal;          /* total packets sent */
139
        long    spps_sndpack;           /* data packets sent */
140
        long    spps_sndbyte;           /* data bytes sent */
141
        long    spps_sndrexmitpack;     /* data packets retransmitted */
142
        long    spps_sndrexmitbyte;     /* data bytes retransmitted */
143
        long    spps_sndacks;           /* ack-only packets sent */
144
        long    spps_sndprobe;          /* window probes sent */
145
        long    spps_sndurg;            /* packets sent with URG only */
146
        long    spps_sndwinup;          /* window update-only packets sent */
147
        long    spps_sndctrl;           /* control (SYN|FIN|RST) packets sent */
148
        long    spps_sndvoid;           /* couldn't find requested packet*/
149
 
150
        long    spps_rcvtotal;          /* total packets received */
151
        long    spps_rcvpack;           /* packets received in sequence */
152
        long    spps_rcvbyte;           /* bytes received in sequence */
153
        long    spps_rcvbadsum;         /* packets received with ccksum errs */
154
        long    spps_rcvbadoff;         /* packets received with bad offset */
155
        long    spps_rcvshort;          /* packets received too short */
156
        long    spps_rcvduppack;        /* duplicate-only packets received */
157
        long    spps_rcvdupbyte;        /* duplicate-only bytes received */
158
        long    spps_rcvpartduppack;    /* packets with some duplicate data */
159
        long    spps_rcvpartdupbyte;    /* dup. bytes in part-dup. packets */
160
        long    spps_rcvoopack;         /* out-of-order packets received */
161
        long    spps_rcvoobyte;         /* out-of-order bytes received */
162
        long    spps_rcvpackafterwin;   /* packets with data after window */
163
        long    spps_rcvbyteafterwin;   /* bytes rcvd after window */
164
        long    spps_rcvafterclose;     /* packets rcvd after "close" */
165
        long    spps_rcvwinprobe;       /* rcvd window probe packets */
166
        long    spps_rcvdupack;         /* rcvd duplicate acks */
167
        long    spps_rcvacktoomuch;     /* rcvd acks for unsent data */
168
        long    spps_rcvackpack;        /* rcvd ack packets */
169
        long    spps_rcvackbyte;        /* bytes acked by rcvd acks */
170
        long    spps_rcvwinupd;         /* rcvd window update packets */
171
};
172
struct  spp_istat {
173
        short   hdrops;
174
        short   badsum;
175
        short   badlen;
176
        short   slotim;
177
        short   fastim;
178
        short   nonucn;
179
        short   noconn;
180
        short   notme;
181
        short   wrncon;
182
        short   bdreas;
183
        short   gonawy;
184
        short   notyet;
185
        short   lstdup;
186
        struct sppstat newstats;
187
};
188
 
189
#ifdef _KERNEL
190
struct spp_istat spp_istat;
191
 
192
/* Following was struct sppstat sppstat; */
193
#ifndef sppstat
194
#define sppstat spp_istat.newstats
195
#endif
196
 
197
u_short spp_iss;
198
extern struct sppcb *spp_close(), *spp_disconnect(),
199
        *spp_usrclosed(), *spp_timers(), *spp_drop();
200
#endif
201
 
202
#define SPP_ISSINCR     128
203
/*
204
 * SPP sequence numbers are 16 bit integers operated
205
 * on with modular arithmetic.  These macros can be
206
 * used to compare such integers.
207
 */
208
#ifdef sun
209
short xnsCbug;
210
#define SSEQ_LT(a,b)    ((xnsCbug = (short)((a)-(b))) < 0)
211
#define SSEQ_LEQ(a,b)   ((xnsCbug = (short)((a)-(b))) <= 0)
212
#define SSEQ_GT(a,b)    ((xnsCbug = (short)((a)-(b))) > 0)
213
#define SSEQ_GEQ(a,b)   ((xnsCbug = (short)((a)-(b))) >= 0)
214
#else
215
#define SSEQ_LT(a,b)    (((short)((a)-(b))) < 0)
216
#define SSEQ_LEQ(a,b)   (((short)((a)-(b))) <= 0)
217
#define SSEQ_GT(a,b)    (((short)((a)-(b))) > 0)
218
#define SSEQ_GEQ(a,b)   (((short)((a)-(b))) >= 0)
219
#endif
220
 
221
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.