linux/drivers/net/ethernet/intel/ice
Preethi Banala eb0208ec42 ice: Split irq_tracker into sw_irq_tracker and hw_irq_tracker
For the PF driver, when mapping interrupts to queues, we need to request
IRQs from the kernel and we also have to allocate interrupts from
the device.

Similarly, when the VF driver (iavf.ko) initializes, it requests the kernel
IRQs that it needs but it can't directly allocate interrupts in the device.
Instead, it sends a mailbox message to the ice driver, which then allocates
interrupts in the device on the VF driver's behalf.

Currently both these cases end up having to reserve entries in
pf->irq_tracker but irq_tracker itself is sized based on how many vectors
the PF driver needs. Under the right circumstances, the VF driver can fail
to get entries in irq_tracker, which will result in the VF driver failing
probe.

To fix this, sw_irq_tracker and hw_irq_tracker are introduced. The
sw_irq_tracker tracks only the PF's IRQ request and doesn't play any
role in VF init. hw_irq_tracker represents the device's interrupt space.
When interrupts have to be allocated in the device for either PF or VF,
hw_irq_tracker will be looked up to see if the device has run out of
interrupts.

Signed-off-by: Preethi Banala <preethi.banala@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-10-02 07:16:19 -07:00
..
ice_adminq_cmd.h ice: Query the Tx scheduler node before adding it 2018-09-28 11:16:36 -07:00
ice_common.c ice: Check for actual link state of port after reset 2018-10-02 07:15:22 -07:00
ice_common.h ice: Check for actual link state of port after reset 2018-10-02 07:15:22 -07:00
ice_controlq.c ice: update fw version check logic 2018-09-28 11:16:36 -07:00
ice_controlq.h ice: Initialize PF and setup miscellaneous interrupt 2018-03-26 10:34:49 -07:00
ice_devids.h ice: update branding strings and supported device ids 2018-09-28 11:16:36 -07:00
ice_ethtool.c ice: fix changing of ring descriptor size (ethtool -G) 2018-09-28 11:16:36 -07:00
ice_hw_autogen.h ice: Add support for Tx hang, Tx timeout and malicious driver detection 2018-08-28 10:58:42 -07:00
ice_lan_tx_rx.h ice: Rework flex descriptor programming 2018-08-28 09:18:47 -07:00
ice_lib.c ice: Split irq_tracker into sw_irq_tracker and hw_irq_tracker 2018-10-02 07:16:19 -07:00
ice_lib.h ice: Change pf state behavior to protect reset path 2018-10-01 12:50:50 -07:00
ice_main.c ice: Split irq_tracker into sw_irq_tracker and hw_irq_tracker 2018-10-02 07:16:19 -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: Expand use of VSI handles part 2/2 2018-10-02 07:13:23 -07:00
ice_sched.h ice: Expand use of VSI handles part 2/2 2018-10-02 07:13:23 -07:00
ice_status.h ice: Prevent control queue operations during reset 2018-08-28 10:20:00 -07:00
ice_switch.c ice: Implement VSI replay framework 2018-10-02 07:14:23 -07:00
ice_switch.h ice: Implement VSI replay framework 2018-10-02 07:14:23 -07:00
ice_txrx.c ice: Add support for Tx hang, Tx timeout and malicious driver detection 2018-08-28 10:58:42 -07:00
ice_txrx.h ice: Add support for Tx hang, Tx timeout and malicious driver detection 2018-08-28 10:58:42 -07:00
ice_type.h ice: Implement VSI replay framework 2018-10-02 07:14:23 -07:00
ice.h ice: Split irq_tracker into sw_irq_tracker and hw_irq_tracker 2018-10-02 07:16:19 -07:00
Makefile ice: Move common functions out of ice_main.c part 1/7 2018-10-01 12:39:40 -07:00