Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/infiniband/hw/hfi1/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 13 kB image not shown  

Quelle  trace_ibhdrs.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/*
 * Copyright(c) 2015 - 2017 Intel Corporation.
 */


#if !defined(__HFI1_TRACE_IBHDRS_H) || defined(TRACE_HEADER_MULTI_READ)
#define __HFI1_TRACE_IBHDRS_H

#include <linux/tracepoint.h>
#include <linux/trace_seq.h>

#include "hfi.h"

#undef TRACE_SYSTEM
#define TRACE_SYSTEM hfi1_ibhdrs

#define ib_opcode_name(opcode) { IB_OPCODE_##opcode, #opcode  }
#define show_ib_opcode(opcode)                             \
__print_symbolic(opcode,                                   \
 ib_opcode_name(RC_SEND_FIRST),                     \
 ib_opcode_name(RC_SEND_MIDDLE),                    \
 ib_opcode_name(RC_SEND_LAST),                      \
 ib_opcode_name(RC_SEND_LAST_WITH_IMMEDIATE),       \
 ib_opcode_name(RC_SEND_ONLY),                      \
 ib_opcode_name(RC_SEND_ONLY_WITH_IMMEDIATE),       \
 ib_opcode_name(RC_RDMA_WRITE_FIRST),               \
 ib_opcode_name(RC_RDMA_WRITE_MIDDLE),              \
 ib_opcode_name(RC_RDMA_WRITE_LAST),                \
 ib_opcode_name(RC_RDMA_WRITE_LAST_WITH_IMMEDIATE), \
 ib_opcode_name(RC_RDMA_WRITE_ONLY),                \
 ib_opcode_name(RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE), \
 ib_opcode_name(RC_RDMA_READ_REQUEST),              \
 ib_opcode_name(RC_RDMA_READ_RESPONSE_FIRST),       \
 ib_opcode_name(RC_RDMA_READ_RESPONSE_MIDDLE),      \
 ib_opcode_name(RC_RDMA_READ_RESPONSE_LAST),        \
 ib_opcode_name(RC_RDMA_READ_RESPONSE_ONLY),        \
 ib_opcode_name(RC_ACKNOWLEDGE),                    \
 ib_opcode_name(RC_ATOMIC_ACKNOWLEDGE),             \
 ib_opcode_name(RC_COMPARE_SWAP),                   \
 ib_opcode_name(RC_FETCH_ADD),                      \
 ib_opcode_name(RC_SEND_LAST_WITH_INVALIDATE),      \
 ib_opcode_name(RC_SEND_ONLY_WITH_INVALIDATE),      \
 ib_opcode_name(TID_RDMA_WRITE_REQ),            \
 ib_opcode_name(TID_RDMA_WRITE_RESP),            \
 ib_opcode_name(TID_RDMA_WRITE_DATA),            \
 ib_opcode_name(TID_RDMA_WRITE_DATA_LAST),          \
 ib_opcode_name(TID_RDMA_READ_REQ),            \
 ib_opcode_name(TID_RDMA_READ_RESP),            \
 ib_opcode_name(TID_RDMA_RESYNC),            \
 ib_opcode_name(TID_RDMA_ACK),                      \
 ib_opcode_name(UC_SEND_FIRST),                     \
 ib_opcode_name(UC_SEND_MIDDLE),                    \
 ib_opcode_name(UC_SEND_LAST),                      \
 ib_opcode_name(UC_SEND_LAST_WITH_IMMEDIATE),       \
 ib_opcode_name(UC_SEND_ONLY),                      \
 ib_opcode_name(UC_SEND_ONLY_WITH_IMMEDIATE),       \
 ib_opcode_name(UC_RDMA_WRITE_FIRST),               \
 ib_opcode_name(UC_RDMA_WRITE_MIDDLE),              \
 ib_opcode_name(UC_RDMA_WRITE_LAST),                \
 ib_opcode_name(UC_RDMA_WRITE_LAST_WITH_IMMEDIATE), \
 ib_opcode_name(UC_RDMA_WRITE_ONLY),                \
 ib_opcode_name(UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE), \
 ib_opcode_name(UD_SEND_ONLY),                      \
 ib_opcode_name(UD_SEND_ONLY_WITH_IMMEDIATE),       \
 ib_opcode_name(CNP))

u8 ibhdr_exhdr_len(struct ib_header *hdr);
const char *parse_everbs_hdrs(struct trace_seq *p, u8 opcode,
         u8 l4, u32 dest_qpn, u32 src_qpn,
         void *ehdrs);
u8 hfi1_trace_opa_hdr_len(struct hfi1_opa_header *opah);
u8 hfi1_trace_packet_hdr_len(struct hfi1_packet *packet);
const char *hfi1_trace_get_packet_l4_str(u8 l4);
void hfi1_trace_parse_9b_bth(struct ib_other_headers *ohdr,
        u8 *ack, bool *becn, bool *fecn, u8 *mig,
        u8 *se, u8 *pad, u8 *opcode, u8 *tver,
        u16 *pkey, u32 *psn, u32 *qpn);
void hfi1_trace_parse_9b_hdr(struct ib_header *hdr, bool sc5,
        u8 *lnh, u8 *lver, u8 *sl, u8 *sc,
        u16 *len, u32 *dlid, u32 *slid);
void hfi1_trace_parse_16b_bth(struct ib_other_headers *ohdr,
         u8 *ack, u8 *mig, u8 *opcode,
         u8 *pad, u8 *se, u8 *tver,
         u32 *psn, u32 *qpn);
void hfi1_trace_parse_16b_hdr(struct hfi1_16b_header *hdr,
         u8 *age, bool *becn, bool *fecn,
         u8 *l4, u8 *rc, u8 *sc,
         u16 *entropy, u16 *len, u16 *pkey,
         u32 *dlid, u32 *slid);

const char *hfi1_trace_fmt_lrh(struct trace_seq *p, bool bypass,
          u8 age, bool becn, bool fecn, u8 l4,
          u8 lnh, const char *lnh_name, u8 lver,
          u8 rc, u8 sc, u8 sl, u16 entropy,
          u16 len, u16 pkey, u32 dlid, u32 slid);

const char *hfi1_trace_fmt_rest(struct trace_seq *p, bool bypass, u8 l4,
    u8 ack, bool becn, bool fecn, u8 mig,
    u8 se, u8 pad, u8 opcode, const char *opname,
    u8 tver, u16 pkey, u32 psn, u32 qpn,
    u32 dest_qpn, u32 src_qpn);

const char *hfi1_trace_get_packet_l2_str(u8 l2);

#define __parse_ib_ehdrs(op, l4, dest_qpn, src_qpn, ehdrs) \
    parse_everbs_hdrs(p, op, l4, dest_qpn, src_qpn, ehdrs)

#define lrh_name(lrh) { HFI1_##lrh, #lrh }
#define show_lnh(lrh)                    \
__print_symbolic(lrh,                    \
 lrh_name(LRH_BTH),               \
 lrh_name(LRH_GRH))

DECLARE_EVENT_CLASS(hfi1_input_ibhdr_template,
      TP_PROTO(struct hfi1_devdata *dd,
        struct hfi1_packet *packet,
        bool sc5),
      TP_ARGS(dd, packet, sc5),
      TP_STRUCT__entry(
   DD_DEV_ENTRY(dd)
   __field(u8, etype)
   __field(u8, ack)
   __field(u8, age)
   __field(bool, becn)
   __field(bool, fecn)
   __field(u8, l2)
   __field(u8, l4)
   __field(u8, lnh)
   __field(u8, lver)
   __field(u8, mig)
   __field(u8, opcode)
   __field(u8, pad)
   __field(u8, rc)
   __field(u8, sc)
   __field(u8, se)
   __field(u8, sl)
   __field(u8, tver)
   __field(u16, entropy)
   __field(u16, len)
   __field(u16, pkey)
   __field(u32, dlid)
   __field(u32, psn)
   __field(u32, qpn)
   __field(u32, slid)
   __field(u32, dest_qpn)
   __field(u32, src_qpn)
   /* extended headers */
   __dynamic_array(u8, ehdrs,
     hfi1_trace_packet_hdr_len(packet))
   ),
      TP_fast_assign(
   DD_DEV_ASSIGN(dd);

   __entry->etype = packet->etype;
   __entry->l2 = hfi1_16B_get_l2(packet->hdr);
   __entry->dest_qpn = 0;
   __entry->src_qpn = 0;
   if (__entry->etype == RHF_RCV_TYPE_BYPASS) {
    hfi1_trace_parse_16b_hdr(packet->hdr,
        &__entry->age,
        &__entry->becn,
        &__entry->fecn,
        &__entry->l4,
        &__entry->rc,
        &__entry->sc,
        &__entry->entropy,
        &__entry->len,
        &__entry->pkey,
        &__entry->dlid,
        &__entry->slid);

    if (__entry->l4 == OPA_16B_L4_FM) {
     __entry->opcode = IB_OPCODE_UD_SEND_ONLY;
     __entry->dest_qpn = hfi1_16B_get_dest_qpn(packet->mgmt);
     __entry->src_qpn = hfi1_16B_get_src_qpn(packet->mgmt);
    }  else {
     hfi1_trace_parse_16b_bth(packet->ohdr,
         &__entry->ack,
         &__entry->mig,
         &__entry->opcode,
         &__entry->pad,
         &__entry->se,
         &__entry->tver,
         &__entry->psn,
         &__entry->qpn);
    }
   } else {
    __entry->l4 = OPA_16B_L4_9B;
    hfi1_trace_parse_9b_hdr(packet->hdr, sc5,
       &__entry->lnh,
       &__entry->lver,
       &__entry->sl,
       &__entry->sc,
       &__entry->len,
       &__entry->dlid,
       &__entry->slid);

      hfi1_trace_parse_9b_bth(packet->ohdr,
         &__entry->ack,
         &__entry->becn,
         &__entry->fecn,
         &__entry->mig,
         &__entry->se,
         &__entry->pad,
         &__entry->opcode,
         &__entry->tver,
         &__entry->pkey,
         &__entry->psn,
         &__entry->qpn);
   }
   /* extended headers */
   if (__entry->l4 != OPA_16B_L4_FM)
    memcpy(__get_dynamic_array(ehdrs),
           &packet->ohdr->u,
           __get_dynamic_array_len(ehdrs));
    ),
      TP_printk("[%s] (%s) %s %s hlen:%d %s",
         __get_str(dev),
         __entry->etype != RHF_RCV_TYPE_BYPASS ?
     show_packettype(__entry->etype) :
     hfi1_trace_get_packet_l2_str(
      __entry->l2),
         hfi1_trace_fmt_lrh(p,
       __entry->etype ==
       RHF_RCV_TYPE_BYPASS,
       __entry->age,
       __entry->becn,
       __entry->fecn,
       __entry->l4,
       __entry->lnh,
       show_lnh(__entry->lnh),
       __entry->lver,
       __entry->rc,
       __entry->sc,
       __entry->sl,
       __entry->entropy,
       __entry->len,
       __entry->pkey,
       __entry->dlid,
       __entry->slid),
         hfi1_trace_fmt_rest(p,
        __entry->etype ==
       RHF_RCV_TYPE_BYPASS,
        __entry->l4,
        __entry->ack,
        __entry->becn,
        __entry->fecn,
        __entry->mig,
        __entry->se,
        __entry->pad,
        __entry->opcode,
        show_ib_opcode(__entry->opcode),
        __entry->tver,
        __entry->pkey,
        __entry->psn,
        __entry->qpn,
        __entry->dest_qpn,
        __entry->src_qpn),
         /* extended headers */
         __get_dynamic_array_len(ehdrs),
         __parse_ib_ehdrs(
     __entry->opcode,
     __entry->l4,
     __entry->dest_qpn,
     __entry->src_qpn,
     (void *)__get_dynamic_array(ehdrs))
        )
);

DEFINE_EVENT(hfi1_input_ibhdr_template, input_ibhdr,
      TP_PROTO(struct hfi1_devdata *dd,
        struct hfi1_packet *packet, bool sc5),
      TP_ARGS(dd, packet, sc5));

DECLARE_EVENT_CLASS(hfi1_output_ibhdr_template,
      TP_PROTO(struct hfi1_devdata *dd,
        struct hfi1_opa_header *opah, bool sc5),
      TP_ARGS(dd, opah, sc5),
      TP_STRUCT__entry(
   DD_DEV_ENTRY(dd)
   __field(u8, hdr_type)
   __field(u8, ack)
   __field(u8, age)
   __field(bool, becn)
   __field(bool, fecn)
   __field(u8, l4)
   __field(u8, lnh)
   __field(u8, lver)
   __field(u8, mig)
   __field(u8, opcode)
   __field(u8, pad)
   __field(u8, rc)
   __field(u8, sc)
   __field(u8, se)
   __field(u8, sl)
   __field(u8, tver)
   __field(u16, entropy)
   __field(u16, len)
   __field(u16, pkey)
   __field(u32, dlid)
   __field(u32, psn)
   __field(u32, qpn)
   __field(u32, slid)
   __field(u32, dest_qpn)
   __field(u32, src_qpn)
   /* extended headers */
   __dynamic_array(u8, ehdrs,
     hfi1_trace_opa_hdr_len(opah))
   ),
      TP_fast_assign(
   struct ib_other_headers *ohdr;

   DD_DEV_ASSIGN(dd);

   __entry->hdr_type = opah->hdr_type;
   __entry->dest_qpn = 0;
   __entry->src_qpn = 0;
   if (__entry->hdr_type)  {
    hfi1_trace_parse_16b_hdr(&opah->opah,
        &__entry->age,
        &__entry->becn,
        &__entry->fecn,
        &__entry->l4,
        &__entry->rc,
        &__entry->sc,
        &__entry->entropy,
        &__entry->len,
        &__entry->pkey,
        &__entry->dlid,
        &__entry->slid);

    if (__entry->l4 == OPA_16B_L4_FM) {
     ohdr = NULL;
     __entry->opcode = IB_OPCODE_UD_SEND_ONLY;
     __entry->dest_qpn = hfi1_16B_get_dest_qpn(&opah->opah.u.mgmt);
     __entry->src_qpn = hfi1_16B_get_src_qpn(&opah->opah.u.mgmt);
    } else {
     if (__entry->l4 == OPA_16B_L4_IB_LOCAL)
      ohdr = &opah->opah.u.oth;
     else
      ohdr = &opah->opah.u.l.oth;
     hfi1_trace_parse_16b_bth(ohdr,
         &__entry->ack,
         &__entry->mig,
         &__entry->opcode,
         &__entry->pad,
         &__entry->se,
         &__entry->tver,
         &__entry->psn,
         &__entry->qpn);
    }
   } else {
    __entry->l4 = OPA_16B_L4_9B;
    hfi1_trace_parse_9b_hdr(&opah->ibh, sc5,
       &__entry->lnh,
       &__entry->lver,
       &__entry->sl,
       &__entry->sc,
       &__entry->len,
       &__entry->dlid,
       &__entry->slid);
    if (__entry->lnh == HFI1_LRH_BTH)
     ohdr = &opah->ibh.u.oth;
    else
     ohdr = &opah->ibh.u.l.oth;
    hfi1_trace_parse_9b_bth(ohdr,
       &__entry->ack,
       &__entry->becn,
       &__entry->fecn,
       &__entry->mig,
       &__entry->se,
       &__entry->pad,
       &__entry->opcode,
       &__entry->tver,
       &__entry->pkey,
       &__entry->psn,
       &__entry->qpn);
   }

   /* extended headers */
   if (__entry->l4 != OPA_16B_L4_FM)
    memcpy(__get_dynamic_array(ehdrs),
           &ohdr->u, __get_dynamic_array_len(ehdrs));
      ),
      TP_printk("[%s] (%s) %s %s hlen:%d %s",
         __get_str(dev),
         hfi1_trace_get_packet_l4_str(__entry->l4),
         hfi1_trace_fmt_lrh(p,
       !!__entry->hdr_type,
       __entry->age,
       __entry->becn,
       __entry->fecn,
       __entry->l4,
       __entry->lnh,
       show_lnh(__entry->lnh),
       __entry->lver,
       __entry->rc,
       __entry->sc,
       __entry->sl,
       __entry->entropy,
       __entry->len,
       __entry->pkey,
       __entry->dlid,
       __entry->slid),
         hfi1_trace_fmt_rest(p,
        !!__entry->hdr_type,
        __entry->l4,
        __entry->ack,
        __entry->becn,
        __entry->fecn,
        __entry->mig,
        __entry->se,
        __entry->pad,
        __entry->opcode,
        show_ib_opcode(__entry->opcode),
        __entry->tver,
        __entry->pkey,
        __entry->psn,
        __entry->qpn,
        __entry->dest_qpn,
        __entry->src_qpn),
         /* extended headers */
         __get_dynamic_array_len(ehdrs),
         __parse_ib_ehdrs(
     __entry->opcode,
     __entry->l4,
     __entry->dest_qpn,
     __entry->src_qpn,
     (void *)__get_dynamic_array(ehdrs))
        )
);

DEFINE_EVENT(hfi1_output_ibhdr_template, pio_output_ibhdr,
      TP_PROTO(struct hfi1_devdata *dd,
        struct hfi1_opa_header *opah, bool sc5),
      TP_ARGS(dd, opah, sc5));

DEFINE_EVENT(hfi1_output_ibhdr_template, ack_output_ibhdr,
      TP_PROTO(struct hfi1_devdata *dd,
        struct hfi1_opa_header *opah, bool sc5),
      TP_ARGS(dd, opah, sc5));

DEFINE_EVENT(hfi1_output_ibhdr_template, sdma_output_ibhdr,
      TP_PROTO(struct hfi1_devdata *dd,
        struct hfi1_opa_header *opah, bool sc5),
      TP_ARGS(dd, opah, sc5));


#endif /* __HFI1_TRACE_IBHDRS_H */

#undef TRACE_INCLUDE_PATH
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_PATH .
#define TRACE_INCLUDE_FILE trace_ibhdrs
#include <trace/define_trace.h>

Messung V0.5
C=95 H=100 G=97

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.