Project

General

Profile

Actions

Bug #12798

closed

mlxcx command interface should allow concurrent commands and be interrupt driven

Added by Paul Winder about 2 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
driver - device drivers
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

At the moment only a single command can be submitted to the HCA at a time, and then that command is polled for completion.

The HCA supports up to 32 concurrent commands with interrupt driven completions, we should move to that.

Alongside this, the method for acquiring pages for the hardware had to be slightly modified.
  1. The number of pages in a single command was increased from 512 to 4096.
  2. Previously, when the hardware required pages, the driver would iterate in a loop giving pages in 512 page chunks at a time, inside the interrupt thread. When this was moved to a taskq, it unblocked the interrupt and caused a storm of page request interrupts as each 512 did not satisfy the hardware's request. The solution is to remove the iteration, and just give pages to the hardware in chunks of 4096, and let the h/w drive another interrupt until its needs have been satisfied.

Related issues

Related to illumos gate - Bug #12797: mlxcx max flow table limit can be exceededClosedPaul Winder

Actions
Related to illumos gate - Bug #12799: mlxcx #if defined for MAC_VLAN_UNTAGGED is redundantClosedPaul Winder

Actions
Related to illumos gate - Bug #12890: mlxcx uses excessive stack space causing stack overflow panicClosedPaul Winder

Actions
Actions

Also available in: Atom PDF