summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/dpa/dpaa_eth.h
diff options
context:
space:
mode:
authorIoana Radulescu <ruxandra.radulescu@freescale.com>2013-04-17 19:42:36 (GMT)
committerFleming Andrew-AFLEMING <AFLEMING@freescale.com>2013-04-18 15:23:22 (GMT)
commitac6cda36f5de41f698c7c5d3a4d1a5d8a4c7ce8b (patch)
treeec05c8cdcc5bcd811f3e3b44b37a2d04977738d6 /drivers/net/ethernet/freescale/dpa/dpaa_eth.h
parent43006d9754cee9c45f8c94d2772b40086523244f (diff)
downloadlinux-fsl-qoriq-ac6cda36f5de41f698c7c5d3a4d1a5d8a4c7ce8b.tar.xz
dpaa_eth: Add support for new buffer layout parameters
The new chosen node mechanism allows a user to configure some extra per port parameters related to buffer layout. Add support in the ethernet driver to account for these new parameters and the changes in FMD wrapper API. Signed-off-by: Ioana Radulescu <ruxandra.radulescu@freescale.com> Change-Id: I54ef34be7b2ce1b644245816cbf234c8c6d8dcab Reviewed-on: http://git.am.freescale.net:8181/1468 Reviewed-by: Bucur Madalin-Cristian-B32716 <madalin.bucur@freescale.com> Reviewed-by: Sovaiala Cristian-Constantin-B39531 <Cristian.Sovaiala@freescale.com> Reviewed-by: Bercaru Cristian-B43982 <cristian.bercaru@freescale.com> Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com> Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/dpa/dpaa_eth.h')
-rw-r--r--drivers/net/ethernet/freescale/dpa/dpaa_eth.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth.h b/drivers/net/ethernet/freescale/dpa/dpaa_eth.h
index 60e165f..9c946aa 100644
--- a/drivers/net/ethernet/freescale/dpa/dpaa_eth.h
+++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth.h
@@ -488,18 +488,25 @@ static inline int dpa_check_rx_mtu(struct sk_buff *skb, int mtu)
static inline uint16_t dpa_get_headroom(struct dpa_buffer_layout_s *bl)
{
+ uint16_t headroom;
/* The frame headroom must accomodate:
* - the driver private data area
* - parse results, hash results, timestamp if selected
+ * - manip extra space
* If either hash results or time stamp are selected, both will
* be copied to/from the frame headroom, as TS is located between PR and
* HR in the IC and IC copy size has a granularity of 16bytes
* (see description of FMBM_RICP and FMBM_TICP registers in DPAARM)
+ *
+ * Also make sure the headroom is a multiple of data_align bytes
*/
- return bl->priv_data_size +
- (bl->parse_results ? DPA_PARSE_RESULTS_SIZE : 0) +
- (bl->hash_results || bl->time_stamp ?
- DPA_TIME_STAMP_SIZE + DPA_HASH_RESULTS_SIZE : 0);
+ headroom = bl->priv_data_size +
+ (bl->parse_results ? DPA_PARSE_RESULTS_SIZE : 0) +
+ (bl->hash_results || bl->time_stamp ?
+ DPA_TIME_STAMP_SIZE + DPA_HASH_RESULTS_SIZE : 0) +
+ bl->manip_extra_space;
+
+ return bl->data_align ? ALIGN(headroom, bl->data_align) : headroom;
}
static inline uint16_t dpa_get_buffer_size(struct dpa_buffer_layout_s *bl,