Hi, [...] > > Another thing, that I just thought about: > > Right now we invoke ixgbe_rxq_rearm() only at the start of > > _recv_raw_pkts_vec(). > > Before it was ok, as _recv_raw_pkts_vec() would never try to read more then > 32 > > RXDs. > > But what would happen if nb_pkts > rxq->nb_desc and rxq->rxrearm_nb == 0? > > I suppose, _recv_raw_pkts_vec() can wrpa around RXD ring and 'receive' > same > > packet twice? > > So we probably better still limit nb_pkts <= 32 at _recv_raw_pkts_vec(). > > The _recv_raw_pkts_vec() won't wrap around RXD ring. When it reaches the last > one, the DD bit of padding desc. always 0. > So in the case nb_pkts > rxq->nb_desc, the '_recv_raw_pkts_vec()' can only get > no more than 'rxq->nb_desc' packets. > I think the violation is true when rx_id in some middle position of desc_ring, and nb_pkts > rxq->nb_desc. The DD checking may exceed the boundary (access the entry whose DD is set and waiting for rearm). So I agree to keep the max burst size as 32.
/Steve