X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Flibrte_meter%2Frte_meter.h;h=ebdc453fc9d863905da94a448112f2dd0a657471;hb=7e92cef514caab2e71f1f415375a1046c7a2377d;hp=92728a5b5677ad971b32337277f756c62f34936d;hpb=3031749c2df04a63cdcef186dcce3781e61436e8;p=dpdk.git diff --git a/lib/librte_meter/rte_meter.h b/lib/librte_meter/rte_meter.h index 92728a5b56..ebdc453fc9 100644 --- a/lib/librte_meter/rte_meter.h +++ b/lib/librte_meter/rte_meter.h @@ -1,34 +1,5 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2014 Intel Corporation */ #ifndef __INCLUDE_RTE_METER_H__ @@ -123,7 +94,7 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m, * Handle to srTCM instance * @param time * Current CPU time stamp (measured in CPU cycles) - * @param pkt_length + * @param pkt_len * Length of the current IP packet (measured in bytes) * @return * Color assigned to the current IP packet @@ -140,7 +111,7 @@ rte_meter_srtcm_color_blind_check(struct rte_meter_srtcm *m, * Handle to srTCM instance * @param time * Current CPU time stamp (measured in CPU cycles) - * @param pkt_length + * @param pkt_len * Length of the current IP packet (measured in bytes) * @param pkt_color * Input color of the current IP packet @@ -160,7 +131,7 @@ rte_meter_srtcm_color_aware_check(struct rte_meter_srtcm *m, * Handle to trTCM instance * @param time * Current CPU time stamp (measured in CPU cycles) - * @param pkt_length + * @param pkt_len * Length of the current IP packet (measured in bytes) * @return * Color assigned to the current IP packet @@ -177,7 +148,7 @@ rte_meter_trtcm_color_blind_check(struct rte_meter_trtcm *m, * Handle to trTCM instance * @param time * Current CPU time stamp (measured in CPU cycles) - * @param pkt_length + * @param pkt_len * Length of the current IP packet (measured in bytes) * @param pkt_color * Input color of the current IP packet @@ -232,13 +203,15 @@ rte_meter_srtcm_color_blind_check(struct rte_meter_srtcm *m, n_periods = time_diff / m->cir_period; m->time += n_periods * m->cir_period; + /* Put the tokens overflowing from tc into te bucket */ tc = m->tc + n_periods * m->cir_bytes_per_period; - if (tc > m->cbs) + te = m->te; + if (tc > m->cbs) { + te += (tc - m->cbs); + if (te > m->ebs) + te = m->ebs; tc = m->cbs; - - te = m->te + n_periods * m->cir_bytes_per_period; - if (te > m->ebs) - te = m->ebs; + } /* Color logic */ if (tc >= pkt_len) { @@ -271,13 +244,15 @@ rte_meter_srtcm_color_aware_check(struct rte_meter_srtcm *m, n_periods = time_diff / m->cir_period; m->time += n_periods * m->cir_period; + /* Put the tokens overflowing from tc into te bucket */ tc = m->tc + n_periods * m->cir_bytes_per_period; - if (tc > m->cbs) + te = m->te; + if (tc > m->cbs) { + te += (tc - m->cbs); + if (te > m->ebs) + te = m->ebs; tc = m->cbs; - - te = m->te + n_periods * m->cir_bytes_per_period; - if (te > m->ebs) - te = m->ebs; + } /* Color logic */ if ((pkt_color == e_RTE_METER_GREEN) && (tc >= pkt_len)) {