RE: [PATCH v3 4/9] bus: fsl-mc: dpio: add frame descriptor and scatter/gather APIs
> -Original Message- > From: Laurentiu Tudor > Sent: Friday, December 02, 2016 6:12 AM > To: Stuart Yoder <stuart.yo...@nxp.com>; gre...@linuxfoundation.org > Cc: de...@driverdev.osuosl.org; linux-ker...@vger.kernel.org; ag...@suse.de; > a...@arndb.de; Leo Li > <leoyang...@nxp.com>; Ioana Ciornei <ioana.cior...@nxp.com>; Catalin Horghidan > <catalin.horghi...@nxp.com>; Ruxandra Ioana Radulescu > <ruxandra.radule...@nxp.com>; Roy Pledge > <roy.ple...@nxp.com> > Subject: Re: [PATCH v3 4/9] bus: fsl-mc: dpio: add frame descriptor and > scatter/gather APIs > > > Some more bits and pieces inside. > > --- > Best Regards, Laurentiu > > On 12/02/2016 12:41 AM, Stuart Yoder wrote: > > From: Roy Pledge <roy.ple...@nxp.com> > > > > Add global definitions for DPAA2 frame descriptors and scatter > > gather entries. > > > > Signed-off-by: Roy Pledge <roy.ple...@nxp.com> > > Signed-off-by: Stuart Yoder <stuart.yo...@nxp.com> > > --- > > > > Notes: > > -v3 > >-no changes > > -v2 > >-added setter/getter for the FD ctrl field > >-corrected comment for SG format_offset field description > >-added support for short length field in FD > > > > include/linux/fsl/dpaa2-fd.h | 448 > > +++ > > 1 file changed, 448 insertions(+) > > create mode 100644 include/linux/fsl/dpaa2-fd.h > > > > diff --git a/include/linux/fsl/dpaa2-fd.h b/include/linux/fsl/dpaa2-fd.h > > new file mode 100644 > > index 000..182c8f4 > > --- /dev/null > > +++ b/include/linux/fsl/dpaa2-fd.h > > @@ -0,0 +1,448 @@ > > +/* > > + * Copyright 2014-2016 Freescale Semiconductor Inc. > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions are > > met: > > + * * Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * * Redistributions in binary form must reproduce the above copyright > > + * notice, this list of conditions and the following disclaimer in > > the > > + * documentation and/or other materials provided with the > > distribution. > > + * * Neither the name of Freescale Semiconductor nor the > > + * names of its contributors may be used to endorse or promote > > products > > + * derived from this software without specific prior written > > permission. > > + * > > + * ALTERNATIVELY, this software may be distributed under the terms of the > > + * GNU General Public License ("GPL") as published by the Free Software > > + * Foundation, either version 2 of that License or (at your option) any > > + * later version. > > + * > > + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY > > + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > > IMPLIED > > + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE > > + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY > > + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > > DAMAGES > > + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR > > SERVICES; > > + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED > > AND > > + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR > > TORT > > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > > OF THIS > > + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > > + */ > > +#ifndef __FSL_DPAA2_FD_H > > +#define __FSL_DPAA2_FD_H > > + > > +#include > > + > > +/** > > + * DOC: DPAA2 FD - Frame Descriptor APIs for DPAA2 > > + * > > + * Frame Descriptors (FDs) are used to describe frame data in the DPAA2. > > + * Frames can be enqueued and dequeued to Frame Queues (FQs) which are > > consumed > > + * by the various DPAA accelerators (WRIOP, SEC, PME, DCE) > > + * > > + * There are three types of frames: single, scatter gather, and frame > > lists. > > + * > > + * The set of APIs in this file must be used to create, manipulate and > > + * query Frame Descriptors. > > + */ > > + > > +/** > > + * struct dpaa2_fd - Struct describing FDs > > + * @words: for easier/faster copyi
Re: [PATCH v3 4/9] bus: fsl-mc: dpio: add frame descriptor and scatter/gather APIs
On 12/05/2016 10:52 PM, Dan Carpenter wrote: > On Fri, Dec 02, 2016 at 12:12:14PM +, Laurentiu Tudor wrote: >>> +static inline bool dpaa2_sg_is_final(const struct dpaa2_sg_entry *sg) >>> +{ >>> + return !!(le16_to_cpu(sg->format_offset) >> SG_FINAL_FLAG_SHIFT); >> >> In other places in this file we don't use the '!!' to convert to bool. Maybe >> we should drop it here too. > > I like the explicit "!!". I think it makes the code more obvious since > all the information is on one line. > That's fine too, as long as we're doing it consistently in all the places. --- Best Regards, Laurentiu ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3 4/9] bus: fsl-mc: dpio: add frame descriptor and scatter/gather APIs
On Fri, Dec 02, 2016 at 12:12:14PM +, Laurentiu Tudor wrote: > > +static inline bool dpaa2_sg_is_final(const struct dpaa2_sg_entry *sg) > > +{ > > + return !!(le16_to_cpu(sg->format_offset) >> SG_FINAL_FLAG_SHIFT); > > In other places in this file we don't use the '!!' to convert to bool. Maybe > we should drop it here too. I like the explicit "!!". I think it makes the code more obvious since all the information is on one line. regards, dan carpenter ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3 4/9] bus: fsl-mc: dpio: add frame descriptor and scatter/gather APIs
Some more bits and pieces inside. --- Best Regards, Laurentiu On 12/02/2016 12:41 AM, Stuart Yoder wrote: > From: Roy Pledge> > Add global definitions for DPAA2 frame descriptors and scatter > gather entries. > > Signed-off-by: Roy Pledge > Signed-off-by: Stuart Yoder > --- > > Notes: > -v3 >-no changes > -v2 >-added setter/getter for the FD ctrl field >-corrected comment for SG format_offset field description >-added support for short length field in FD > > include/linux/fsl/dpaa2-fd.h | 448 > +++ > 1 file changed, 448 insertions(+) > create mode 100644 include/linux/fsl/dpaa2-fd.h > > diff --git a/include/linux/fsl/dpaa2-fd.h b/include/linux/fsl/dpaa2-fd.h > new file mode 100644 > index 000..182c8f4 > --- /dev/null > +++ b/include/linux/fsl/dpaa2-fd.h > @@ -0,0 +1,448 @@ > +/* > + * Copyright 2014-2016 Freescale Semiconductor Inc. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions are > met: > + * * Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * * Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * * Neither the name of Freescale Semiconductor nor the > + * names of its contributors may be used to endorse or promote products > + * derived from this software without specific prior written > permission. > + * > + * ALTERNATIVELY, this software may be distributed under the terms of the > + * GNU General Public License ("GPL") as published by the Free Software > + * Foundation, either version 2 of that License or (at your option) any > + * later version. > + * > + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY > + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED > + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE > + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY > + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR > SERVICES; > + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED > AND > + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF > THIS > + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + */ > +#ifndef __FSL_DPAA2_FD_H > +#define __FSL_DPAA2_FD_H > + > +#include > + > +/** > + * DOC: DPAA2 FD - Frame Descriptor APIs for DPAA2 > + * > + * Frame Descriptors (FDs) are used to describe frame data in the DPAA2. > + * Frames can be enqueued and dequeued to Frame Queues (FQs) which are > consumed > + * by the various DPAA accelerators (WRIOP, SEC, PME, DCE) > + * > + * There are three types of frames: single, scatter gather, and frame lists. > + * > + * The set of APIs in this file must be used to create, manipulate and > + * query Frame Descriptors. > + */ > + > +/** > + * struct dpaa2_fd - Struct describing FDs > + * @words: for easier/faster copying the whole FD structure > + * @addr: address in the FD > + * @len: length in the FD > + * @bpid: buffer pool ID > + * @format_offset: format, offset, and short-length fields > + * @frc: frame context > + * @ctrl: control bits...including dd, sc, va, err, etc > + * @flc: flow context address > + * > + * This structure represents the basic Frame Descriptor used in the system. > + */ > +struct dpaa2_fd { > + union { > + u32 words[8]; > + struct dpaa2_fd_simple { > + __le64 addr; > + __le32 len; > + __le16 bpid; > + __le16 format_offset; > + __le32 frc; > + __le32 ctrl; > + __le64 flc; > + } simple; > + }; > +}; > + > +#define FD_SHORT_LEN_FLAG_MASK 0x1 > +#define FD_SHORT_LEN_FLAG_SHIFT 14 > +#define FD_SHORT_LEN_MASK 0x1 > +#define FD_OFFSET_MASK 0x0FFF > +#define FD_FORMAT_MASK 0x3 > +#define FD_FORMAT_SHIFT 12 > +#define SG_SHORT_LEN_FLAG_MASK 0x1 > +#define SG_SHORT_LEN_FLAG_SHIFT 14 > +#define SG_SHORT_LEN_MASK 0x1 > +#define SG_OFFSET_MASK 0x0FFF > +#define SG_FORMAT_MASK 0x3 > +#define SG_FORMAT_SHIFT 12 > +#define SG_BPID_MASK 0x3FFF > +#define SG_FINAL_FLAG_MASK 0x1 > +#define SG_FINAL_FLAG_SHIFT 15 We should align the values of these macros as we do in other places. > +enum dpaa2_fd_format
[PATCH v3 4/9] bus: fsl-mc: dpio: add frame descriptor and scatter/gather APIs
From: Roy PledgeAdd global definitions for DPAA2 frame descriptors and scatter gather entries. Signed-off-by: Roy Pledge Signed-off-by: Stuart Yoder --- Notes: -v3 -no changes -v2 -added setter/getter for the FD ctrl field -corrected comment for SG format_offset field description -added support for short length field in FD include/linux/fsl/dpaa2-fd.h | 448 +++ 1 file changed, 448 insertions(+) create mode 100644 include/linux/fsl/dpaa2-fd.h diff --git a/include/linux/fsl/dpaa2-fd.h b/include/linux/fsl/dpaa2-fd.h new file mode 100644 index 000..182c8f4 --- /dev/null +++ b/include/linux/fsl/dpaa2-fd.h @@ -0,0 +1,448 @@ +/* + * Copyright 2014-2016 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_DPAA2_FD_H +#define __FSL_DPAA2_FD_H + +#include + +/** + * DOC: DPAA2 FD - Frame Descriptor APIs for DPAA2 + * + * Frame Descriptors (FDs) are used to describe frame data in the DPAA2. + * Frames can be enqueued and dequeued to Frame Queues (FQs) which are consumed + * by the various DPAA accelerators (WRIOP, SEC, PME, DCE) + * + * There are three types of frames: single, scatter gather, and frame lists. + * + * The set of APIs in this file must be used to create, manipulate and + * query Frame Descriptors. + */ + +/** + * struct dpaa2_fd - Struct describing FDs + * @words: for easier/faster copying the whole FD structure + * @addr: address in the FD + * @len: length in the FD + * @bpid: buffer pool ID + * @format_offset: format, offset, and short-length fields + * @frc: frame context + * @ctrl: control bits...including dd, sc, va, err, etc + * @flc: flow context address + * + * This structure represents the basic Frame Descriptor used in the system. + */ +struct dpaa2_fd { + union { + u32 words[8]; + struct dpaa2_fd_simple { + __le64 addr; + __le32 len; + __le16 bpid; + __le16 format_offset; + __le32 frc; + __le32 ctrl; + __le64 flc; + } simple; + }; +}; + +#define FD_SHORT_LEN_FLAG_MASK 0x1 +#define FD_SHORT_LEN_FLAG_SHIFT 14 +#define FD_SHORT_LEN_MASK 0x1 +#define FD_OFFSET_MASK 0x0FFF +#define FD_FORMAT_MASK 0x3 +#define FD_FORMAT_SHIFT 12 +#define SG_SHORT_LEN_FLAG_MASK 0x1 +#define SG_SHORT_LEN_FLAG_SHIFT 14 +#define SG_SHORT_LEN_MASK 0x1 +#define SG_OFFSET_MASK 0x0FFF +#define SG_FORMAT_MASK 0x3 +#define SG_FORMAT_SHIFT 12 +#define SG_BPID_MASK 0x3FFF +#define SG_FINAL_FLAG_MASK 0x1 +#define SG_FINAL_FLAG_SHIFT 15 + +enum dpaa2_fd_format { + dpaa2_fd_single = 0, + dpaa2_fd_list, + dpaa2_fd_sg +}; + +/** + * dpaa2_fd_get_addr() - get the addr field of frame descriptor + * @fd: the given frame descriptor + * + * Return the address in the frame descriptor. + */ +static inline dma_addr_t dpaa2_fd_get_addr(const struct dpaa2_fd *fd) +{ + + return (dma_addr_t)fd->simple.addr; +} + +/** + * dpaa2_fd_set_addr() - Set the addr