diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-06-10 00:20:12 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-06-10 15:12:38 +0200 |
commit | efbdee9a5c9f511ea8f5b928e4f7076120ba587b (patch) | |
tree | f12ae759e8b1be66796ca9e247300a5f3e2ae6fb /openbsc/src/gprs/sgsn_libgtp.c | |
parent | bb35c45a0202e24e76d17900dbe2d5264136ef8d (diff) |
[GPSR] SGSN: Keep traffic counters for each PDP context
Diffstat (limited to 'openbsc/src/gprs/sgsn_libgtp.c')
-rw-r--r-- | openbsc/src/gprs/sgsn_libgtp.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c index a1d233a9a..a28790a0f 100644 --- a/openbsc/src/gprs/sgsn_libgtp.c +++ b/openbsc/src/gprs/sgsn_libgtp.c @@ -393,6 +393,7 @@ static int cb_data_ind(struct pdp_t *lib, void *packet, unsigned int len) pinfo.drx_params = mm->drx_parms; pinfo.qos[0] = 0; // FIXME rc = gprs_bssgp_tx_paging(mm->nsei, 0, &pinfo); + rate_ctr_inc(&mm->ctrg->ctr[GMM_CTR_PAGING_PS]); /* FIXME: queue the packet we received from GTP */ break; case GMM_REGISTERED_NORMAL: @@ -404,6 +405,11 @@ static int cb_data_ind(struct pdp_t *lib, void *packet, unsigned int len) return -1; } + rate_ctr_inc(&pdp->ctrg->ctr[PDP_CTR_PKTS_UDATA_OUT]); + rate_ctr_add(&pdp->ctrg->ctr[PDP_CTR_BYTES_UDATA_OUT], len); + rate_ctr_inc(&mm->ctrg->ctr[GMM_CTR_PKTS_UDATA_OUT]); + rate_ctr_add(&mm->ctrg->ctr[GMM_CTR_BYTES_UDATA_OUT], len); + return sndcp_unitdata_req(msg, &mm->llme->lle[pdp->sapi], pdp->nsapi, mm); } @@ -435,6 +441,14 @@ int sgsn_rx_sndcp_ud_ind(uint32_t tlli, uint8_t nsapi, struct msgb *msg, LOGP(DGPRS, LOGL_ERROR, "PDP CTX without libgtp\n"); return -EIO; } + + rate_ctr_inc(&pdp->ctrg->ctr[PDP_CTR_PKTS_UDATA_IN]); + rate_ctr_add(&pdp->ctrg->ctr[PDP_CTR_BYTES_UDATA_IN], npdu_len); + rate_ctr_inc(&mmctx->ctrg->ctr[GMM_CTR_PKTS_UDATA_IN]); + rate_ctr_add(&mmctx->ctrg->ctr[GMM_CTR_BYTES_UDATA_IN], npdu_len); + + return gtp_data_req(pdp->ggsn->gsn, pdp->lib, npdu, npdu_len); + return gtp_data_req(pdp->ggsn->gsn, pdp->lib, npdu, npdu_len); } |