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

Ruxandra Ioana Radulescu ruxandra.radulescu at nxp.com
Fri Nov 4 15:04:04 UTC 2016


> -----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.
For FDs generated on the core both formats are accepted, and we use
long length format for the Ethernet driver TX frames.

Thanks,
Ioana


More information about the devel mailing list