<?xml version="1.0"?>
<instrumentationManifest
    xmlns="http://schemas.microsoft.com/win/2004/08/events"
    xmlns:win="https://manifests.microsoft.com/win/2004/08/windows/events"
    xmlns:xs="https://www.w3.org/2001/XMLSchema"
    >

  <!-- IMPORTANT, NameID and DescriptionsID must be even numbers only, otherwise the manifest compiler, ctrpp, will fail -->

  <!-- IMPORTANT, The driver .sys file MUST be present in the same directory as the manifest file when loading the manifest file with lodctr.exe. It is ok to move the .sys file later. -->

  <instrumentation>

    <counters
      xmlns="http://schemas.microsoft.com/win/2005/12/counters"
      schemaVersion="2.0">

      <provider
        applicationIdentity="bnxtnd.sys"
        providerType="kernelMode"
        providerGuid="{67F5CE5D-FC5B-47CE-A2F5-DC45FB33C363}">

        <counterSet
          guid="{DCCEFBFD-E33C-4154-A19E-0B79F4C478E3}"
          uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources"
          symbol="Brcm_NXE_RDMAResources"
          name="Broadcom NXE RDMA Resources"
          nameID="100"
          description="RDMA Resources"
          descriptionID="102"
          instances="multiple">

          <structs>
            <struct name="RdmaResources" type="PERF_COUNTER_RDMA_RESOURCES"/>
          </structs>

          <counter
            id="1"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.pd_in_use"
            struct="RdmaResources"
            field="pd_in_use"
            name="PD in use"
            nameID="104"
            description="Protection Domains in use."
            descriptionID="106"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="2"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.qp_in_use"
            struct="RdmaResources"
            field="qp_in_use"
            name="QP in use"
            nameID="108"
            description="Queue pairs in use."
            descriptionID="110"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="3"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.cq_in_use"
            struct="RdmaResources"
            field="cq_in_use"
            name="CQ in use"
            nameID="112"
            description="Completion queues in use."
            descriptionID="114"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="4"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.srq_in_use"
            struct="RdmaResources"
            field="srq_in_use"
            name="SRQ in use"
            nameID="116"
            description="Shared receive queues in use."
            descriptionID="118"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="5"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.mr_in_use"
            struct="RdmaResources"
            field="mr_in_use"
            name="MR in use"
            nameID="120"
            description="Memory regions in use."
            descriptionID="122"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="6"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.mw_in_use"
            struct="RdmaResources"
            field="mw_in_use"
            name="MW in use"
            nameID="124"
            description="Memory windows in use."
            descriptionID="126"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="7"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.lam_in_use"
            struct="RdmaResources"
            field="lam_in_use"
            name="LAM in use"
            nameID="128"
            description="Logical address mappings in use."
            descriptionID="130"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="8"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.ndspi_clients"
            struct="RdmaResources"
            field="ndspi_clients"
            name="NDSPI clients"
            nameID="132"
            description="Number of NDSPI clients."
            descriptionID="134"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="9"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAResources.ah_in_use"
            struct="RdmaResources"
            field="ah_in_use"
            name="AH in use"
            nameID="136"
            description="Address handles in use."
            descriptionID="138"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>
        </counterSet>

        <counterSet
          guid="{73753849-B6AF-4D41-9CFF-8CFC3F3AE746}"
          uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations"
          symbol="Brcm_NXE_RDMAKernelAllocations"
          name="Broadcom NXE RDMA Kernel Allocations"
          nameID="200"
          description="Kernel mode RDMA allocations"
          descriptionID="202"
          instances="multiple">

          <structs>
            <struct name="RdmaKernelAllocations" type="PERF_COUNTER_RDMA_KERNEL_ALLOCATIONS"/>
          </structs>

          <counter
            id="1"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.qp_allocated"
            struct="RdmaKernelAllocations"
            field="qp_allocated"
            name="QPs allocated"
            nameID="204"
            description="Queue pairs allocated."
            descriptionID="206"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="2"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.qp_freed"
            struct="RdmaKernelAllocations"
            field="qp_freed"
            name="QPs freed"
            nameID="208"
            description="Queue pairs freed."
            descriptionID="210"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="3"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.cq_allocated"
            struct="RdmaKernelAllocations"
            field="cq_allocated"
            name="CQs allocated"
            nameID="212"
            description="Completion queues allocated."
            descriptionID="214"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="4"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.cq_freed"
            struct="RdmaKernelAllocations"
            field="cq_freed"
            name="CQs freed"
            nameID="216"
            description="Completion queues freed."
            descriptionID="218"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="5"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.srq_allocated"
            struct="RdmaKernelAllocations"
            field="srq_allocated"
            name="SRQ allocated"
            nameID="220"
            description="Shared receive queues allocated."
            descriptionID="222"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="6"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.srq_freed"
            struct="RdmaKernelAllocations"
            field="srq_freed"
            name="SRQ freed"
            nameID="224"
            description="Shared receive queues freed."
            descriptionID="226"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="7"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.mr_allocated"
            struct="RdmaKernelAllocations"
            field="mr_allocated"
            name="MR allocated"
            nameID="228"
            description="Memory regions allocated."
            descriptionID="230"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="8"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.mr_freed"
            struct="RdmaKernelAllocations"
            field="mr_freed"
            name="MR freed"
            nameID="232"
            description="Memory regions freed."
            descriptionID="234"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="9"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.mw_allocated"
            struct="RdmaKernelAllocations"
            field="mw_allocated"
            name="MW allocated"
            nameID="236"
            description="Memory windows allocated."
            descriptionID="238"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="10"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.mw_freed"
            struct="RdmaKernelAllocations"
            field="mw_freed"
            name="MW freed"
            nameID="240"
            description="Memory windows freed."
            descriptionID="242"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="11"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.lam_allocated"
            struct="RdmaKernelAllocations"
            field="lam_allocated"
            name="LAM allocated"
            nameID="244"
            description="Logical address mappings allocated."
            descriptionID="246"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="12"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAKernelAllocations.lam_freed"
            struct="RdmaKernelAllocations"
            field="lam_freed"
            name="LAM freed"
            nameID="248"
            description="Logical address mappings freed."
            descriptionID="250"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>
        </counterSet>

        <counterSet
          guid="{E457EFEE-9490-4C35-AB76-8B3AB350C4FA}"
          uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations"
          symbol="Brcm_NXE_RDMAUserAllocations"
          name="Broadcom NXE RDMA User Allocations"
          nameID="300"
          description="User mode RDMA allocations"
          descriptionID="302"
          instances="multiple">

          <structs>
            <struct name="RdmaUserAllocations" type="PERF_COUNTER_RDMA_USER_ALLOCATIONS"/>
          </structs>

          <counter
            id="1"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.qp_allocated"
            struct="RdmaUserAllocations"
            field="qp_allocated"
            name="QPs allocated"
            nameID="304"
            description="Queue pairs allocated."
            descriptionID="306"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="2"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.qp_freed"
            struct="RdmaUserAllocations"
            field="qp_freed"
            name="QPs freed"
            nameID="308"
            description="Queue pairs freed."
            descriptionID="310"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="3"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.cq_allocated"
            struct="RdmaUserAllocations"
            field="cq_allocated"
            name="CQs allocated"
            nameID="312"
            description="Completion queues allocated."
            descriptionID="314"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="4"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.cq_freed"
            struct="RdmaUserAllocations"
            field="cq_freed"
            name="CQs freed"
            nameID="316"
            description="Completion queues freed."
            descriptionID="318"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="5"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.srq_allocated"
            struct="RdmaUserAllocations"
            field="srq_allocated"
            name="SRQ allocated"
            nameID="320"
            description="Shared receive queues allocated."
            descriptionID="322"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="6"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.srq_freed"
            struct="RdmaUserAllocations"
            field="srq_freed"
            name="SRQ freed"
            nameID="324"
            description="Shared receive queues freed."
            descriptionID="326"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="7"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.mr_allocated"
            struct="RdmaUserAllocations"
            field="mr_allocated"
            name="MR allocated"
            nameID="328"
            description="Memory regions allocated."
            descriptionID="330"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="8"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.mr_freed"
            struct="RdmaUserAllocations"
            field="mr_freed"
            name="MR freed"
            nameID="332"
            description="Memory regions freed."
            descriptionID="334"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="9"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.mw_allocated"
            struct="RdmaUserAllocations"
            field="mw_allocated"
            name="MW allocated"
            nameID="336"
            description="Memory windows allocated."
            descriptionID="338"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>

          <counter
            id="10"
            uri="Broadcom.NXE.PerfCounters.Brcm_NXE_RDMAUserAllocations.mw_freed"
            struct="RdmaUserAllocations"
            field="mw_freed"
            name="MW freed"
            nameID="340"
            description="Memory windows freed."
            descriptionID="342"
            type="perf_counter_rawcount"
            detailLevel="standard"
            defaultScale="1"/>
        </counterSet>
      </provider>
    </counters>
  </instrumentation>
</instrumentationManifest>
