diff options
author | hm <hm@FreeBSD.org> | 1999-08-06 14:05:10 +0000 |
---|---|---|
committer | hm <hm@FreeBSD.org> | 1999-08-06 14:05:10 +0000 |
commit | c318ffb377724b7eab997d3ddd7f16e229f18e4d (patch) | |
tree | 4dd20754e94db3bc400654765c985e981925a884 /sys/i4b/layer2 | |
parent | 29c67703e3751c283a1bdfe7764effe015c13b83 (diff) | |
download | FreeBSD-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.c | 8 | ||||
-rw-r--r-- | sys/i4b/layer2/i4b_l2.c | 11 | ||||
-rw-r--r-- | sys/i4b/layer2/i4b_l2.h | 9 | ||||
-rw-r--r-- | sys/i4b/layer2/i4b_sframe.c | 18 | ||||
-rw-r--r-- | sys/i4b/layer2/i4b_tei.c | 5 | ||||
-rw-r--r-- | sys/i4b/layer2/i4b_uframe.c | 46 |
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 */ |