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/net/ethernet/freescale/dpaa/dpaa_eth.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/net/ethernet/freescale/dpaa/dpaa_eth.c')
-rw-r--r-- | linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index c2e9b378..3861420e 100644 --- a/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -3078,6 +3078,17 @@ dpaa_eth_priv_probe(struct platform_device *pdev, struct mac_device *mac_dev) priv->mac_dev = mac_dev; +#ifdef __rtems__ + if (mac_dev->use_dedicated_portal) { + struct qman_portal *portal; + + portal = qman_get_dedicated_portal(0); + BSD_ASSERT(portal != NULL); + mac_dev->portal = portal; + channel = qman_portal_get_channel(portal); + priv->channel = (u16)channel; + } else { +#endif /* __rtems__ */ channel = dpaa_get_channel(); if (channel < 0) { dev_err(dev, "dpaa_get_channel() failed\n"); @@ -3091,6 +3102,9 @@ dpaa_eth_priv_probe(struct platform_device *pdev, struct mac_device *mac_dev) * and add this pool channel to each's dequeue mask. */ dpaa_eth_add_channel(priv->channel); +#ifdef __rtems__ + } +#endif /* __rtems__ */ dpaa_fq_setup(priv, &dpaa_fq_cbs, priv->mac_dev->port[TX]); |