1

I'm using a mellanox Infiniband card MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] with mlnx-ofed-kernel-3.1 on a linux kernel version 3.13.0.

When the card is connected to another one and configured (ibstat said both cards are active in the infiniband link layer), I experimented that every 9 seconds the card send 8 interrupts consisting of 4 pairs of event type MLX4_EVENT_TYPE_COMP and MLX4_EVENT_TYPE_CMD.

I also noticed that If I modify the function mlx4_interrupt code (which is the interrupt handler in the mlnx-ofed-kernel-3.1) to avoid it to handle those two interrupts events, the completion queues are immedialty destroy which directly cause further data transfers on the infiniband card to fail.

My question is what are the purpose of those interrupt events and MLX4_EVENT_TYPE_COMP and MLX4_EVENT_TYPE_CMD and why are they mandatory to keep queue pair available ?

Here are the codes called by each of those interrupt event in drivers/net/ethernet/mellanox/mlx4/eq.c

MLX4_EVENT_TYPE_COMP :

cqn = be32_to_cpu(eqe->event.comp.cqn) & 0xffffff;
mlx4_cq_completion(dev, cqn);

MLX4_EVENT_TYPE_CMD :

mlx4_cmd_event(dev, be16_to_cpu(eqe->event.cmd.token),  eqe->event.cmd.status,                 be64_to_cpu(eqe->event.cmd.out_param));
Fopa Léon Constantin
  • 11,863
  • 8
  • 48
  • 82

0 Answers0