diff options
author | Mandy Lavi <mandy.lavi@freescale.com> | 2015-11-19 05:18:04 (GMT) |
---|---|---|
committer | Mandy Lavi <mandy.lavi@freescale.com> | 2015-11-24 07:50:40 (GMT) |
commit | b242e9c35ae998f1f732deff174c4513a5f34ad1 (patch) | |
tree | 9dc0467cb84d5be6c9dbddc24e1dbd036d633f9e /drivers/net/ethernet/freescale/fman/src/wrapper | |
parent | fd8e7c71bf30389a5145efc9d088775e0f22402c (diff) | |
download | linux-fsl-qoriq-b242e9c35ae998f1f732deff174c4513a5f34ad1.tar.xz |
fmd: Add support for IPF after HMan
fmd: change cc owners attribute from uint8 to unit16
fmd: change manip owner attribute from uint8 to unit16
fmd: add risc load monitor in sysfs
fmd: Fix modification of nodes pointed by HM
fmd: add missing fields in pcd_manip_hdr_insrt_ip
Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/src/wrapper')
3 files changed, 54 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.h b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.h index 05202a2..95e382c 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.h +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_fm.h @@ -234,6 +234,7 @@ typedef struct { struct class *fm_class; struct device_attribute *dev_attr_stats; struct device_attribute *dev_attr_regs; + struct device_attribute *dev_attr_risc_load; struct device_attribute *dev_pcd_attr_stats; struct device_attribute *dev_plcr_attr_regs; diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h index 3b6fb59..af158e9 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h @@ -429,6 +429,13 @@ typedef struct ioc_compat_fm_pcd_manip_hdr_insrt_ip_params_t { uint8_t last_pid_offset; /**< the offset of the last Protocol within the inserted header */ uint16_t id; /**< 16 bit New IP ID */ + bool dont_frag_overwrite; + /**< IPv4 only. DF is overwritten with the hash-result next-to-last byte. + * This byte is configured to be overwritten when RPD is set. */ + uint8_t last_dst_offset; + /**< IPv6 only. if routing extension exist, user should set the offset of the destination address + * in order to calculate UDP checksum pseudo header; + * Otherwise set it to '0'. */ ioc_compat_fm_pcd_manip_hdr_insrt_t insrt; /**< size and data to be inserted. */ } ioc_compat_fm_pcd_manip_hdr_insrt_ip_params_t; #endif /* (DPAA_VERSION >= 11) */ diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm.c index dd3bc3e..3545634 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm.c @@ -44,6 +44,7 @@ #endif #include "../../fman/Peripherals/FM/fm.h" +#include <linux/delay.h> static int fm_get_counter(void *h_fm, e_FmCounters cnt_e, uint32_t *cnt_val); @@ -225,6 +226,46 @@ static const struct sysfs_stats_t fm_sysfs_stats[] = { }; +static ssize_t show_fm_risc_load(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmDev *p_wrp_fm_dev = NULL; + unsigned long flags; + int m =0; + int err =0; + unsigned n = 0; + t_FmCtrlMon util; + uint8_t i =0 ; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_wrp_fm_dev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_wrp_fm_dev == NULL)) + return -EINVAL; + + if (!p_wrp_fm_dev->active || !p_wrp_fm_dev->h_Dev) + return -EIO; + + local_irq_save(flags); + + /* Calculate risc load */ + FM_CtrlMonStart(p_wrp_fm_dev->h_Dev); + msleep(1000); + FM_CtrlMonStop(p_wrp_fm_dev->h_Dev); + + for (i = 0; i < FM_NUM_OF_CTRL; i++) { + err |= FM_CtrlMonGetCounters(p_wrp_fm_dev->h_Dev, i, &util); + m = snprintf(&buf[n],PAGE_SIZE,"\tRisc%u: util-%u%%, efficiency-%u%%\n", + i, util.percentCnt[0], util.percentCnt[1]); + n=m+n; + } + + local_irq_restore(flags); + + return n; +} + /* Fm stats and regs dumps via sysfs */ static ssize_t show_fm_dma_stats(struct device *dev, struct device_attribute *attr, char *buf) @@ -598,6 +639,7 @@ static ssize_t show_fm_schemes(struct device *dev, /* FM */ static DEVICE_ATTR(enq_total_frame, S_IRUGO, show_fm_stats, NULL); static DEVICE_ATTR(deq_total_frame, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(fm_risc_load_val, S_IRUGO, show_fm_risc_load, NULL); static DEVICE_ATTR(deq_0, S_IRUGO, show_fm_stats, NULL); static DEVICE_ATTR(deq_1, S_IRUGO, show_fm_stats, NULL); static DEVICE_ATTR(deq_2, S_IRUGO, show_fm_stats, NULL); @@ -1211,6 +1253,7 @@ int fm_sysfs_create(struct device *dev) /* store to remove them when module is disabled */ p_wrp_fm_dev->dev_attr_regs = &dev_attr_fm_regs; + p_wrp_fm_dev->dev_attr_risc_load = &dev_attr_fm_risc_load_val; p_wrp_fm_dev->dev_fm_fpm_attr_regs = &dev_attr_fm_fpm_regs; p_wrp_fm_dev->dev_fm_kg_attr_regs = &dev_attr_fm_kg_regs; p_wrp_fm_dev->dev_fm_kg_pe_attr_regs = &dev_attr_fm_kg_pe_regs; @@ -1239,6 +1282,9 @@ int fm_sysfs_create(struct device *dev) if (device_create_file(dev, &dev_attr_fm_regs) != 0) return -EIO; + if (device_create_file(dev, &dev_attr_fm_risc_load_val) != 0) + return -EIO; + if (device_create_file(dev, &dev_attr_fm_fpm_regs) != 0) return -EIO; |