From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by dpdk.org (Postfix) with ESMTP id 3E6D01B3EB for ; Wed, 9 May 2018 14:46:12 +0200 (CEST) Received: by mail-lf0-f68.google.com with SMTP id g12-v6so50754533lfb.10 for ; Wed, 09 May 2018 05:46:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+FklDmlqURbE56VfAgj6PLxMFmXp3sYBRvXjlKv++u0=; b=LoMoQS7KU+2FBYxrMUSPKukzGA2GHxjKjA7dk+pCqPMVXzA+7jh/ClobJzDtK2WMos 3yKdv9Q8WcXOcuKmqNJ4veIyoPggQEM4U7mxz8lMdyagvSju/lZHlyv6ymHUV14DTClu fAweDV1XBC/8f6MoUmdamSAicOsUiPshG67z1SGx5qoRJXqjgDxmBGKwC8ay4h3kdD3l RoKifD3L8zoijeirxRF9RE7FS/Gz4U3OFHPFdBe46OBmDC8PPIf5rG2IqipLBLnCOJyD 13/4dDgbI3Laq4pkn6vJLAuP2V42LJwcq2E26Ti/NGXnQJ7tqX0No0gyzH4KIeu4/2nm M4AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+FklDmlqURbE56VfAgj6PLxMFmXp3sYBRvXjlKv++u0=; b=m/rP2A4mA/vweoq/88bL6WSdh3G31xxoiu+nM83PtDRBPHKzNtrmTm5v3RSkazpU3j ZnjDujSxNeM2oeS5VBVszN2kzeMfi0DL80Ee8klzEpfmex9tL3TavefjToB4KOw9y8Lf 86A38/beTw8v5EBfTQvoyQGfQSMYmXpqwDGyLjDnWET15+gfUufoBqutjjEivPwVbci+ 5dydwybMmSbHG5AUmKXuTi1OdNyk/tYj2Ww53f4sNRLRboRtxPwsshTY5GtserioL6mG xBLFrd7kA4lCvNcOSaOv1qRVipN2jyyz1c3szaSACnAKx4vGWwbQ386B/gMDAqm17Dg+ 2Vdg== X-Gm-Message-State: ALQs6tAYhoc7bnpBdJq7pXTpzctWZfNQCzAltAyqENXLAZ7BLaJsYjJl E49USTw3AdNi7OYBZdTblfpT7Q== X-Google-Smtp-Source: AB8JxZqna2bzZglp7ELSpLEK2FK+zk2rVc15fdUHjXKmWJU+WcHY2+PydWL5KVdGdfEHmLl4qMZ9hg== X-Received: by 2002:a2e:8794:: with SMTP id n20-v6mr32257158lji.38.1525869971897; Wed, 09 May 2018 05:46:11 -0700 (PDT) Received: from mkPC.semihalf.local (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id i6-v6sm5157497lji.49.2018.05.09.05.46.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 May 2018 05:46:11 -0700 (PDT) From: Michal Krawczyk To: Marcin Wojtas , Michal Krawczyk , Guy Tzalik , Evgeny Schemeilin Cc: dev@dpdk.org, matua@amazon.com Date: Wed, 9 May 2018 14:45:47 +0200 Message-Id: <20180509124552.22854-3-mk@semihalf.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180509124552.22854-1-mk@semihalf.com> References: <20180509124552.22854-1-mk@semihalf.com> Subject: [dpdk-dev] [PATCH v1 03/24] net/ena: add interrupt handler for admin queue X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2018 12:46:12 -0000 The ENA device is able to send MSI-X when it will complete an command when polling mode is deactivated. Further, the same interrupt handler will be used for the AENQ handling - services of the ENA device, that allows to implement watchdog or lsc handler. Signed-off-by: Michal Krawczyk --- drivers/net/ena/ena_ethdev.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 81e36b1ef..ec0380f0a 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -250,6 +250,7 @@ static bool ena_are_tx_queue_offloads_allowed(struct ena_adapter *adapter, uint64_t offloads); static bool ena_are_rx_queue_offloads_allowed(struct ena_adapter *adapter, uint64_t offloads); +static void ena_interrupt_handler_rte(void *cb_arg); static const struct eth_dev_ops ena_dev_ops = { .dev_configure = ena_dev_configure, @@ -463,9 +464,16 @@ static void ena_close(struct rte_eth_dev *dev) { struct ena_adapter *adapter = (struct ena_adapter *)(dev->data->dev_private); + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; adapter->state = ENA_ADAPTER_STATE_STOPPED; + rte_intr_disable(intr_handle); + rte_intr_callback_unregister(intr_handle, + ena_interrupt_handler_rte, + adapter); + ena_rx_queue_release_all(dev); ena_tx_queue_release_all(dev); } @@ -912,6 +920,8 @@ static int ena_start(struct rte_eth_dev *dev) { struct ena_adapter *adapter = (struct ena_adapter *)(dev->data->dev_private); + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; int rc = 0; if (!(adapter->state == ENA_ADAPTER_STATE_CONFIG || @@ -941,6 +951,11 @@ static int ena_start(struct rte_eth_dev *dev) ena_stats_restart(dev); + rte_intr_callback_register(intr_handle, + ena_interrupt_handler_rte, + adapter); + rte_intr_enable(intr_handle); + adapter->state = ENA_ADAPTER_STATE_RUNNING; return 0; @@ -1306,6 +1321,14 @@ static int ena_device_init(struct ena_com_dev *ena_dev, return rc; } +static void ena_interrupt_handler_rte(__rte_unused void *cb_arg) +{ + struct ena_adapter *adapter = (struct ena_adapter *)cb_arg; + struct ena_com_dev *ena_dev = &adapter->ena_dev; + + ena_com_admin_q_comp_intr_handler(ena_dev); +} + static int eth_ena_dev_init(struct rte_eth_dev *eth_dev) { struct rte_pci_device *pci_dev; -- 2.14.1