[PATCH 4/9] bus: fsl-mc: dpio: add frame descriptor and scatter/gather APIs

Stuart Yoder stuart.yoder at nxp.com
Mon Nov 7 23:29:40 UTC 2016



> -----Original Message-----
> From: Ruxandra Ioana Radulescu
> Sent: Friday, November 04, 2016 10:04 AM
> To: Stuart Yoder <stuart.yoder at nxp.com>; gregkh at linuxfoundation.org
> Cc: German Rivera <german.rivera at nxp.com>; devel at driverdev.osuosl.org; linux-kernel at vger.kernel.org;
> agraf at suse.de; arnd at arndb.de; Leo Li <leoyang.li at nxp.com>; Roy Pledge <roy.pledge at nxp.com>
> Subject: RE: [PATCH 4/9] bus: fsl-mc: dpio: add frame descriptor and scatter/gather APIs
> 
> > -----Original Message-----
> > From: Stuart Yoder
> > Sent: Friday, November 04, 2016 4:32 PM
> > To: Ruxandra Ioana Radulescu <ruxandra.radulescu at nxp.com>;
> > gregkh at linuxfoundation.org
> > Cc: German Rivera <german.rivera at nxp.com>; devel at driverdev.osuosl.org;
> > linux-kernel at vger.kernel.org; agraf at suse.de; arnd at arndb.de; Leo Li
> > <leoyang.li at nxp.com>; Roy Pledge <roy.pledge at nxp.com>
> > Subject: RE: [PATCH 4/9] bus: fsl-mc: dpio: add frame descriptor and
> > scatter/gather APIs
> >
> >  > +/**
> > > > + * dpaa2_fd_set_bpid() - Set the bpid field of frame descriptor
> > > > + * @fd: the given frame descriptor
> > > > + * @bpid: buffer pool id to be set
> > > > + */
> > > > +static inline void dpaa2_fd_set_bpid(struct dpaa2_fd *fd, uint16_t bpid)
> > > > +{
> > > > +	fd->simple.bpid = bpid;
> > > > +}
> > >
> > > The setter/getter functions for fd.ctrl are missing.
> >
> > Ok, will add those.  Does the ethernet driver use that field?
> 
> Yes.
> 
> >
> > > > +
> > > > +/**
> > > > + * struct dpaa2_sg_entry - the scatter-gathering structure
> > > > + * @addr: address of the sg entry
> > > > + * @len: length in this sg entry
> > > > + * @bpid: buffer pool id
> > > > + * @format_offset: offset in the MS 16 bits, BPID in the LS 16 bits
> > >
> > > Description of the format_offset field is incorrect, it shouldn't
> > > contain the reference to BPID.
> >
> > Thanks, will fix.
> >
> > > > +/**
> > > > + * dpaa2_sg_get_len() - Get the length in SG entry
> > > > + * @sg: the given scatter-gathering object
> > > > + *
> > > > + * Return the length.
> > > > + */
> > > > +static inline u32 dpaa2_sg_get_len(const struct dpaa2_sg_entry *sg)
> > > > +{
> > > > +	if (dpaa2_sg_short_len(sg))
> > > > +		return le32_to_cpu(sg->len) & SG_SHORT_LEN_MASK;
> > > > +
> > > > +	return le32_to_cpu(sg->len);
> > > > +}
> > >
> > > We should do this in dpaa2_fd_get_len() as well. Hardware is capable of
> > > generating FDs with SL bit set for single frame format too, although in
> > > practice I've never actually seen it.
> >
> > Any suggestion on how to test this case?
> 
> Actually, I stand corrected. Apparently WRIOP _always_ generates short
> len frames, it just happens that, for the current default settings, the rest
> of the bits in the 32bit word that contains the short length field are always
> zero.

Ok, so we were getting lucky.  I'll fix that in the next respin.

Thanks,
Stuart


More information about the devel mailing list