diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-07-13 08:31:46 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-23 09:24:07 +0200 |
commit | de5791b34591b88911c350d835d8b45d274cc852 (patch) | |
tree | 20fda544699545de464a9ffcf5ad5716208c0b4a /linux/drivers/soc/fsl/qbman/qman.c | |
parent | dpaa: Add "libbsd,dequeue" to QMan portals (diff) | |
download | rtems-libbsd-de5791b34591b88911c350d835d8b45d274cc852.tar.bz2 |
dpaa: Add "libbsd,dedicated-portal" to QMan portals
By default, the network interfaces use a pool channel, see
dpaa_get_channel() in dpaa_eth_priv_probe(). To enable a dedicated QMan
software portal, use libbsd,dedicated-portal = "enabled";. This option
is useful for special purpose 10Gbit/s Ethernet processing.
/ {
soc: soc@ffe000000 {
fman0: fman@400000 {
enet7: ethernet@f2000 {
libbsd,dedicated-portal = "enabled";
};
};
};
};
Diffstat (limited to 'linux/drivers/soc/fsl/qbman/qman.c')
-rw-r--r-- | linux/drivers/soc/fsl/qbman/qman.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/linux/drivers/soc/fsl/qbman/qman.c b/linux/drivers/soc/fsl/qbman/qman.c index acb3a1d9..73e1f09d 100644 --- a/linux/drivers/soc/fsl/qbman/qman.c +++ b/linux/drivers/soc/fsl/qbman/qman.c @@ -1281,6 +1281,49 @@ fail_dqrr: fail_eqcr: return -EIO; } +#ifdef __rtems__ +int +qman_portal_get_channel(const struct qman_portal *portal) +{ + + if (portal == NULL) { + return (-1); + } + + return (portal->config->channel); +} + +int +qman_portal_get_irq(const struct qman_portal *portal) +{ + + if (portal == NULL) { + return (-1); + } + + return (portal->config->irq); +} + +struct qman_portal * +qman_create_dedicated_portal(const struct qm_portal_config *c, + const struct qman_cgrs *cgrs) +{ + struct qman_portal *portal; + int err; + + portal = kmalloc(sizeof(*portal), GFP_KERNEL); + if (portal == NULL) + return (NULL); + + err = qman_create_portal(portal, c, cgrs); + if (err != 0) { + kfree(portal); + return (NULL); + } + + return (portal); +} +#endif /* __rtems__ */ struct qman_portal *qman_create_affine_portal(const struct qm_portal_config *c, const struct qman_cgrs *cgrs) |