Ping? (CC:ing Stephen Hemminger as well)
// Simon On 2015-10-28 10:56, Simon Kagstrom wrote: > Otherwise mbufs will leak when the port is destroyed. The > rte_sched_port_qbase() and rte_sched_port_qsize() functions are used > in free now, so move them up. > > Signed-off-by: Simon Kagstrom <simon.kagstrom at netinsight.net> > --- > lib/librte_sched/rte_sched.c | 44 > +++++++++++++++++++++++++++----------------- > 1 file changed, 27 insertions(+), 17 deletions(-) > > diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c > index 9c9419d..81462cd 100644 > --- a/lib/librte_sched/rte_sched.c > +++ b/lib/librte_sched/rte_sched.c > @@ -312,6 +312,23 @@ rte_sched_port_queues_per_port(struct rte_sched_port > *port) > return RTE_SCHED_QUEUES_PER_PIPE * port->n_pipes_per_subport * > port->n_subports_per_port; > } > > +static inline struct rte_mbuf ** > +rte_sched_port_qbase(struct rte_sched_port *port, uint32_t qindex) > +{ > + uint32_t pindex = qindex >> 4; > + uint32_t qpos = qindex & 0xF; > + > + return (port->queue_array + pindex * port->qsize_sum + > port->qsize_add[qpos]); > +} > + > +static inline uint16_t > +rte_sched_port_qsize(struct rte_sched_port *port, uint32_t qindex) > +{ > + uint32_t tc = (qindex >> 2) & 0x3; > + > + return port->qsize[tc]; > +} > + > static int > rte_sched_port_check_params(struct rte_sched_port_params *params) > { > @@ -717,11 +734,21 @@ rte_sched_port_config(struct rte_sched_port_params > *params) > void > rte_sched_port_free(struct rte_sched_port *port) > { > + unsigned int queue; > /* Check user parameters */ > if (port == NULL){ > return; > } > > + /* Free enqueued mbufs */ > + for (queue = 0; queue < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; queue++) { > + unsigned int i; > + struct rte_mbuf **mbufs = rte_sched_port_qbase(port, queue); > + > + for (i = 0; i < rte_sched_port_qsize(port, queue); i++) > + rte_pktmbuf_free(mbufs[i]); > + } > + > rte_bitmap_free(port->bmp); > rte_free(port); > } > @@ -1032,23 +1059,6 @@ rte_sched_port_qindex(struct rte_sched_port *port, > uint32_t subport, uint32_t pi > return result; > } > > -static inline struct rte_mbuf ** > -rte_sched_port_qbase(struct rte_sched_port *port, uint32_t qindex) > -{ > - uint32_t pindex = qindex >> 4; > - uint32_t qpos = qindex & 0xF; > - > - return (port->queue_array + pindex * port->qsize_sum + > port->qsize_add[qpos]); > -} > - > -static inline uint16_t > -rte_sched_port_qsize(struct rte_sched_port *port, uint32_t qindex) > -{ > - uint32_t tc = (qindex >> 2) & 0x3; > - > - return port->qsize[tc]; > -} > - > #if RTE_SCHED_DEBUG > > static inline int >