aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/701-net-0200-dpaa2-eth-Enable-Rx-PFC.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0200-dpaa2-eth-Enable-Rx-PFC.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/701-net-0200-dpaa2-eth-Enable-Rx-PFC.patch86
1 files changed, 0 insertions, 86 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0200-dpaa2-eth-Enable-Rx-PFC.patch b/target/linux/layerscape/patches-5.4/701-net-0200-dpaa2-eth-Enable-Rx-PFC.patch
deleted file mode 100644
index 4396f2ea8e..0000000000
--- a/target/linux/layerscape/patches-5.4/701-net-0200-dpaa2-eth-Enable-Rx-PFC.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 7a342f60e569047e1632f6af91f503993769a2ec Mon Sep 17 00:00:00 2001
-From: Ioana Radulescu <ruxandra.radulescu@nxp.com>
-Date: Tue, 17 Sep 2019 19:51:15 +0300
-Subject: [PATCH] dpaa2-eth: Enable Rx PFC
-
-Instruct the hardware to respond to received PFC frames.
-
-Current firmware doesn't allow us to selectively enable PFC
-on the Rx side for some priorities only, so we will react to
-all incoming PFC frames (and stop transmitting on the traffic
-classes specified in the frame).
-
-PFC depends on the PAUSE flag also being set in link options.
-Don't set it implicitly when user configures PFC, but issue
-a warning if the two settings are not in sync.
-
-For the Tx side, setting the PFC_PAUSE flag in the link options
-is necessary but not sufficient, so PFC frame generation is
-not enabled yet.
-
-Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
----
- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 23 +++++++++++++++++++++++
- drivers/net/ethernet/freescale/dpaa2/dpni.h | 5 +++++
- 2 files changed, 28 insertions(+)
-
---- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
-+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
-@@ -3620,6 +3620,9 @@ static int dpaa2_eth_dcbnl_ieee_getpfc(s
- {
- struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
-
-+ if (!(priv->link_state.options & DPNI_LINK_OPT_PFC_PAUSE))
-+ return 0;
-+
- memcpy(pfc, &priv->pfc, sizeof(priv->pfc));
- pfc->pfc_cap = dpaa2_eth_tc_count(priv);
-
-@@ -3630,6 +3633,8 @@ static int dpaa2_eth_dcbnl_ieee_setpfc(s
- struct ieee_pfc *pfc)
- {
- struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
-+ struct dpni_link_cfg link_cfg = {0};
-+ int err;
-
- if (pfc->mbc || pfc->delay)
- return -EOPNOTSUPP;
-@@ -3638,6 +3643,24 @@ static int dpaa2_eth_dcbnl_ieee_setpfc(s
- if (priv->pfc.pfc_en == pfc->pfc_en)
- return 0;
-
-+ /* We allow PFC configuration even if it won't have any effect until
-+ * general pause frames are enabled
-+ */
-+ if (!dpaa2_eth_rx_pause_enabled(priv->link_state.options))
-+ netdev_warn(net_dev, "Pause support must be enabled in order for PFC to work!\n");
-+
-+ link_cfg.rate = priv->link_state.rate;
-+ link_cfg.options = priv->link_state.options;
-+ if (pfc->pfc_en)
-+ link_cfg.options |= DPNI_LINK_OPT_PFC_PAUSE;
-+ else
-+ link_cfg.options &= ~DPNI_LINK_OPT_PFC_PAUSE;
-+ err = dpni_set_link_cfg(priv->mc_io, 0, priv->mc_token, &link_cfg);
-+ if (err) {
-+ netdev_err(net_dev, "dpni_set_link_cfg failed\n");
-+ return err;
-+ }
-+
- memcpy(&priv->pfc, pfc, sizeof(priv->pfc));
-
- return 0;
---- a/drivers/net/ethernet/freescale/dpaa2/dpni.h
-+++ b/drivers/net/ethernet/freescale/dpaa2/dpni.h
-@@ -514,6 +514,11 @@ int dpni_get_statistics(struct fsl_mc_io
- #define DPNI_LINK_OPT_ASYM_PAUSE 0x0000000000000008ULL
-
- /**
-+ * Enable priority flow control pause frames
-+ */
-+#define DPNI_LINK_OPT_PFC_PAUSE 0x0000000000000010ULL
-+
-+/**
- * struct - Structure representing DPNI link configuration
- * @rate: Rate
- * @options: Mask of available options; use 'DPNI_LINK_OPT_<X>' values