linux/drivers/net/ethernet/intel/ice
Anirudh Venkataramanan 0f9d5027a7 ice: Refactor VSI allocation, deletion and rebuild flow
This patch refactors aspects of the VSI allocation, deletion and rebuild
flow. Some of the more noteworthy changes are described below.

1) On reset, all switch filters applied in the hardware are lost. In
   the rebuild flow, only MAC and broadcast filters are being restored.
   Instead, use a new function ice_replay_all_fltr to restore all the
   filters that were previously added. To do this, remove calls to
   ice_remove_vsi_fltr to prevent cleaning out the internal bookkeeping
   structures that ice_replay_all_fltr uses to replay filters.

2) Introduce a new state bit __ICE_PREPARED_FOR_RESET to distinguish the
   PF that requested the reset (and consequently prepared for it) from
   the rest of the PFs. These other PFs will prepare for reset only
   when they receive an interrupt from the firmware.

3) Use new functions ice_add_vsi and ice_free_vsi to create and destroy
   VSIs respectively. These functions accept a handle to uniquely
   identify a VSI. This same handle is required to rebuild the VSI post
   reset. To prevent confusion, the existing ice_vsi_add was renamed to
   ice_vsi_init.

4) Enhance ice_vsi_setup for the upcoming SR-IOV changes and expose a
   new wrapper function ice_pf_vsi_setup to create PF VSIs. Rework the
   error handling path in ice_setup_pf_sw.

5) Introduce a new function ice_vsi_release_all to release all PF VSIs.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-08-28 10:34:01 -07:00
..
ice_adminq_cmd.h ice: Refactor VSI allocation, deletion and rebuild flow 2018-08-28 10:34:01 -07:00
ice_common.c ice: Refactor VSI allocation, deletion and rebuild flow 2018-08-28 10:34:01 -07:00
ice_common.h ice: Update request resource command to latest specification 2018-08-28 10:17:06 -07:00
ice_controlq.c ice: Prevent control queue operations during reset 2018-08-28 10:20:00 -07:00
ice_controlq.h ice: Initialize PF and setup miscellaneous interrupt 2018-03-26 10:34:49 -07:00
ice_devids.h
ice_ethtool.c ice: Report stats for allocated queues via ethtool stats 2018-08-23 09:49:16 -07:00
ice_hw_autogen.h ice: Update to interrupts enabled in OICR 2018-08-23 11:26:47 -07:00
ice_lan_tx_rx.h ice: Rework flex descriptor programming 2018-08-28 09:18:47 -07:00
ice_main.c ice: Refactor VSI allocation, deletion and rebuild flow 2018-08-28 10:34:01 -07:00
ice_nvm.c ice: Update request resource command to latest specification 2018-08-28 10:17:06 -07:00
ice_osdep.h ice: Start hardware initialization 2018-03-26 09:59:08 -07:00
ice_sched.c ice: Updates to Tx scheduler code 2018-08-28 09:58:13 -07:00
ice_sched.h ice: Update Tx scheduler tree for VSI multi-Tx queue support 2018-03-26 12:21:42 -07:00
ice_status.h ice: Prevent control queue operations during reset 2018-08-28 10:20:00 -07:00
ice_switch.c ice: Refactor VSI allocation, deletion and rebuild flow 2018-08-28 10:34:01 -07:00
ice_switch.h ice: Refactor VSI allocation, deletion and rebuild flow 2018-08-28 10:34:01 -07:00
ice_txrx.c ice: Add support for VLANs and offloads 2018-03-26 11:54:49 -07:00
ice_txrx.h ice: Change struct members from bool to u8 2018-08-23 11:32:59 -07:00
ice_type.h ice: Refactor VSI allocation, deletion and rebuild flow 2018-08-28 10:34:01 -07:00
ice.h ice: Refactor VSI allocation, deletion and rebuild flow 2018-08-28 10:34:01 -07:00
Makefile ice: Add stats and ethtool support 2018-03-26 12:11:19 -07:00