]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: enetc: replace PCVLANR1/2 with SICVLANR1/2 and remove dead branch
authorWei Fang <wei.fang@nxp.com>
Fri, 13 Jun 2025 09:36:05 +0000 (17:36 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 17 Jun 2025 10:24:18 +0000 (12:24 +0200)
Both PF and VF have rx-vlan-offload enabled, however, the PCVLANR1/2
registers are resources controlled by PF, so VF cannot access these
two registers. Fortunately, the hardware provides SICVLANR1/2 registers
for each SI to reflect the value of PCVLANR1/2 registers. Therefore,
use SICVLANR1/2 instead of PCVLANR1/2. Note that this is not an issue
in actual use, because the current driver does not support custom TPID,
the driver will not access these two registers in actual use, so this
modification is just an optimization.

In addition, since ENETC_RXBD_FLAG_TPID is defined as GENMASK(1, 0),
the possible values are only 0, 1, 2, 3, so the default branch will
never be true, so remove the default branch.

Signed-off-by: Wei Fang <wei.fang@nxp.com>
Link: https://patch.msgid.link/20250613093605.39277-1-wei.fang@nxp.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/freescale/enetc/enetc.c
drivers/net/ethernet/freescale/enetc/enetc_hw.h

index dcc3fbac3481fa3790226d6f217f69742564e5fb..e4287725832e0c4f85bacb10980f672c0115e317 100644 (file)
@@ -1375,6 +1375,7 @@ static void enetc_get_offloads(struct enetc_bdr *rx_ring,
        }
 
        if (le16_to_cpu(rxbd->r.flags) & ENETC_RXBD_FLAG_VLAN) {
+               struct enetc_hw *hw = &priv->si->hw;
                __be16 tpid = 0;
 
                switch (le16_to_cpu(rxbd->r.flags) & ENETC_RXBD_FLAG_TPID) {
@@ -1385,15 +1386,12 @@ static void enetc_get_offloads(struct enetc_bdr *rx_ring,
                        tpid = htons(ETH_P_8021AD);
                        break;
                case 2:
-                       tpid = htons(enetc_port_rd(&priv->si->hw,
-                                                  ENETC_PCVLANR1));
+                       tpid = htons(enetc_rd_hot(hw, ENETC_SICVLANR1) &
+                                    SICVLANR_ETYPE);
                        break;
                case 3:
-                       tpid = htons(enetc_port_rd(&priv->si->hw,
-                                                  ENETC_PCVLANR2));
-                       break;
-               default:
-                       break;
+                       tpid = htons(enetc_rd_hot(hw, ENETC_SICVLANR2) &
+                                    SICVLANR_ETYPE);
                }
 
                __vlan_hwaccel_put_tag(skb, tpid, le16_to_cpu(rxbd->r.vlan_opt));
index 4098f01479bc0afc39c4dc8cc9938f5dbc8ac997..cb26f185f52fda5fffc2dec4ced2ed75415b721f 100644 (file)
@@ -43,6 +43,9 @@
 
 #define ENETC_SIPMAR0  0x80
 #define ENETC_SIPMAR1  0x84
+#define ENETC_SICVLANR1        0x90
+#define ENETC_SICVLANR2        0x94
+#define  SICVLANR_ETYPE        GENMASK(15, 0)
 
 /* VF-PF Message passing */
 #define ENETC_DEFAULT_MSG_SIZE 1024    /* and max size */