TNSM_Latency_Prediction / code / parser / 0_baseline / egress.p4
egress.p4
Raw
control Egress(
    /* User */
    inout my_egress_headers_t                          hdr,
    inout my_egress_metadata_t                         meta,
    /* Intrinsic */
    in    egress_intrinsic_metadata_t                  eg_intr_md,
    in    egress_intrinsic_metadata_from_parser_t      eg_prsr_md,
    inout egress_intrinsic_metadata_for_deparser_t     eg_dprsr_md,
    inout egress_intrinsic_metadata_for_output_port_t  eg_oport_md)
{

    action add_egs_mac_ts(bit<8> offset){

        eg_oport_md.update_delay_on_tx = 1;

        hdr.ptp_metadata.setValid();
        hdr.ptp_metadata.udp_cksum_byte_offset = 0;
        hdr.ptp_metadata.cf_byte_offset = offset;
        hdr.ptp_metadata.updated_cf = 0;
    }

    table timestamp_eg_t {
        key = {
        }
        actions = {
            add_egs_mac_ts;
            NoAction;
        }
        default_action = add_egs_mac_ts(46);
        size           = 1;
    }
    apply{

        hdr.timestamps.ts3 = eg_intr_md.enq_tstamp;
        hdr.timestamps.ts4 = eg_intr_md.deq_timedelta;
        hdr.timestamps.ts4 = eg_prsr_md.global_tstamp;

        timestamp_eg_t.apply();
    }
}