nvmet-tcp: enable optional queue idle period tracking
authorWunderlich, Mark <mark.wunderlich@intel.com>
Wed, 31 Mar 2021 21:38:30 +0000 (21:38 +0000)
committerChristoph Hellwig <hch@lst.de>
Fri, 2 Apr 2021 16:48:28 +0000 (18:48 +0200)
commitd8e7b462f5b8b93920c6c6a191be887b32306e6b
tree2284dfb950da75fcbfc7ffb7b7d72aae2445e5e7
parentb5332a9f3f3d884a1b646ce155e664cc558c1722
nvmet-tcp: enable optional queue idle period tracking

Add 'idle_poll_period_usecs' option used by io_work() to support
network devices enabled with advanced interrupt moderation
supporting a relaxed interrupt model. It was discovered that
such a NIC used on the target was unable to support initiator
connection establishment, caused by the existing io_work()
flow that immediately exits after a loop with no activity and
does not re-queue itself.

With this new option a queue is assigned a period of time
that no activity must occur in order to become 'idle'.  Until
the queue is idle the work item is requeued.

The new module option is defined as changeable making it
flexible for testing purposes.

The pre-existing legacy behavior is preserved when no module option
for idle_poll_period_usecs is specified.

Signed-off-by: Mark Wunderlich <mark.wunderlich@intel.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/target/tcp.c