[dpdk-dev] vring_init bug

Ouyang, Changchun changchun.ouyang at intel.com
Wed Sep 9 05:18:05 CEST 2015


> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Xie, Huawei
> Sent: Wednesday, September 9, 2015 11:00 AM
> To: dev at dpdk.org
> Subject: [dpdk-dev] vring_init bug
> 
> static inline void
> vring_init(struct vring *vr, unsigned int num, uint8_t *p,
>     unsigned long align)
> {
>     vr->num = num;
>     vr->desc = (struct vring_desc *) p;
>     vr->avail = (struct vring_avail *) (p +
>         num * sizeof(struct vring_desc));
>     vr->used = (void *)
>         RTE_ALIGN_CEIL((uintptr_t)(&vr->avail->ring[num]), align); }
> 
> There is a bug in vr->used calculation. 2 bytes of used_event_idx isn't
> considered. Would submit a fix.
> __u16 available[num];
> __u16 used_event_idx;

For vring_used ring, it also misses avail_event.

struct vring_used {
u16 flags ;
u16 idx ;
struct vring_used_elem r ing [qsz] ;
u16 avail_event ;  // this one missed in dpdk
} ;

It doesn't affect the offset calculation, but it will be great if you can add it together.


More information about the dev mailing list