// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) /* * Copyright(c) 2018 - 2020 Intel Corporation. */ #include "hfi.h" #include "affinity.h" #include "sdma.h" #include "netdev.h" /** * msix_initialize() - Calculate, request and configure MSIx IRQs * @dd: valid hfi1 devdata * */ int msix_initialize(struct hfi1_devdata *dd) { … } /** * msix_request_irq() - Allocate a free MSIx IRQ * @dd: valid devdata * @arg: context information for the IRQ * @handler: IRQ handler * @thread: IRQ thread handler (could be NULL) * @type: affinty IRQ type * @name: IRQ name * * Allocated an MSIx vector if available, and then create the appropriate * meta data needed to keep track of the pci IRQ request. * * Return: * < 0 Error * >= 0 MSIx vector * */ static int msix_request_irq(struct hfi1_devdata *dd, void *arg, irq_handler_t handler, irq_handler_t thread, enum irq_type type, const char *name) { … } static int msix_request_rcd_irq_common(struct hfi1_ctxtdata *rcd, irq_handler_t handler, irq_handler_t thread, const char *name) { … } /** * msix_request_rcd_irq() - Helper function for RCVAVAIL IRQs * @rcd: valid rcd context * */ int msix_request_rcd_irq(struct hfi1_ctxtdata *rcd) { … } /** * msix_netdev_request_rcd_irq - Helper function for RCVAVAIL IRQs * for netdev context * @rcd: valid netdev contexti */ int msix_netdev_request_rcd_irq(struct hfi1_ctxtdata *rcd) { … } /** * msix_request_sdma_irq - Helper for getting SDMA IRQ resources * @sde: valid sdma engine * */ int msix_request_sdma_irq(struct sdma_engine *sde) { … } /** * msix_request_general_irq - Helper for getting general IRQ * resources * @dd: valid device data */ int msix_request_general_irq(struct hfi1_devdata *dd) { … } /** * enable_sdma_srcs - Helper to enable SDMA IRQ srcs * @dd: valid devdata structure * @i: index of SDMA engine */ static void enable_sdma_srcs(struct hfi1_devdata *dd, int i) { … } /** * msix_request_irqs() - Allocate all MSIx IRQs * @dd: valid devdata structure * * Helper function to request the used MSIx IRQs. * */ int msix_request_irqs(struct hfi1_devdata *dd) { … } /** * msix_free_irq() - Free the specified MSIx resources and IRQ * @dd: valid devdata * @msix_intr: MSIx vector to free. * */ void msix_free_irq(struct hfi1_devdata *dd, u8 msix_intr) { … } /** * msix_clean_up_interrupts - Free all MSIx IRQ resources * @dd: valid device data data structure * * Free the MSIx and associated PCI resources, if they have been allocated. */ void msix_clean_up_interrupts(struct hfi1_devdata *dd) { … } /** * msix_netdev_synchronize_irq - netdev IRQ synchronize * @dd: valid devdata */ void msix_netdev_synchronize_irq(struct hfi1_devdata *dd) { … }