From: Vladimir Oltean <olteanv@gmail.com>
To: f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch,
davem@davemloft.net
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
georg.waibel@sensor-technik.de,
Vladimir Oltean <olteanv@gmail.com>
Subject: [PATCH v2 net-next 20/22] net: dsa: sja1105: Reject unsupported link modes for AN
Date: Wed, 10 Apr 2019 03:56:58 +0300 [thread overview]
Message-ID: <20190410005700.31582-21-olteanv@gmail.com> (raw)
In-Reply-To: <20190410005700.31582-1-olteanv@gmail.com>
Ethernet flow control:
The switch MAC does not consume, nor does it emit pause frames. It
simply forwards them as any other Ethernet frame (and since the DMAC is,
per IEEE spec, 01-80-C2-00-00-01, it means they are filtered as
link-local traffic and forwarded to the CPU, which can't do anything
useful with them).
Duplex:
There is no duplex setting in the SJA1105 MAC. It is known to forward
traffic at line rate on the same port in both directions. Therefore it
must be that it only supports full duplex.
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
---
Changes in v2:
Patch is new.
drivers/net/dsa/sja1105/sja1105_main.c | 31 ++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
index 04fdca788a87..6dca2036f910 100644
--- a/drivers/net/dsa/sja1105/sja1105_main.c
+++ b/drivers/net/dsa/sja1105/sja1105_main.c
@@ -11,6 +11,7 @@
#include <linux/spi/spi.h>
#include <linux/errno.h>
#include <linux/gpio/consumer.h>
+#include <linux/phylink.h>
#include <linux/of.h>
#include <linux/of_net.h>
#include <linux/of_mdio.h>
@@ -747,6 +748,35 @@ static void sja1105_adjust_link(struct dsa_switch *ds, int port,
sja1105_adjust_port_config(priv, port, phydev->speed, true);
}
+static void sja1105_phylink_validate(struct dsa_switch *ds, int port,
+ unsigned long *supported,
+ struct phylink_link_state *state)
+{
+ /* Construct a new mask which exhaustively contains all link features
+ * supported by the MAC, and then apply that (logical AND) to what will
+ * be sent to the PHY for "marketing".
+ */
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
+ struct sja1105_private *priv = ds->priv;
+ struct sja1105_xmii_params_entry *mii;
+
+ mii = priv->static_config.tables[BLK_IDX_XMII_PARAMS].entries;
+
+ /* The MAC does not support pause frames, and also doesn't
+ * support half-duplex traffic modes.
+ */
+ phylink_set(mask, Autoneg);
+ phylink_set(mask, MII);
+ phylink_set(mask, 10baseT_Full);
+ phylink_set(mask, 100baseT_Full);
+ if (mii->xmii_mode[port] == XMII_MODE_RGMII)
+ phylink_set(mask, 1000baseT_Full);
+
+ bitmap_and(supported, supported, mask, __ETHTOOL_LINK_MODE_MASK_NBITS);
+ bitmap_and(state->advertising, state->advertising, mask,
+ __ETHTOOL_LINK_MODE_MASK_NBITS);
+}
+
#define fdb(bin, index) \
((bin) * SJA1105ET_FDB_BIN_SIZE + (index))
#define is_bin_index_valid(i) \
@@ -1482,6 +1512,7 @@ static const struct dsa_switch_ops sja1105_switch_ops = {
.get_tag_protocol = sja1105_get_tag_protocol,
.setup = sja1105_setup,
.adjust_link = sja1105_adjust_link,
+ .phylink_validate = sja1105_phylink_validate,
.get_strings = sja1105_get_strings,
.get_ethtool_stats = sja1105_get_ethtool_stats,
.get_sset_count = sja1105_get_sset_count,
--
2.17.1
next prev parent reply other threads:[~2019-04-10 0:57 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-10 0:56 [PATCH v2 net-next 00/22] NXP SJA1105 DSA driver Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 01/22] lib: Add support for generic packing operations Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 02/22] net: dsa: Fix pharse -> phase typo Vladimir Oltean
2019-04-10 1:57 ` Florian Fainelli
2019-04-10 0:56 ` [PATCH v2 net-next 03/22] net: dsa: Store vlan_filtering as a property of dsa_port Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 04/22] net: dsa: mt7530: Use vlan_filtering property from dsa_port Vladimir Oltean
2019-04-10 1:57 ` Florian Fainelli
2019-04-10 0:56 ` [PATCH v2 net-next 05/22] net: dsa: Add more convenient functions for installing port VLANs Vladimir Oltean
2019-04-10 2:01 ` Florian Fainelli
2019-04-10 20:15 ` Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 06/22] net: dsa: Call driver's setup callback after setting up its switchdev notifier Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 07/22] ether: Add dedicated Ethertype for pseudo-802.1Q DSA tagging Vladimir Oltean
2019-04-10 2:04 ` Florian Fainelli
2019-04-10 21:31 ` Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 08/22] net: dsa: Optional VLAN-based port separation for switches without tagging Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 09/22] net: dsa: Be aware of switches where VLAN filtering is a global setting Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 10/22] net: dsa: b53: Let DSA handle mismatched VLAN filtering settings Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 11/22] net: dsa: Allow drivers to modulate between presence and absence of tagging Vladimir Oltean
2019-04-10 2:17 ` Florian Fainelli
2019-04-10 21:52 ` Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 12/22] net: dsa: Introduce driver for NXP SJA1105 5-port L2 switch Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 13/22] net: dsa: sja1105: Add support for FDB and MDB management Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 14/22] net: dsa: sja1105: Add support for VLAN operations Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 15/22] net: dsa: sja1105: Add support for ethtool port counters Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 16/22] net: dsa: sja1105: Add support for traffic through standalone ports Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 17/22] net: dsa: sja1105: Add support for Spanning Tree Protocol Vladimir Oltean
2019-04-10 0:56 ` [PATCH v2 net-next 18/22] net: dsa: sja1105: Error out if RGMII delays are requested in DT Vladimir Oltean
2019-04-10 2:15 ` Florian Fainelli
2019-04-10 0:56 ` [PATCH v2 net-next 19/22] net: dsa: sja1105: Prevent PHY jabbering during switch reset Vladimir Oltean
2019-04-10 0:56 ` Vladimir Oltean [this message]
2019-04-10 2:09 ` [PATCH v2 net-next 20/22] net: dsa: sja1105: Reject unsupported link modes for AN Florian Fainelli
2019-04-10 0:56 ` [PATCH v2 net-next 21/22] Documentation: networking: dsa: Add details about NXP SJA1105 driver Vladimir Oltean
2019-04-10 0:57 ` [PATCH v2 net-next 22/22] dt-bindings: net: dsa: Add documentation for " Vladimir Oltean
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190410005700.31582-21-olteanv@gmail.com \
--to=olteanv@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=georg.waibel@sensor-technik.de \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=vivien.didelot@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®