net: dsa: sja1105: remove hwts_tx_en from tagger data
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 9 Dec 2021 23:34:41 +0000 (01:34 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 12 Dec 2021 12:51:33 +0000 (12:51 +0000)
This tagger property is in fact not used at all by the tagger, only by
the switch driver. Therefore it makes sense to be moved to
sja1105_private.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/sja1105/sja1105.h
drivers/net/dsa/sja1105/sja1105_ptp.c
include/linux/dsa/sja1105.h

index 21dba16af09793ad19a26dc285ff65ab3660fef2..b0612c763ec0a8cd2ac6538871c004ab53d7e192 100644 (file)
@@ -249,6 +249,7 @@ struct sja1105_private {
        bool fixed_link[SJA1105_MAX_NUM_PORTS];
        unsigned long ucast_egress_floods;
        unsigned long bcast_egress_floods;
+       unsigned long hwts_tx_en;
        const struct sja1105_info *info;
        size_t max_xfer_len;
        struct spi_device *spidev;
index 54396992a9199c39b1abcabced620e5c6b4e9c58..b97bd4d948f59943ecb5bd63dcada823c4773713 100644 (file)
@@ -98,10 +98,10 @@ int sja1105_hwtstamp_set(struct dsa_switch *ds, int port, struct ifreq *ifr)
 
        switch (config.tx_type) {
        case HWTSTAMP_TX_OFF:
-               priv->ports[port].hwts_tx_en = false;
+               priv->hwts_tx_en &= ~BIT(port);
                break;
        case HWTSTAMP_TX_ON:
-               priv->ports[port].hwts_tx_en = true;
+               priv->hwts_tx_en |= BIT(port);
                break;
        default:
                return -ERANGE;
@@ -140,7 +140,7 @@ int sja1105_hwtstamp_get(struct dsa_switch *ds, int port, struct ifreq *ifr)
        struct hwtstamp_config config;
 
        config.flags = 0;
-       if (priv->ports[port].hwts_tx_en)
+       if (priv->hwts_tx_en & BIT(port))
                config.tx_type = HWTSTAMP_TX_ON;
        else
                config.tx_type = HWTSTAMP_TX_OFF;
@@ -486,10 +486,9 @@ void sja1110_txtstamp(struct dsa_switch *ds, int port, struct sk_buff *skb)
 void sja1105_port_txtstamp(struct dsa_switch *ds, int port, struct sk_buff *skb)
 {
        struct sja1105_private *priv = ds->priv;
-       struct sja1105_port *sp = &priv->ports[port];
        struct sk_buff *clone;
 
-       if (!sp->hwts_tx_en)
+       if (!(priv->hwts_tx_en & BIT(port)))
                return;
 
        clone = skb_clone_sk(skb);
index acd9d2afccabe298ce84ac8fb2cbf908db8a5259..32a8a1344cf696aef4bca0557753ac3482f82079 100644 (file)
@@ -74,7 +74,6 @@ struct sja1105_skb_cb {
 
 struct sja1105_port {
        struct sja1105_tagger_data *data;
-       bool hwts_tx_en;
 };
 
 /* Timestamps are in units of 8 ns clock ticks (equivalent to