linux/drivers/net/ethernet/intel/i40e
Avinash Dayanand c27eac4816 i40e: Enable ADq and create queue channel/s on VF
This patch enables ADq and creates queue channels on a VF. An ADq
enabled VF can have up to 4 VSIs and each one of them represents
a traffic class and this is termed as a queue channel. Each of these
VSIs can have up to 4 queues. This patch services the request for
enabling ADq and adds queue channel based on the TC mqprio info
provided by the user in the VF.

Initially a check is made to see if spoof check is OFF, if not ADq
will not be enabled. PF notifies VF for a reset in order to complete
the creation of ADq resources i.e. creation of additional VSIs and
allocation of queues as per TC information, all in the reset path.

Steps:
======
1. Turn off the spoof check
2. Enable ADq using tc mqprio command with or without rate limit.
3. Pass traffic.

Example:
========
% ip link set dev eth0 vf 0 spoofchk off
% tc qdisc add dev $iface root mqprio num_tc 4 map\
	0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 queues\
	4@0 4@4 4@8 4@8 hw 1 mode channel

Expected results:
=================
1. Total number of queues for the VF should be sum of queues of all TCs.
2. Traffic flow should be normal without errors.

Signed-off-by: Avinash Dayanand <avinash.dayanand@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-02-14 09:43:22 -08:00
..
i40e_adminq_cmd.h i40e: Display LLDP information on vSphere Web Client 2018-01-26 13:23:11 -08:00
i40e_adminq.c i40e: cleanup unnecessary parens 2018-01-26 13:23:28 -08:00
i40e_adminq.h i40e: reduce wait time for adminq command completion 2017-04-19 17:38:25 -07:00
i40e_alloc.h
i40e_client.c i40e: Disable iWARP VSI PETCP_ENA flag on netdev down events 2018-01-23 11:29:19 -08:00
i40e_client.h i40e: Disable iWARP VSI PETCP_ENA flag on netdev down events 2018-01-23 11:29:19 -08:00
i40e_common.c i40e: Display LLDP information on vSphere Web Client 2018-01-26 13:23:11 -08:00
i40e_dcb_nl.c
i40e_dcb.c i40e: Support firmware CEE DCB UP to TC map re-definition 2017-06-20 18:17:10 -07:00
i40e_dcb.h
i40e_debugfs.c i40e: don't leak memory addresses 2018-02-13 11:40:10 -08:00
i40e_devids.h i40e: Add support for 25G devices 2016-12-06 20:59:43 -08:00
i40e_diag.c i40e: make const array patterns static, reduces object code size 2017-10-13 14:23:57 -07:00
i40e_diag.h
i40e_ethtool.c i40e: i40e: Change ethtool check from MAC to HW flag 2018-02-13 11:40:10 -08:00
i40e_fcoe.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
i40e_fcoe.h
i40e_hmc.c
i40e_hmc.h
i40e_lan_hmc.c
i40e_lan_hmc.h
i40e_main.c i40e: i40e: Change ethtool check from MAC to HW flag 2018-02-13 11:40:10 -08:00
i40e_nvm.c i40e/i40evf: Enable NVMUpdate to retrieve AdminQ and add preservation flags for NVM update 2018-01-23 11:29:19 -08:00
i40e_osdep.h i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00
i40e_prototype.h i40e: Display LLDP information on vSphere Web Client 2018-01-26 13:23:11 -08:00
i40e_ptp.c locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE() 2017-10-25 11:01:08 +02:00
i40e_register.h i40e: fix incorrect register definition 2017-10-06 08:11:31 -07:00
i40e_status.h i40e: Add returning AQ critical error to SW 2018-01-26 13:22:56 -08:00
i40e_trace.h i40e/i40evf: Add tracepoints 2017-04-19 16:47:31 -07:00
i40e_txrx.c i40e/i40evf: Add support for new mechanism of updating adaptive ITR 2018-02-12 11:50:10 -08:00
i40e_txrx.h i40e/i40evf: Add support for new mechanism of updating adaptive ITR 2018-02-12 11:50:10 -08:00
i40e_type.h i40e: Enable ADq and create queue channel/s on VF 2018-02-14 09:43:22 -08:00
i40e_virtchnl_pf.c i40e: Enable ADq and create queue channel/s on VF 2018-02-14 09:43:22 -08:00
i40e_virtchnl_pf.h i40e: Enable ADq and create queue channel/s on VF 2018-02-14 09:43:22 -08:00
i40e.h i40e: i40e: Change ethtool check from MAC to HW flag 2018-02-13 11:40:10 -08:00
Makefile i40e/i40evf: Add tracepoints 2017-04-19 16:47:31 -07:00