i40e: Add infrastructure for queue channel support
authorAmritha Nambiar <amritha.nambiar@intel.com>
Thu, 7 Sep 2017 11:00:17 +0000 (04:00 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 13 Oct 2017 20:38:17 +0000 (13:38 -0700)
commit8f88b3034db3be2eb600b9f57012bc63f1ea197f
tree8b254ab0df2d82a2c7003c1006d91fb5a0d04457
parentff4241881232265dbc237591901116fe272967d6
i40e: Add infrastructure for queue channel support

This patch sets up the infrastructure for offloading TCs and
queue configurations to the hardware by creating HW channels(VSI).
A new channel is created for each of the traffic class
configuration offloaded via mqprio framework except for the first TC
(TC0). TC0 for the main VSI is also reconfigured as per user provided
queue parameters. Queue counts that are not power-of-2 are handled by
reconfiguring RSS by reprogramming LUTs using the queue count value.
This patch also handles configuring the TX rings for the channels,
setting up the RX queue map for channel.

Also, the channels so created are removed and all the queue
configuration is set to default when the qdisc is detached from the
root of the device.

Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
Signed-off-by: Kiran Patil <kiran.patil@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_txrx.h