summaryrefslogtreecommitdiffstats
path: root/sys/i4b/layer2
diff options
context:
space:
mode:
authorhm <hm@FreeBSD.org>1999-08-06 14:05:10 +0000
committerhm <hm@FreeBSD.org>1999-08-06 14:05:10 +0000
commitc318ffb377724b7eab997d3ddd7f16e229f18e4d (patch)
tree4dd20754e94db3bc400654765c985e981925a884 /sys/i4b/layer2
parent29c67703e3751c283a1bdfe7764effe015c13b83 (diff)
downloadFreeBSD-src-c318ffb377724b7eab997d3ddd7f16e229f18e4d.zip
FreeBSD-src-c318ffb377724b7eab997d3ddd7f16e229f18e4d.tar.gz
updating isdn4bsd to beta version 0.83
Diffstat (limited to 'sys/i4b/layer2')
-rw-r--r--sys/i4b/layer2/i4b_iframe.c8
-rw-r--r--sys/i4b/layer2/i4b_l2.c11
-rw-r--r--sys/i4b/layer2/i4b_l2.h9
-rw-r--r--sys/i4b/layer2/i4b_sframe.c18
-rw-r--r--sys/i4b/layer2/i4b_tei.c5
-rw-r--r--sys/i4b/layer2/i4b_uframe.c46
6 files changed, 58 insertions, 39 deletions
diff --git a/sys/i4b/layer2/i4b_iframe.c b/sys/i4b/layer2/i4b_iframe.c
index 3a37d04..3b3686c 100644
--- a/sys/i4b/layer2/i4b_iframe.c
+++ b/sys/i4b/layer2/i4b_iframe.c
@@ -27,9 +27,9 @@
* i4b_iframe.c - i frame handling routines
* ------------------------------------------
*
- * $Id: i4b_iframe.c,v 1.19 1999/04/21 07:36:32 hm Exp $
+ * $Id: i4b_iframe.c,v 1.20 1999/05/28 15:03:32 hm Exp $
*
- * last edit-date: [Wed Apr 21 09:24:34 1999]
+ * last edit-date: [Fri May 28 15:52:41 1999]
*
*---------------------------------------------------------------------------*/
@@ -100,6 +100,8 @@ i4b_rxd_i_frame(int unit, struct mbuf *m)
}
CRIT_BEG;
+
+ l2sc->stat.rx_i++; /* update frame count */
nr = GETINR(*(ptr + OFF_INR));
ns = GETINS(*(ptr + OFF_INS));
@@ -261,6 +263,8 @@ i4b_i_frame_queued_up(l2_softc_t *l2sc)
*(ptr + OFF_INS) = (l2sc->vs << 1) & 0xfe; /* bit 0 = 0 */
*(ptr + OFF_INR) = (l2sc->vr << 1) & 0xfe; /* P bit = 0 */
+ l2sc->stat.tx_i++; /* update frame counter */
+
PH_Data_Req(l2sc->unit, m, MBUF_DONTFREE); /* free'd when ack'd ! */
l2sc->iframe_sent = 1; /* in case we ack an I frame with another I frame */
diff --git a/sys/i4b/layer2/i4b_l2.c b/sys/i4b/layer2/i4b_l2.c
index 80072bb..f282dd4 100644
--- a/sys/i4b/layer2/i4b_l2.c
+++ b/sys/i4b/layer2/i4b_l2.c
@@ -27,9 +27,9 @@
* i4b_l2.c - ISDN layer 2 (Q.921)
* -------------------------------
*
- * $Id: i4b_l2.c,v 1.26 1999/04/15 09:53:55 hm Exp $
+ * $Id: i4b_l2.c,v 1.27 1999/05/28 15:03:32 hm Exp $
*
- * last edit-date: [Thu Apr 15 11:32:11 1999]
+ * last edit-date: [Fri May 28 16:15:39 1999]
*
*---------------------------------------------------------------------------*/
@@ -281,6 +281,7 @@ i4b_mph_status_ind(int unit, int status, int parm)
l2sc->unit = unit;
l2sc->i_queue.ifq_maxlen = IQUEUE_MAXLEN;
l2sc->ua_frame = NULL;
+ bzero(&l2sc->stat, sizeof(lapdstat_t));
i4b_l2_unit_init(unit);
#if defined(__FreeBSD_version) && __FreeBSD_version >= 300001
@@ -351,6 +352,7 @@ int i4b_mdl_command_req(int unit, int command, int parm)
int
i4b_ph_data_ind(int unit, struct mbuf *m)
{
+ l2_softc_t *l2sc = &l2_softc[unit];
#ifdef NOTDEF
DBGL1(L1_PRIM, "PH-DATA-IND", ("unit %d\n", unit));
#endif
@@ -360,6 +362,7 @@ i4b_ph_data_ind(int unit, struct mbuf *m)
{
if(m->m_len < 4) /* 6 oct - 2 chksum oct */
{
+ l2sc->stat.err_rx_len++;
DBGL2(L2_ERROR, "i4b_ph_data_ind", ("ERROR, I-frame < 6 octetts!\n"));
i4b_Dfreembuf(m);
return(0);
@@ -370,6 +373,7 @@ i4b_ph_data_ind(int unit, struct mbuf *m)
{
if(m->m_len < 4) /* 6 oct - 2 chksum oct */
{
+ l2sc->stat.err_rx_len++;
DBGL2(L2_ERROR, "i4b_ph_data_ind", ("ERROR, S-frame < 6 octetts!\n"));
i4b_Dfreembuf(m);
return(0);
@@ -380,6 +384,7 @@ i4b_ph_data_ind(int unit, struct mbuf *m)
{
if(m->m_len < 3) /* 5 oct - 2 chksum oct */
{
+ l2sc->stat.err_rx_len++;
DBGL2(L2_ERROR, "i4b_ph_data_ind", ("ERROR, U-frame < 5 octetts!\n"));
i4b_Dfreembuf(m);
return(0);
@@ -388,6 +393,7 @@ i4b_ph_data_ind(int unit, struct mbuf *m)
}
else
{
+ l2sc->stat.err_rx_badf++;
DBGL2(L2_ERROR, "i4b_ph_data_ind", ("ERROR, bad frame rx'd - "));
i4b_print_frame(m->m_len, m->m_data);
i4b_Dfreembuf(m);
@@ -396,4 +402,3 @@ i4b_ph_data_ind(int unit, struct mbuf *m)
}
#endif /* NI4BQ921 > 0 */
-
diff --git a/sys/i4b/layer2/i4b_l2.h b/sys/i4b/layer2/i4b_l2.h
index c829a07..af0809f 100644
--- a/sys/i4b/layer2/i4b_l2.h
+++ b/sys/i4b/layer2/i4b_l2.h
@@ -27,9 +27,9 @@
* i4b_l2.h - ISDN layer 2 (Q.921) definitions
* ---------------------------------------------
*
- * $Id: i4b_l2.h,v 1.17 1999/04/22 11:51:45 hm Exp $
+ * $Id: i4b_l2.h,v 1.18 1999/05/28 15:03:32 hm Exp $
*
- * last edit-date: [Thu Apr 22 13:50:55 1999]
+ * last edit-date: [Fri May 28 15:51:17 1999]
*
*---------------------------------------------------------------------------*/
@@ -103,6 +103,11 @@ typedef struct {
int (*postfsmfunc)(int);/* function to be called at fsm exit */
int postfsmarg; /* argument for above function */
+
+ /* statistics */
+
+ lapdstat_t stat; /* lapd protocol statistics */
+
} l2_softc_t;
extern l2_softc_t l2_softc[];
diff --git a/sys/i4b/layer2/i4b_sframe.c b/sys/i4b/layer2/i4b_sframe.c
index 220be26..59afdf6 100644
--- a/sys/i4b/layer2/i4b_sframe.c
+++ b/sys/i4b/layer2/i4b_sframe.c
@@ -27,9 +27,9 @@
* i4b_sframe.c - s frame handling routines
* ----------------------------------------
*
- * $Id: i4b_sframe.c,v 1.9 1999/02/14 09:45:00 hm Exp $
+ * $Id: i4b_sframe.c,v 1.10 1999/05/28 15:03:32 hm Exp $
*
- * last edit-date: [Sun Feb 14 10:32:06 1999]
+ * last edit-date: [Fri May 28 16:14:04 1999]
*
*---------------------------------------------------------------------------*/
@@ -93,21 +93,25 @@ i4b_rxd_s_frame(int unit, struct mbuf *m)
switch(*(ptr + OFF_SRCR))
{
case RR:
+ l2sc->stat.rx_rr++; /* update statistics */
DBGL2(L2_S_MSG, "i4b_rxd_s_frame", ("rx'd RR, N(R) = %d\n", l2sc->rxd_NR));
i4b_next_l2state(l2sc, EV_RXRR);
break;
case RNR:
+ l2sc->stat.rx_rnr++; /* update statistics */
DBGL2(L2_S_MSG, "i4b_rxd_s_frame", ("rx'd RNR, N(R) = %d\n", l2sc->rxd_NR));
i4b_next_l2state(l2sc, EV_RXRNR);
break;
case REJ:
+ l2sc->stat.rx_rej++; /* update statistics */
DBGL2(L2_S_MSG, "i4b_rxd_s_frame", ("rx'd REJ, N(R) = %d\n", l2sc->rxd_NR));
i4b_next_l2state(l2sc, EV_RXREJ);
break;
default:
+ l2sc->stat.err_rx_bads++; /* update statistics */
DBGL2(L2_S_ERR, "i4b_rxd_s_frame", ("ERROR, unknown code, frame = \n"));
i4b_print_frame(m->m_len, m->m_data);
break;
@@ -128,6 +132,8 @@ i4b_tx_rr_command(l2_softc_t *l2sc, pbit_t pbit)
m = i4b_build_s_frame(l2sc, CR_CMD_TO_NT, pbit, RR);
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
+
+ l2sc->stat.tx_rr++; /* update statistics */
}
/*---------------------------------------------------------------------------*
@@ -143,6 +149,8 @@ i4b_tx_rr_response(l2_softc_t *l2sc, fbit_t fbit)
m = i4b_build_s_frame(l2sc, CR_RSP_TO_NT, fbit, RR);
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
+
+ l2sc->stat.tx_rr++; /* update statistics */
}
/*---------------------------------------------------------------------------*
@@ -158,6 +166,8 @@ i4b_tx_rnr_command(l2_softc_t *l2sc, pbit_t pbit)
m = i4b_build_s_frame(l2sc, CR_CMD_TO_NT, pbit, RNR);
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
+
+ l2sc->stat.tx_rnr++; /* update statistics */
}
/*---------------------------------------------------------------------------*
@@ -173,6 +183,8 @@ i4b_tx_rnr_response(l2_softc_t *l2sc, fbit_t fbit)
m = i4b_build_s_frame(l2sc, CR_RSP_TO_NT, fbit, RNR);
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
+
+ l2sc->stat.tx_rnr++; /* update statistics */
}
/*---------------------------------------------------------------------------*
@@ -188,6 +200,8 @@ i4b_tx_rej_response(l2_softc_t *l2sc, fbit_t fbit)
m = i4b_build_s_frame(l2sc, CR_RSP_TO_NT, fbit, REJ);
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
+
+ l2sc->stat.tx_rej++; /* update statistics */
}
/*---------------------------------------------------------------------------*
diff --git a/sys/i4b/layer2/i4b_tei.c b/sys/i4b/layer2/i4b_tei.c
index 3742dfd..b029918 100644
--- a/sys/i4b/layer2/i4b_tei.c
+++ b/sys/i4b/layer2/i4b_tei.c
@@ -27,9 +27,9 @@
* i4b_tei.c - tei handling procedures
* -----------------------------------
*
- * $Id: i4b_tei.c,v 1.14 1999/02/14 09:45:00 hm Exp $
+ * $Id: i4b_tei.c,v 1.15 1999/05/28 15:03:32 hm Exp $
*
- * last edit-date: [Sun Feb 14 10:32:12 1999]
+ * last edit-date: [Fri May 28 16:14:14 1999]
*
*---------------------------------------------------------------------------*/
@@ -213,6 +213,7 @@ build_tei_mgmt_frame(l2_softc_t *l2sc, unsigned char type)
panic("build_tei_mgmt_frame: invalid type");
break;
}
+ l2sc->stat.tx_tei++;
return(m);
}
diff --git a/sys/i4b/layer2/i4b_uframe.c b/sys/i4b/layer2/i4b_uframe.c
index 1e8619d..c27cfb8 100644
--- a/sys/i4b/layer2/i4b_uframe.c
+++ b/sys/i4b/layer2/i4b_uframe.c
@@ -27,9 +27,9 @@
* i4b_uframe.c - routines for handling U-frames
* -----------------------------------------------
*
- * $Id: i4b_uframe.c,v 1.7 1999/02/14 09:45:00 hm Exp $
+ * $Id: i4b_uframe.c,v 1.8 1999/05/28 15:03:32 hm Exp $
*
- * last edit-date: [Sun Feb 14 10:32:17 1999]
+ * last edit-date: [Fri May 28 16:14:32 1999]
*
*---------------------------------------------------------------------------*/
@@ -89,10 +89,9 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
if((l2sc->tei_valid == TEI_VALID) &&
(l2sc->tei == GETTEI(*(ptr+OFF_TEI))))
{
+ l2sc->stat.rx_sabme++;
DBGL2(L2_U_MSG, "i4b_rxd_u_frame", ("SABME, sapi = %d, tei = %d\n", sapi, tei));
-
l2sc->rxd_PF = pfbit;
-
i4b_next_l2state(l2sc, EV_RXSABME);
}
i4b_Dfreembuf(m);
@@ -104,13 +103,13 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
*(ptr + OFF_MEI) == MEI)
{
/* layer 2 management (SAPI = 63) */
-
+ l2sc->stat.rx_tei++;
i4b_tei_rxframe(unit, m);
}
else if(sapi == SAPI_CCP && tei == GROUP_TEI)
{
/* call control (SAPI = 0) */
-
+ l2sc->stat.rx_ui++;
/* strip ui header */
m_adj(m, UI_HDR_LEN);
/* to upper layer */
@@ -118,8 +117,8 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
}
else
{
+ l2sc->stat.err_rx_badui++;
DBGL2(L2_U_ERR, "i4b_rxd_u_frame", ("unknown UI frame!\n"));
-
i4b_Dfreembuf(m);
}
break;
@@ -128,10 +127,9 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
if((l2sc->tei_valid == TEI_VALID) &&
(l2sc->tei == GETTEI(*(ptr+OFF_TEI))))
{
+ l2sc->stat.rx_disc++;
DBGL2(L2_U_MSG, "i4b_rxd_u_frame", ("DISC, sapi = %d, tei = %d\n", sapi, tei));
-
l2sc->rxd_PF = pfbit;
-
i4b_next_l2state(l2sc, EV_RXDISC);
}
i4b_Dfreembuf(m);
@@ -141,6 +139,7 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
if((l2sc->tei_valid == TEI_VALID) &&
(l2sc->tei == GETTEI(*(ptr+OFF_TEI))))
{
+ l2sc->stat.rx_xid++;
DBGL2(L2_U_MSG, "i4b_rxd_u_frame", ("XID, sapi = %d, tei = %d\n", sapi, tei));
}
i4b_Dfreembuf(m);
@@ -152,12 +151,10 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
if((l2sc->tei_valid == TEI_VALID) &&
(l2sc->tei == GETTEI(*(ptr+OFF_TEI))))
{
+ l2sc->stat.rx_dm++;
DBGL2(L2_U_MSG, "i4b_rxd_u_frame", ("DM, sapi = %d, tei = %d\n", sapi, tei));
-
i4b_print_frame(m->m_len, m->m_data);
-
l2sc->rxd_PF = pfbit;
-
i4b_next_l2state(l2sc, EV_RXDM);
}
i4b_Dfreembuf(m);
@@ -167,10 +164,9 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
if((l2sc->tei_valid == TEI_VALID) &&
(l2sc->tei == GETTEI(*(ptr+OFF_TEI))))
{
+ l2sc->stat.rx_ua++;
DBGL2(L2_U_MSG, "i4b_rxd_u_frame", ("UA, sapi = %d, tei = %d\n", sapi, tei));
-
l2sc->rxd_PF = pfbit;
-
i4b_next_l2state(l2sc, EV_RXUA);
}
i4b_Dfreembuf(m);
@@ -180,10 +176,9 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
if((l2sc->tei_valid == TEI_VALID) &&
(l2sc->tei == GETTEI(*(ptr+OFF_TEI))))
{
+ l2sc->stat.rx_frmr++;
DBGL2(L2_U_MSG, "i4b_rxd_u_frame", ("FRMR, sapi = %d, tei = %d\n", sapi, tei));
-
l2sc->rxd_PF = pfbit;
-
i4b_next_l2state(l2sc, EV_RXFRMR);
}
i4b_Dfreembuf(m);
@@ -201,6 +196,7 @@ i4b_rxd_u_frame(int unit, struct mbuf *m)
DBGL2(L2_U_ERR, "i4b_rxd_u_frame", ("not mine - UNKNOWN TYPE ERROR, sapi = %d, tei = %d, frame = ", sapi, tei));
i4b_print_frame(m->m_len, m->m_data);
}
+ l2sc->stat.err_rx_badui++;
i4b_Dfreembuf(m);
break;
}
@@ -237,10 +233,9 @@ i4b_tx_sabme(l2_softc_t *l2sc, pbit_t pbit)
{
struct mbuf *m;
+ l2sc->stat.tx_sabme++;
DBGL2(L2_U_MSG, "i4b_tx_sabme", ("tx SABME, tei = %d\n", l2sc->tei));
-
m = i4b_build_u_frame(l2sc, CR_CMD_TO_NT, pbit, SABME);
-
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
}
@@ -251,11 +246,10 @@ void
i4b_tx_dm(l2_softc_t *l2sc, fbit_t fbit)
{
struct mbuf *m;
-
+
+ l2sc->stat.tx_dm++;
DBGL2(L2_U_MSG, "i4b_tx_dm", ("tx DM, tei = %d\n", l2sc->tei));
-
m = i4b_build_u_frame(l2sc, CR_RSP_TO_NT, fbit, DM);
-
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
}
@@ -267,10 +261,9 @@ i4b_tx_disc(l2_softc_t *l2sc, pbit_t pbit)
{
struct mbuf *m;
+ l2sc->stat.tx_disc++;
DBGL2(L2_U_MSG, "i4b_tx_disc", ("tx DISC, tei = %d\n", l2sc->tei));
-
m = i4b_build_u_frame(l2sc, CR_CMD_TO_NT, pbit, DISC);
-
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
}
@@ -282,10 +275,9 @@ i4b_tx_ua(l2_softc_t *l2sc, fbit_t fbit)
{
struct mbuf *m;
+ l2sc->stat.tx_ua++;
DBGL2(L2_U_MSG, "i4b_tx_ua", ("tx UA, tei = %d\n", l2sc->tei));
-
m = i4b_build_u_frame(l2sc, CR_RSP_TO_NT, fbit, UA);
-
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
}
@@ -297,12 +289,10 @@ i4b_tx_frmr(l2_softc_t *l2sc, fbit_t fbit)
{
struct mbuf *m;
+ l2sc->stat.tx_frmr++;
DBGL2(L2_U_MSG, "i4b_tx_frmr", ("tx FRMR, tei = %d\n", l2sc->tei));
-
m = i4b_build_u_frame(l2sc, CR_RSP_TO_NT, fbit, FRMR);
-
PH_Data_Req(l2sc->unit, m, MBUF_FREE);
}
-
#endif /* NI4BQ921 > 0 */
OpenPOWER on IntegriCloud