From: Vladimir Oltean <vladimir.olt...@nxp.com>

Because felix DSA must now be able to extract a frame in 2 stages over
MMIO (first the XFH then the frame data), it needs access to this
internal ocelot structure that holds the unpacked information from the
Extraction Frame Header.

Signed-off-by: Vladimir Oltean <vladimir.olt...@nxp.com>
---
Changes in v4:
None.

Changes in v3:
None.

Changes in v2:
Patch is new.

 drivers/net/ethernet/mscc/ocelot.c         | 4 ++--
 drivers/net/ethernet/mscc/ocelot.h         | 9 ---------
 drivers/net/ethernet/mscc/ocelot_vsc7514.c | 4 ++--
 include/soc/mscc/ocelot.h                  | 9 +++++++++
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/mscc/ocelot.c 
b/drivers/net/ethernet/mscc/ocelot.c
index 506a997be8e7..adebec0be684 100644
--- a/drivers/net/ethernet/mscc/ocelot.c
+++ b/drivers/net/ethernet/mscc/ocelot.c
@@ -571,7 +571,7 @@ EXPORT_SYMBOL(ocelot_get_txtstamp);
  * bit 16: tag type 0: C-tag, 1: S-tag
  * bit 0-11: VID
  */
-static int ocelot_gen_ifh(u32 *ifh, struct frame_info *info)
+static int ocelot_gen_ifh(u32 *ifh, struct ocelot_frame_info *info)
 {
        ifh[0] = IFH_INJ_BYPASS | ((0x1ff & info->rew_op) << 21);
        ifh[1] = (0xf00 & info->port) >> 8;
@@ -597,7 +597,7 @@ EXPORT_SYMBOL(ocelot_can_inject);
 void ocelot_port_inject_frame(struct ocelot *ocelot, int port, int grp,
                              u32 rew_op, struct sk_buff *skb)
 {
-       struct frame_info info = {};
+       struct ocelot_frame_info info = {};
        u32 ifh[OCELOT_TAG_LEN / 4];
        unsigned int i, count, last;
 
diff --git a/drivers/net/ethernet/mscc/ocelot.h 
b/drivers/net/ethernet/mscc/ocelot.h
index e8621dbc14f7..4585e5c5d9cb 100644
--- a/drivers/net/ethernet/mscc/ocelot.h
+++ b/drivers/net/ethernet/mscc/ocelot.h
@@ -32,15 +32,6 @@
 
 #define OCELOT_PTP_QUEUE_SZ    128
 
-struct frame_info {
-       u32 len;
-       u16 port;
-       u16 vid;
-       u8 tag_type;
-       u16 rew_op;
-       u32 timestamp;  /* rew_val */
-};
-
 struct ocelot_port_tc {
        bool block_shared;
        unsigned long offload_cnt;
diff --git a/drivers/net/ethernet/mscc/ocelot_vsc7514.c 
b/drivers/net/ethernet/mscc/ocelot_vsc7514.c
index 4bd3b59eba1b..f07170ce76d9 100644
--- a/drivers/net/ethernet/mscc/ocelot_vsc7514.c
+++ b/drivers/net/ethernet/mscc/ocelot_vsc7514.c
@@ -532,7 +532,7 @@ static int ocelot_chip_init(struct ocelot *ocelot, const 
struct ocelot_ops *ops)
        return 0;
 }
 
-static int ocelot_parse_ifh(u32 *_ifh, struct frame_info *info)
+static int ocelot_parse_ifh(u32 *_ifh, struct ocelot_frame_info *info)
 {
        u8 llen, wlen;
        u64 ifh[2];
@@ -606,10 +606,10 @@ static irqreturn_t ocelot_xtr_irq_handler(int irq, void 
*arg)
 
        while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp)) {
                struct skb_shared_hwtstamps *shhwtstamps;
+               struct ocelot_frame_info info = {};
                struct ocelot_port_private *priv;
                struct ocelot_port *ocelot_port;
                u64 tod_in_ns, full_ts_in_ns;
-               struct frame_info info = {};
                struct net_device *dev;
                u32 ifh[4], val, *buf;
                struct timespec64 ts;
diff --git a/include/soc/mscc/ocelot.h b/include/soc/mscc/ocelot.h
index eb81d05da134..d7169c56a64a 100644
--- a/include/soc/mscc/ocelot.h
+++ b/include/soc/mscc/ocelot.h
@@ -688,6 +688,15 @@ struct ocelot_policer {
        u32 burst; /* bytes */
 };
 
+struct ocelot_frame_info {
+       u32 len;
+       u16 port;
+       u16 vid;
+       u8 tag_type;
+       u16 rew_op;
+       u32 timestamp;  /* rew_val */
+};
+
 #define ocelot_read_ix(ocelot, reg, gi, ri) __ocelot_read_ix(ocelot, reg, 
reg##_GSZ * (gi) + reg##_RSZ * (ri))
 #define ocelot_read_gix(ocelot, reg, gi) __ocelot_read_ix(ocelot, reg, 
reg##_GSZ * (gi))
 #define ocelot_read_rix(ocelot, reg, ri) __ocelot_read_ix(ocelot, reg, 
reg##_RSZ * (ri))
-- 
2.25.1

Reply via email to