#define MLXSW_SP_PORT_HW_RFC_3635_STATS_LEN \
        ARRAY_SIZE(mlxsw_sp_port_hw_rfc_3635_stats)
 
+static struct mlxsw_sp_port_hw_stats mlxsw_sp_port_hw_ext_stats[] = {
+       {
+               .str = "ecn_marked",
+               .getter = mlxsw_reg_ppcnt_ecn_marked_get,
+       },
+};
+
+#define MLXSW_SP_PORT_HW_EXT_STATS_LEN ARRAY_SIZE(mlxsw_sp_port_hw_ext_stats)
+
 static struct mlxsw_sp_port_hw_stats mlxsw_sp_port_hw_discard_stats[] = {
        {
                .str = "discard_ingress_general",
                                         MLXSW_SP_PORT_HW_RFC_2863_STATS_LEN + \
                                         MLXSW_SP_PORT_HW_RFC_2819_STATS_LEN + \
                                         MLXSW_SP_PORT_HW_RFC_3635_STATS_LEN + \
+                                        MLXSW_SP_PORT_HW_EXT_STATS_LEN + \
                                         MLXSW_SP_PORT_HW_DISCARD_STATS_LEN + \
                                         (MLXSW_SP_PORT_HW_PRIO_STATS_LEN * \
                                          IEEE_8021QAZ_MAX_TCS) + \
                        p += ETH_GSTRING_LEN;
                }
 
+               for (i = 0; i < MLXSW_SP_PORT_HW_EXT_STATS_LEN; i++) {
+                       memcpy(p, mlxsw_sp_port_hw_ext_stats[i].str,
+                              ETH_GSTRING_LEN);
+                       p += ETH_GSTRING_LEN;
+               }
+
                for (i = 0; i < MLXSW_SP_PORT_HW_DISCARD_STATS_LEN; i++) {
                        memcpy(p, mlxsw_sp_port_hw_discard_stats[i].str,
                               ETH_GSTRING_LEN);
                *p_hw_stats = mlxsw_sp_port_hw_rfc_3635_stats;
                *p_len = MLXSW_SP_PORT_HW_RFC_3635_STATS_LEN;
                break;
+       case MLXSW_REG_PPCNT_EXT_CNT:
+               *p_hw_stats = mlxsw_sp_port_hw_ext_stats;
+               *p_len = MLXSW_SP_PORT_HW_EXT_STATS_LEN;
+               break;
        case MLXSW_REG_PPCNT_DISCARD_CNT:
                *p_hw_stats = mlxsw_sp_port_hw_discard_stats;
                *p_len = MLXSW_SP_PORT_HW_DISCARD_STATS_LEN;
                                  data, data_index);
        data_index += MLXSW_SP_PORT_HW_RFC_3635_STATS_LEN;
 
+       /* Extended Counters */
+       __mlxsw_sp_port_get_stats(dev, MLXSW_REG_PPCNT_EXT_CNT, 0,
+                                 data, data_index);
+       data_index += MLXSW_SP_PORT_HW_EXT_STATS_LEN;
+
        /* Discard Counters */
        __mlxsw_sp_port_get_stats(dev, MLXSW_REG_PPCNT_DISCARD_CNT, 0,
                                  data, data_index);
 
                                               mlxsw_sp_qdisc->prio_bitmap,
                                               &stats_base->tx_packets,
                                               &stats_base->tx_bytes);
-       red_base->prob_mark = xstats->ecn;
        red_base->prob_drop = xstats->wred_drop[tclass_num];
        red_base->pdrop = mlxsw_sp_xstats_tail_drop(xstats, tclass_num);
 
        u8 tclass_num = mlxsw_sp_qdisc->tclass_num;
        struct mlxsw_sp_port_xstats *xstats;
        struct red_stats *res = xstats_ptr;
-       int early_drops, marks, pdrops;
+       int early_drops, pdrops;
 
        xstats = &mlxsw_sp_port->periodic_hw_stats.xstats;
 
        early_drops = xstats->wred_drop[tclass_num] - xstats_base->prob_drop;
-       marks = xstats->ecn - xstats_base->prob_mark;
        pdrops = mlxsw_sp_xstats_tail_drop(xstats, tclass_num) -
                 xstats_base->pdrop;
 
        res->pdrop += pdrops;
        res->prob_drop += early_drops;
-       res->prob_mark += marks;
 
        xstats_base->pdrop += pdrops;
        xstats_base->prob_drop += early_drops;
-       xstats_base->prob_mark += marks;
        return 0;
 }
 
        stats_base = &mlxsw_sp_qdisc->stats_base;
 
        mlxsw_sp_qdisc_get_tc_stats(mlxsw_sp_port, mlxsw_sp_qdisc, stats_ptr);
-       overlimits = xstats->wred_drop[tclass_num] + xstats->ecn -
-                    stats_base->overlimits;
+       overlimits = xstats->wred_drop[tclass_num] - stats_base->overlimits;
 
        stats_ptr->qstats->overlimits += overlimits;
        stats_base->overlimits += overlimits;