On Mon, Nov 13, 2017 at 02:18:55PM +0400, Ilya Matveychikov wrote:
> 
> > On Nov 13, 2017, at 2:10 PM, Olivier MATZ <olivier.m...@6wind.com> wrote:
> > 
> > Hi Ilya,
> > 
> > On Fri, Nov 10, 2017 at 04:56:43PM +0300, Ilya V. Matveychikov wrote:
> >> Update types of variables to correspond to nb_segs type change from
> >> uint8_t to uint16_t.
> >> 
> >> Fixes: 97cb466d65c9 ("mbuf: use 2 bytes for port and nb segments")
> >> Cc: olivier.m...@6wind.com
> >> 
> >> Signed-off-by: Ilya V. Matveychikov <matvejchi...@gmail.com>
> > 
> > Thanks for this fix.
> > 
> > I did quick search for other references:
> > 
> > $ git grep seg | grep -i int8
> > app/test-pmd/config.c:  tx_pkt_nb_segs = (uint8_t) nb_segs;
> > app/test-pmd/csumonly.c:        uint16_t seglen[], uint8_t nb_seg)
> > app/test-pmd/testpmd.c:uint8_t  tx_pkt_nb_segs = 1; /**< Number of segments 
> > in TXONLY packets */
> > app/test-pmd/testpmd.h:extern uint8_t  tx_pkt_nb_segs; /**< Number of 
> > segments in TX packets */
> > doc/guides/sample_app_ug/ipv4_multicast.rst:        hdr->pkt.nb_segs = 
> > (uint8_t)(pkt->pkt.nb_segs + 1);
> > drivers/bus/dpaa/rte_dpaa_bus.h:                        return (uint8_t 
> > *)(memseg[i].addr) +
> > drivers/net/ark/ark_ethdev_rx.c:        uint8_t segments;
> > drivers/net/avp/rte_avp_common.h:       uint8_t nb_segs; /**< Number of 
> > segments */
> > drivers/net/bnx2x/bnx2x.c:bnx2x_igu_ack_sb(struct bnx2x_softc *sc, uint8_t 
> > igu_sb_id, uint8_t segment,
> > drivers/net/bnx2x/bnx2x.c:              uint8_t segment;
> > drivers/net/bnx2x/bnx2x.h:bnx2x_igu_ack_sb_gen(struct bnx2x_softc *sc, 
> > uint8_t segment,
> > drivers/net/bnx2x/ecore_hsi.h:  uint8_t igu_seg_id;
> > drivers/net/bnx2x/ecore_hsi.h:  uint8_t igu_seg_id;
> > drivers/net/bnx2x/ecore_hsi.h:  uint8_t igu_seg_id /* segment id of the IGU 
> > */;
> > drivers/net/bnx2x/ecore_hsi.h:  uint8_t igu_seg_id /* segment id of the IGU 
> > */;
> > drivers/net/bnxt/hsi_struct_def_dpdk.h: uint8_t tpa_segs;
> > drivers/net/dpaa2/dpaa2_rxtx.c: first_seg->buf_addr = (uint8_t *)sg_addr;
> > drivers/net/dpaa2/dpaa2_rxtx.c:         next_seg->buf_addr  = (uint8_t 
> > *)sg_addr;
> > drivers/net/i40e/i40e_rxtx.c:            * m->nb_segs is uint8_t, so 
> > nb_segs is always less than
> > drivers/net/ixgbe/ixgbe_rxtx.c: int8_t i, nb_segs = m->nb_segs;
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:txq_wr_dseg_v(struct mlx5_txq_data 
> > *txq, uint8_t *dseg,
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:  const uint8x16_t dseg_shuf_m = {
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:          uint8_t *dseg;
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:          dseg = (uint8_t *)(wqe + 1);
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:                          dseg = 
> > (uint8_t *)
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:  uint8_t *dseg;
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:  dseg = (uint8_t *)(wqe + 1);
> > drivers/net/mlx5/mlx5_rxtx_vec_neon.h:          dseg = (uint8_t *)txq->wqes;
> > drivers/net/qede/qede_rxtx.c:                uint8_t num_segs, uint16_t 
> > pkt_len)
> > drivers/net/qede/qede_rxtx.c:   uint8_t num_segs = 1;
> > drivers/net/qede/qede_rxtx.c:   uint8_t nb_segs = 0;
> > drivers/net/sfc/base/ef10_nvram.c:      if ((rc = 
> > tlv_init_cursor_from_size(&cursor, (uint8_t *)seg_data,
> > drivers/net/sfc/base/ef10_nvram.c:      if ((rc = 
> > tlv_init_cursor_from_size(&cursor, (uint8_t *)seg_data,
> > drivers/net/sfc/base/ef10_nvram.c:      if ((rc = 
> > tlv_init_cursor_from_size(&cursor, (uint8_t *)seg_data,
> > drivers/net/sfc/base/ef10_nvram.c:      if ((rc = 
> > tlv_init_cursor_from_size(&cursor, (uint8_t *)seg_data,
> > drivers/net/szedata2/rte_eth_szedata2.c:        uint8_t mbuf_segs;
> > drivers/net/vmxnet3/base/vmxnet3_defs.h:   uint8  segCnt;       /* Number 
> > of aggregated packets */
> > examples/ipv4_multicast/main.c: hdr->nb_segs = (uint8_t)(pkt->nb_segs + 1);
> > lib/librte_mbuf/rte_mbuf.h:     uint8_t nseg;
> > lib/librte_mbuf/rte_mbuf.h:     head->nb_segs = (uint8_t)(head->nb_segs + 
> > tail->nb_segs);
> > lib/librte_pdump/rte_pdump.c:   uint8_t nseg;
> > test/test/packet_burst_generator.c:             uint8_t pkt_len, uint8_t 
> > nb_pkt_segs)
> > test/test/packet_burst_generator.c:             int nb_pkt_per_burst, 
> > uint8_t pkt_len, uint8_t nb_pkt_segs)
> > test/test/packet_burst_generator.h:             uint8_t pkt_len, uint8_t 
> > nb_pkt_segs);
> > test/test/packet_burst_generator.h:             int nb_pkt_per_burst, 
> > uint8_t pkt_len, uint8_t nb_pkt_segs);
> > test/test/test_cryptodev.h:             int nb_segs, uint8_t pattern) {
> > 
> > I think the ones in ixgbe, szedata and examples/ipv4_multicast/main.c could 
> > be
> > fixed without risk.
> > Some don't look critical for now (ex: testpmd), but could be integrated in 
> > this
> > patch too.
> > 
> 
> Something already fixed by:
> 6c293ffd63b3f61a95d8c492d007160874e7a057
> 4c20622a95087b42ddb403406d3877a9dc3d731b

You are right, sorry, I didn't update my workspace since rc3.

> But I didn’t try to fix it everywhere in drivers as it may depends of the 
> particular hardware - does it support more that uint8_t queues or not. So, I 
> agree with you that maintainers should have a look on that change.
> 
> Also, not sure that testpmd need to have more that 255 segments of 16k 
> possible. And my opinion that it’s better to apply this patch separately 
> without integration with drivers fixes and stuff like that.

Agree.

Acked-by: Olivier Matz <olivier.m...@6wind.com>

Reply via email to