SYSFS FILES

  For each InfiniBand device, the InfiniBand drivers create the
  following files under /sys/class/infiniband/<device name>:

    node_type      - Node type (CA, switch or router)
    node_guid      - Node GUID
    sys_image_guid - System image GUID

  In addition, there is a "ports" subdirectory, with one subdirectory
  for each port.  For example, if mthca0 is a 2-port HCA, there will
  be two directories:

    /sys/class/infiniband/mthca0/ports/1
    /sys/class/infiniband/mthca0/ports/2

  (A switch will only have a single "0" subdirectory for switch port
  0; no subdirectory is created for normal switch ports)

  In each port subdirectory, the following files are created:

    cap_mask       - Port capability mask
    lid            - Port LID
    lid_mask_count - Port LID mask count
    rate           - Port data rate (active width * active speed)
    sm_lid         - Subnet manager LID for port's subnet
    sm_sl          - Subnet manager SL for port's subnet
    state          - Port state (DOWN, INIT, ARMED, ACTIVE or ACTIVE_DEFER)
    phys_state     - Port physical state (Sleep, Polling, LinkUp, etc)

  There is also a "counters" subdirectory, with files

    VL15_dropped
    excessive_buffer_overrun_errors
    link_downed
    link_error_recovery
    local_link_integrity_errors
    port_rcv_constraint_errors
    port_rcv_data
    port_rcv_errors
    port_rcv_packets
    port_rcv_remote_physical_errors
    port_rcv_switch_relay_errors
    port_xmit_constraint_errors
    port_xmit_data
    port_xmit_discards
    port_xmit_packets
    symbol_error

  Each of these files contains the corresponding value from the port's
  Performance Management PortCounters attribute, as described in
  section 16.1.3.5 of the InfiniBand Architecture Specification.

  The "pkeys" and "gids" subdirectories contain one file for each
  entry in the port's P_Key or GID table respectively.  For example,
  ports/1/pkeys/10 contains the value at index 10 in port 1's P_Key
  table.

  There is an optional "hw_counters" subdirectory that may be under either
  the parent device or the port subdirectories or both.  If present,
  there are a list of counters provided by the hardware.  They may match
  some of the counters in the counters directory, but they often include
  many other counters.  In addition to the various counters, there will
  be a file named "lifespan" that configures how frequently the core
  should update the counters when they are being accessed (counters are
  not updated if they are not being accessed).  The lifespan is in milli-
  seconds and defaults to 10 unless set to something else by the driver.
  Users may echo a value between 0 - 10000 to the lifespan file to set
  the length of time between updates in milliseconds.

MTHCA

  The Mellanox HCA driver also creates the files:

    hw_rev   - Hardware revision number
    fw_ver   - Firmware version
    hca_type - HCA type: "MT23108", "MT25208 (MT23108 compat mode)",
               or "MT25208"

HFI1

  The hfi1 driver also creates these additional files:

   hw_rev - hardware revision
   board_id - manufacturing board id
   tempsense - thermal sense information
   serial - board serial number
   nfreectxts - number of free user contexts
   nctxts - number of allowed contexts (PSM2)
   chip_reset - diagnostic (root only)
   boardversion - board version

   sdma<N>/ - one directory per sdma engine (0 - 15)
	sdma<N>/cpu_list - read-write, list of cpus for user-process to sdma
			   engine assignment.
	sdma<N>/vl - read-only, vl the sdma engine maps to.

	The new interface will give the user control on the affinity settings
	for the hfi1 device.
	As an example, to set an sdma engine irq affinity and thread affinity
	of a user processes to use the sdma engine, which is "near" in terms
	of NUMA configuration, or physical cpu location, the user will do:

	echo "3" > /proc/irq/<N>/smp_affinity_list
	echo "4-7" > /sys/devices/.../sdma3/cpu_list
	cat /sys/devices/.../sdma3/vl
	0
	echo "8" > /proc/irq/<M>/smp_affinity_list
	echo "9-12" > /sys/devices/.../sdma4/cpu_list
	cat /sys/devices/.../sdma4/vl
	1

	to make sure that when a process runs on cpus 4,5,6, or 7,
	and uses vl=0, then sdma engine 3 is selected by the driver,
	and also the interrupt of the sdma engine 3 is steered to cpu 3.
	Similarly, when a process runs on cpus 9,10,11, or 12 and sets vl=1,
	then engine 4 will be selected and the irq of the sdma engine 4 is
	steered to cpu 8.
	This assumes that in the above N is the irq number of "sdma3",
	and M is irq number of "sdma4" in the /proc/interrupts file.

   ports/1/
          CCMgtA/
               cc_settings_bin - CCA tables used by PSM2
               cc_table_bin
               cc_prescan - enable prescaning for faster BECN response
          sc2v/ - 32 files (0 - 31) used to translate sl->vl
          sl2sc/ - 32 files (0 - 31) used to translate sl->sc
          vl2mtu/ - 16 (0 - 15) files used to determine MTU for vl
