From: Alan Robertson <[email protected]> When forwarding traffic across a TDM network the ethernet header will be replaced with a ML-PPP one thereby reducing the size of the packet.
Signed-off-by: Alan Robertson <[email protected]> --- lib/librte_sched/rte_sched.c | 14 +++++++++++++- lib/librte_sched/rte_sched.h | 5 +++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c index ad2f7c6d5..c971fd0d4 100644 --- a/lib/librte_sched/rte_sched.c +++ b/lib/librte_sched/rte_sched.c @@ -187,7 +187,7 @@ struct rte_sched_port { uint32_t n_pipes_per_subport; uint32_t rate; uint32_t mtu; - uint32_t frame_overhead; + int32_t frame_overhead; uint16_t qsize[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE]; uint32_t n_pipe_profiles; uint32_t pipe_tc3_rate_max; @@ -1591,6 +1591,10 @@ grinder_credits_check(struct rte_sched_port *port, uint32_t pos) uint32_t pipe_tc_credits = pipe->tc_credits[tc_index]; int enough_credits; +#ifdef RTE_SCHED_DEBUG + assert((int)(pkt->pkt_len + port->frame_overhead) > 0); +#endif /* RTE_SCHED_DEBUG */ + /* Check queue credits */ enough_credits = (pkt_len <= subport_tb_credits) && (pkt_len <= subport_tc_credits) && @@ -1629,6 +1633,10 @@ grinder_credits_check(struct rte_sched_port *port, uint32_t pos) uint32_t pipe_tc_ov_credits = pipe_tc_ov_mask1[tc_index]; int enough_credits; +#ifdef RTE_SCHED_DEBUG + assert((int)(pkt->pkt_len + port->frame_overhead) > 0); +#endif /* RTE_SCHED_DEBUG */ + /* Check pipe and subport credits */ enough_credits = (pkt_len <= subport_tb_credits) && (pkt_len <= subport_tc_credits) && @@ -1663,6 +1671,10 @@ grinder_schedule(struct rte_sched_port *port, uint32_t pos) if (!grinder_credits_check(port, pos)) return 0; +#ifdef RTE_SCHED_DEBUG + assert((int)(pkt->pkt_len + port->frame_overhead) > 0); +#endif /* RTE_SCHED_DEBUG */ + /* Advance port time */ port->time += pkt_len; diff --git a/lib/librte_sched/rte_sched.h b/lib/librte_sched/rte_sched.h index 5d2a688dc..3e135c1e5 100644 --- a/lib/librte_sched/rte_sched.h +++ b/lib/librte_sched/rte_sched.h @@ -190,8 +190,9 @@ struct rte_sched_port_params { uint32_t mtu; /**< Maximum Ethernet frame size * (measured in bytes). * Should not include the framing overhead. */ - uint32_t frame_overhead; /**< Framing overhead per packet - * (measured in bytes) */ + int32_t frame_overhead; + /**< Framing overhead per packet (measured in bytes). + * Can have negative value. */ uint32_t n_subports_per_port; /**< Number of subports */ uint32_t n_pipes_per_subport; /**< Number of pipes per subport */ uint16_t qsize[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE]; -- 2.11.0

