diff options
author | Yangbo Lu <yangbo.lu@nxp.com> | 2020-04-10 10:47:05 +0800 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-05-07 12:53:06 +0200 |
commit | cddd4591404fb4c53dc0b3c0b15b942cdbed4356 (patch) | |
tree | 392c1179de46b0f804e3789edca19069b64e6b44 /target/linux/layerscape/patches-5.4/701-net-0245-net-mscc-ocelot-refactor-ethtool-callbacks.patch | |
parent | d1d2c0b5579ea4f69a42246c9318539d61ba1999 (diff) | |
download | upstream-cddd4591404fb4c53dc0b3c0b15b942cdbed4356.tar.gz upstream-cddd4591404fb4c53dc0b3c0b15b942cdbed4356.tar.bz2 upstream-cddd4591404fb4c53dc0b3c0b15b942cdbed4356.zip |
layerscape: add patches-5.4
Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release
which was tagged LSDK-20.04-V5.4.
https://source.codeaurora.org/external/qoriq/qoriq-components/linux/
For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in
LSDK, port the dts patches from 4.14.
The patches are sorted into the following categories:
301-arch-xxxx
302-dts-xxxx
303-core-xxxx
701-net-xxxx
801-audio-xxxx
802-can-xxxx
803-clock-xxxx
804-crypto-xxxx
805-display-xxxx
806-dma-xxxx
807-gpio-xxxx
808-i2c-xxxx
809-jailhouse-xxxx
810-keys-xxxx
811-kvm-xxxx
812-pcie-xxxx
813-pm-xxxx
814-qe-xxxx
815-sata-xxxx
816-sdhc-xxxx
817-spi-xxxx
818-thermal-xxxx
819-uart-xxxx
820-usb-xxxx
821-vfio-xxxx
Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0245-net-mscc-ocelot-refactor-ethtool-callbacks.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0245-net-mscc-ocelot-refactor-ethtool-callbacks.patch | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0245-net-mscc-ocelot-refactor-ethtool-callbacks.patch b/target/linux/layerscape/patches-5.4/701-net-0245-net-mscc-ocelot-refactor-ethtool-callbacks.patch new file mode 100644 index 0000000000..655f60b6d9 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/701-net-0245-net-mscc-ocelot-refactor-ethtool-callbacks.patch @@ -0,0 +1,133 @@ +From a155893c9c272b2ed1dc3b236d55ca8f651a6ea1 Mon Sep 17 00:00:00 2001 +From: Vladimir Oltean <vladimir.oltean@nxp.com> +Date: Sat, 9 Nov 2019 15:02:54 +0200 +Subject: [PATCH] net: mscc: ocelot: refactor ethtool callbacks + +Convert them into an implementation that can be called from DSA as well. + +Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +--- + drivers/net/ethernet/mscc/ocelot.c | 64 ++++++++++++++++++++++++++++---------- + 1 file changed, 47 insertions(+), 17 deletions(-) + +--- a/drivers/net/ethernet/mscc/ocelot.c ++++ b/drivers/net/ethernet/mscc/ocelot.c +@@ -1191,10 +1191,9 @@ static const struct net_device_ops ocelo + .ndo_do_ioctl = ocelot_ioctl, + }; + +-static void ocelot_get_strings(struct net_device *netdev, u32 sset, u8 *data) ++static void ocelot_get_strings(struct ocelot *ocelot, int port, u32 sset, ++ u8 *data) + { +- struct ocelot_port_private *priv = netdev_priv(netdev); +- struct ocelot *ocelot = priv->port.ocelot; + int i; + + if (sset != ETH_SS_STATS) +@@ -1205,6 +1204,16 @@ static void ocelot_get_strings(struct ne + ETH_GSTRING_LEN); + } + ++static void ocelot_port_get_strings(struct net_device *netdev, u32 sset, ++ u8 *data) ++{ ++ struct ocelot_port_private *priv = netdev_priv(netdev); ++ struct ocelot *ocelot = priv->port.ocelot; ++ int port = priv->chip_port; ++ ++ ocelot_get_strings(ocelot, port, sset, data); ++} ++ + static void ocelot_update_stats(struct ocelot *ocelot) + { + int i, j; +@@ -1245,12 +1254,8 @@ static void ocelot_check_stats_work(stru + OCELOT_STATS_CHECK_DELAY); + } + +-static void ocelot_get_ethtool_stats(struct net_device *dev, +- struct ethtool_stats *stats, u64 *data) ++static void ocelot_get_ethtool_stats(struct ocelot *ocelot, int port, u64 *data) + { +- struct ocelot_port_private *priv = netdev_priv(dev); +- struct ocelot *ocelot = priv->port.ocelot; +- int port = priv->chip_port; + int i; + + /* check and update now */ +@@ -1261,25 +1266,37 @@ static void ocelot_get_ethtool_stats(str + *data++ = ocelot->stats[port * ocelot->num_stats + i]; + } + +-static int ocelot_get_sset_count(struct net_device *dev, int sset) ++static void ocelot_port_get_ethtool_stats(struct net_device *dev, ++ struct ethtool_stats *stats, ++ u64 *data) + { + struct ocelot_port_private *priv = netdev_priv(dev); + struct ocelot *ocelot = priv->port.ocelot; ++ int port = priv->chip_port; + ++ ocelot_get_ethtool_stats(ocelot, port, data); ++} ++ ++static int ocelot_get_sset_count(struct ocelot *ocelot, int port, int sset) ++{ + if (sset != ETH_SS_STATS) + return -EOPNOTSUPP; ++ + return ocelot->num_stats; + } + +-static int ocelot_get_ts_info(struct net_device *dev, +- struct ethtool_ts_info *info) ++static int ocelot_port_get_sset_count(struct net_device *dev, int sset) + { + struct ocelot_port_private *priv = netdev_priv(dev); + struct ocelot *ocelot = priv->port.ocelot; ++ int port = priv->chip_port; + +- if (!ocelot->ptp) +- return ethtool_op_get_ts_info(dev, info); ++ return ocelot_get_sset_count(ocelot, port, sset); ++} + ++static int ocelot_get_ts_info(struct ocelot *ocelot, int port, ++ struct ethtool_ts_info *info) ++{ + info->phc_index = ocelot->ptp_clock ? + ptp_clock_index(ocelot->ptp_clock) : -1; + info->so_timestamping |= SOF_TIMESTAMPING_TX_SOFTWARE | +@@ -1295,13 +1312,26 @@ static int ocelot_get_ts_info(struct net + return 0; + } + ++static int ocelot_port_get_ts_info(struct net_device *dev, ++ struct ethtool_ts_info *info) ++{ ++ struct ocelot_port_private *priv = netdev_priv(dev); ++ struct ocelot *ocelot = priv->port.ocelot; ++ int port = priv->chip_port; ++ ++ if (!ocelot->ptp) ++ return ethtool_op_get_ts_info(dev, info); ++ ++ return ocelot_get_ts_info(ocelot, port, info); ++} ++ + static const struct ethtool_ops ocelot_ethtool_ops = { +- .get_strings = ocelot_get_strings, +- .get_ethtool_stats = ocelot_get_ethtool_stats, +- .get_sset_count = ocelot_get_sset_count, ++ .get_strings = ocelot_port_get_strings, ++ .get_ethtool_stats = ocelot_port_get_ethtool_stats, ++ .get_sset_count = ocelot_port_get_sset_count, + .get_link_ksettings = phy_ethtool_get_link_ksettings, + .set_link_ksettings = phy_ethtool_set_link_ksettings, +- .get_ts_info = ocelot_get_ts_info, ++ .get_ts_info = ocelot_port_get_ts_info, + }; + + static void ocelot_bridge_stp_state_set(struct ocelot *ocelot, int port, |