#define MCSX_PEX_TX_SLAVE_VLAN_CFGX(a)          (0x46f8ull + (a) * 0x8ull)
 #define MCSX_PEX_TX_SLAVE_CUSTOM_TAG_REL_MODE_SEL(a)   (0x788ull + (a) * 0x8ull)
 #define MCSX_PEX_TX_SLAVE_PORT_CONFIG(a)               (0x4738ull + (a) * 0x8ull)
+#define MCSX_PEX_RX_SLAVE_PORT_CFGX(a)         (0x3b98ull + (a) * 0x8ull)
 #define MCSX_PEX_RX_SLAVE_RULE_ETYPE_CFGX(a) ({        \
        u64 offset;                                     \
                                                        \
 
 
 #include "mcs.h"
 #include "rvu.h"
+#include "mcs_reg.h"
 #include "lmac_common.h"
 
 #define M(_name, _id, _fn_name, _req_type, _rsp_type)                  \
 MBOX_UP_MCS_MESSAGES
 #undef M
 
+void rvu_mcs_ptp_cfg(struct rvu *rvu, u8 rpm_id, u8 lmac_id, bool ena)
+{
+       struct mcs *mcs;
+       u64 cfg;
+       u8 port;
+
+       if (!rvu->mcs_blk_cnt)
+               return;
+
+       /* When ptp is enabled, RPM appends 8B header for all
+        * RX packets. MCS PEX need to configure to skip 8B
+        * during packet parsing.
+        */
+
+       /* CNF10K-B */
+       if (rvu->mcs_blk_cnt > 1) {
+               mcs = mcs_get_pdata(rpm_id);
+               cfg = mcs_reg_read(mcs, MCSX_PEX_RX_SLAVE_PEX_CONFIGURATION);
+               if (ena)
+                       cfg |= BIT_ULL(lmac_id);
+               else
+                       cfg &= ~BIT_ULL(lmac_id);
+               mcs_reg_write(mcs, MCSX_PEX_RX_SLAVE_PEX_CONFIGURATION, cfg);
+               return;
+       }
+       /* CN10KB */
+       mcs = mcs_get_pdata(0);
+       port = (rpm_id * rvu->hw->lmac_per_cgx) + lmac_id;
+       cfg = mcs_reg_read(mcs, MCSX_PEX_RX_SLAVE_PORT_CFGX(port));
+       if (ena)
+               cfg |= BIT_ULL(0);
+       else
+               cfg &= ~BIT_ULL(0);
+       mcs_reg_write(mcs, MCSX_PEX_RX_SLAVE_PORT_CFGX(port), cfg);
+}
+
 int rvu_mbox_handler_mcs_set_lmac_mode(struct rvu *rvu,
                                       struct mcs_set_lmac_mode *req,
                                       struct msg_rsp *rsp)
 
 /* CN10K MCS */
 int rvu_mcs_init(struct rvu *rvu);
 int rvu_mcs_flr_handler(struct rvu *rvu, u16 pcifunc);
+void rvu_mcs_ptp_cfg(struct rvu *rvu, u8 rpm_id, u8 lmac_id, bool ena);
 void rvu_mcs_exit(struct rvu *rvu);
 
 #endif /* RVU_H */
 
        /* This flag is required to clean up CGX conf if app gets killed */
        pfvf->hw_rx_tstamp_en = enable;
 
+       /* Inform MCS about 8B RX header */
+       rvu_mcs_ptp_cfg(rvu, cgx_id, lmac_id, enable);
        return 0;
 }