[dpdk-dev] [RFC Patch 17/39] bus/dpaa: add fman flow control threshold setting
Shreyansh Jain
shreyansh.jain at nxp.com
Sat May 27 12:25:13 CEST 2017
Signed-off-by: Geoff Thorpe <geoff.thorpe at freescale.com>
Signed-off-by: Roy Pledge <roy.pledge at freescale.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal at nxp.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain at nxp.com>
---
drivers/bus/dpaa/base/fman/fman_hw.c | 28 ++++++++++++++++++++++++++++
drivers/bus/dpaa/include/fsl_fman.h | 7 +++++++
2 files changed, 35 insertions(+)
diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c
index 77908ec..7618fc1 100644
--- a/drivers/bus/dpaa/base/fman/fman_hw.c
+++ b/drivers/bus/dpaa/base/fman/fman_hw.c
@@ -37,6 +37,7 @@
*/
#include <fsl_fman.h>
#include <fsl_fman_crc64.h>
+#include <fsl_bman.h>
/* Instantiate the global variable that the inline CRC64 implementation (in
* <fsl_fman.h>) depends on.
@@ -437,6 +438,33 @@ fman_if_set_bp(struct fman_if *fm_if, unsigned num __always_unused,
}
int
+fman_if_get_fc_threshold(struct fman_if *fm_if)
+{
+ struct __fman_if *__if = container_of(fm_if, struct __fman_if, __if);
+ unsigned int *fmbm_mpd;
+
+ assert(fman_ccsr_map_fd != -1);
+
+ fmbm_mpd = &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_mpd;
+ return in_be32(fmbm_mpd);
+}
+
+int
+fman_if_set_fc_threshold(struct fman_if *fm_if, u32 high_water,
+ u32 low_water, u32 bpid)
+{
+ struct __fman_if *__if = container_of(fm_if, struct __fman_if, __if);
+ unsigned int *fmbm_mpd;
+
+ assert(fman_ccsr_map_fd != -1);
+
+ fmbm_mpd = &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_mpd;
+ out_be32(fmbm_mpd, FMAN_ENABLE_BPOOL_DEPLETION);
+ return bm_pool_set_hw_threshold(bpid, low_water, high_water);
+
+}
+
+int
fman_if_get_fc_quanta(struct fman_if *fm_if)
{
struct __fman_if *__if = container_of(fm_if, struct __fman_if, __if);
diff --git a/drivers/bus/dpaa/include/fsl_fman.h b/drivers/bus/dpaa/include/fsl_fman.h
index 0aff22c..b94bc56 100644
--- a/drivers/bus/dpaa/include/fsl_fman.h
+++ b/drivers/bus/dpaa/include/fsl_fman.h
@@ -120,6 +120,13 @@ void fman_if_loopback_disable(struct fman_if *);
void fman_if_set_bp(struct fman_if *fm_if, unsigned int num, int bpid,
size_t bufsize);
+/* Get Flow Control threshold parameters on specific interface */
+int fman_if_get_fc_threshold(struct fman_if *fm_if);
+
+/* Enable and Set Flow Control threshold parameters on specific interface */
+int fman_if_set_fc_threshold(struct fman_if *fm_if,
+ u32 high_water, u32 low_water, u32 bpid);
+
/* Get Flow Control pause quanta on specific interface */
int fman_if_get_fc_quanta(struct fman_if *fm_if);
--
2.7.4
More information about the dev
mailing list