From patchwork Thu Sep 17 06:34:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77994 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 96705A04B6; Thu, 17 Sep 2020 08:36:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E90FB1D573; Thu, 17 Sep 2020 08:35:36 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id D8FFD1D545 for ; Thu, 17 Sep 2020 08:35:21 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 6120660073 for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from us4-mdac16-36.ut7.mdlocal (unknown [10.7.66.155]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 48CAC200A0 for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id C99501C004F for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 800A410005E for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZBda002470 for ; Thu, 17 Sep 2020 07:35:11 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id DC30C1613AB for ; Thu, 17 Sep 2020 07:35:11 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:27 +0100 Message-ID: <1600324483-23153-2-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-5.775400-8.000000-10 X-TMASE-MatchedRID: ojpZyXE5vzlUqNA9qwJ1qi2416nc3bQlenEjMjAtGW5jLp8Cm8vwF2dC uMvHMJPk3ME2UVQ+FZOZ+0WQG382ASHhSBQfglfsA9lly13c/gGrlTqw7wfC0wv1OPvvDLzsCD0 RmwdxSPqIZt4AfmB+ETNvFE2ADjNd77jN54p1A9xxoP7A9oFi1jH+T3YvtHy2Mhn6P25qDUaOAO J5icSnDZnyXkpK79PqkBkKBuv/osBZQlnEx7AYzdE+Q9UKuqQnR3E9eIAc6laX4KtwQf+wEdlQt UFiiij6Zw4LpWNuGtO8n1jRPumWKYFLOlyz97WhR/j040fRFpL54F/2i/DwjZ+4ziUPq4LxmZqm +pL7tVm2nC/wqQQZo14+exhLQAKsiwORQkMXRrxPs79gcmEg0DeWNSSXCb9ualBYlHon8nXRzxo 0NEcVqeLzNWBegCW2wgn7iDBesS15zdAzex5xZn3eFgfN916Kx61lGdRv2eT7VA3e7eI1Nu09Bx +484LTTquay9qrw3qUTGVAhB5EbQ== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--5.775400-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324521-TbgJaqyeIIq7 Subject: [dpdk-dev] [PATCH v2 01/17] net/sfc/base: add missing extern storage-class specifiers 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" libefx coding standard requires it and the specifier is used for almost all functions in the header file. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton Reviewed-by: Richard Houldsworth --- drivers/net/sfc/base/ef10_impl.h | 56 ++++++++++++++++---------------- drivers/net/sfc/base/efx.h | 18 +++++----- drivers/net/sfc/base/efx_impl.h | 18 +++++----- drivers/net/sfc/base/mcdi_mon.h | 4 +-- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/drivers/net/sfc/base/ef10_impl.h b/drivers/net/sfc/base/ef10_impl.h index 0530f62baa..1f17fc2f69 100644 --- a/drivers/net/sfc/base/ef10_impl.h +++ b/drivers/net/sfc/base/ef10_impl.h @@ -91,15 +91,15 @@ extern "C" { /* EV */ - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_ev_init( __in efx_nic_t *enp); - void +extern void ef10_ev_fini( __in efx_nic_t *enp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_ev_qcreate( __in efx_nic_t *enp, __in unsigned int index, @@ -110,85 +110,85 @@ ef10_ev_qcreate( __in uint32_t flags, __in efx_evq_t *eep); - void +extern void ef10_ev_qdestroy( __in efx_evq_t *eep); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_ev_qprime( __in efx_evq_t *eep, __in unsigned int count); - void +extern void ef10_ev_qpost( __in efx_evq_t *eep, __in uint16_t data); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_ev_qmoderate( __in efx_evq_t *eep, __in unsigned int us); #if EFSYS_OPT_QSTATS - void +extern void ef10_ev_qstats_update( __in efx_evq_t *eep, __inout_ecount(EV_NQSTATS) efsys_stat_t *stat); #endif /* EFSYS_OPT_QSTATS */ - void +extern void ef10_ev_rxlabel_init( __in efx_evq_t *eep, __in efx_rxq_t *erp, __in unsigned int label, __in efx_rxq_type_t type); - void +extern void ef10_ev_rxlabel_fini( __in efx_evq_t *eep, __in unsigned int label); /* INTR */ - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_intr_init( __in efx_nic_t *enp, __in efx_intr_type_t type, __in efsys_mem_t *esmp); - void +extern void ef10_intr_enable( __in efx_nic_t *enp); - void +extern void ef10_intr_disable( __in efx_nic_t *enp); - void +extern void ef10_intr_disable_unlocked( __in efx_nic_t *enp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_intr_trigger( __in efx_nic_t *enp, __in unsigned int level); - void +extern void ef10_intr_status_line( __in efx_nic_t *enp, __out boolean_t *fatalp, __out uint32_t *qmaskp); - void +extern void ef10_intr_status_message( __in efx_nic_t *enp, __in unsigned int message, __out boolean_t *fatalp); - void +extern void ef10_intr_fatal( __in efx_nic_t *enp); - void +extern void ef10_intr_fini( __in efx_nic_t *enp); @@ -1134,25 +1134,25 @@ typedef struct ef10_filter_table_s { uint32_t eft_encap_filter_count; } ef10_filter_table_t; - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_filter_init( __in efx_nic_t *enp); - void +extern void ef10_filter_fini( __in efx_nic_t *enp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_filter_restore( __in efx_nic_t *enp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_filter_add( __in efx_nic_t *enp, __inout efx_filter_spec_t *spec, __in enum efx_filter_replacement_policy_e policy); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_filter_delete( __in efx_nic_t *enp, __inout efx_filter_spec_t *spec); @@ -1394,26 +1394,26 @@ ef10_proxy_auth_privilege_modify( __in uint32_t add_privileges_mask, __in uint32_t remove_privileges_mask); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_proxy_auth_set_privilege_mask( __in efx_nic_t *enp, __in uint32_t vf_index, __in uint32_t mask, __in uint32_t value); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_proxy_auth_complete_request( __in efx_nic_t *enp, __in uint32_t fn_index, __in uint32_t proxy_result, __in uint32_t handle); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_proxy_auth_exec_cmd( __in efx_nic_t *enp, __inout efx_proxy_cmd_params_t *paramsp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t ef10_proxy_auth_get_privilege_mask( __in efx_nic_t *enp, __in uint32_t pf_index, diff --git a/drivers/net/sfc/base/efx.h b/drivers/net/sfc/base/efx.h index 07cd0bb398..f723ff2540 100644 --- a/drivers/net/sfc/base/efx.h +++ b/drivers/net/sfc/base/efx.h @@ -269,7 +269,7 @@ extern __checkReturn efx_rc_t efx_mcdi_reboot( __in efx_nic_t *enp); - void +extern void efx_mcdi_new_epoch( __in efx_nic_t *enp); @@ -2346,7 +2346,7 @@ efx_rx_fini( __in efx_nic_t *enp); #if EFSYS_OPT_RX_SCATTER - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_rx_scatter_enable( __in efx_nic_t *enp, __in unsigned int buf_size); @@ -3244,7 +3244,7 @@ efx_lic_write_key( __in uint32_t length, __out uint32_t *lengthp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_lic_delete_key( __in efx_nic_t *enp, __in_bcount(buffer_size) @@ -3511,38 +3511,38 @@ efx_proxy_auth_configure( __in efx_nic_t *enp, __in efx_proxy_auth_config_t *configp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_proxy_auth_destroy( __in efx_nic_t *enp, __in uint32_t handled_privileges); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_proxy_auth_complete_request( __in efx_nic_t *enp, __in uint32_t fn_index, __in uint32_t proxy_result, __in uint32_t handle); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_proxy_auth_exec_cmd( __in efx_nic_t *enp, __inout efx_proxy_cmd_params_t *paramsp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_proxy_auth_set_privilege_mask( __in efx_nic_t *enp, __in uint32_t vf_index, __in uint32_t mask, __in uint32_t value); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_proxy_auth_privilege_mask_get( __in efx_nic_t *enp, __in uint32_t pf_index, __in uint32_t vf_index, __out uint32_t *maskp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_proxy_auth_privilege_modify( __in efx_nic_t *enp, __in uint32_t pf_index, diff --git a/drivers/net/sfc/base/efx_impl.h b/drivers/net/sfc/base/efx_impl.h index c4718dba70..70176760be 100644 --- a/drivers/net/sfc/base/efx_impl.h +++ b/drivers/net/sfc/base/efx_impl.h @@ -566,14 +566,14 @@ typedef struct efx_vpd_ops_s { #if EFSYS_OPT_VPD || EFSYS_OPT_NVRAM - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_partitions( __in efx_nic_t *enp, __out_bcount(size) caddr_t data, __in size_t size, __out unsigned int *npartnp); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_metadata( __in efx_nic_t *enp, __in uint32_t partn, @@ -582,18 +582,18 @@ efx_mcdi_nvram_metadata( __out_bcount_opt(size) char *descp, __in size_t size); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_info( __in efx_nic_t *enp, __in uint32_t partn, __out efx_nvram_info_t *eni); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_update_start( __in efx_nic_t *enp, __in uint32_t partn); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_read( __in efx_nic_t *enp, __in uint32_t partn, @@ -602,14 +602,14 @@ efx_mcdi_nvram_read( __in size_t size, __in uint32_t mode); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_erase( __in efx_nic_t *enp, __in uint32_t partn, __in uint32_t offset, __in size_t size); - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_write( __in efx_nic_t *enp, __in uint32_t partn, @@ -620,7 +620,7 @@ efx_mcdi_nvram_write( #define EFX_NVRAM_UPDATE_FLAGS_BACKGROUND 0x00000001 #define EFX_NVRAM_UPDATE_FLAGS_POLL 0x00000002 - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_update_finish( __in efx_nic_t *enp, __in uint32_t partn, @@ -630,7 +630,7 @@ efx_mcdi_nvram_update_finish( #if EFSYS_OPT_DIAG - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t efx_mcdi_nvram_test( __in efx_nic_t *enp, __in uint32_t partn); diff --git a/drivers/net/sfc/base/mcdi_mon.h b/drivers/net/sfc/base/mcdi_mon.h index d7fbf07c36..c79f55c35f 100644 --- a/drivers/net/sfc/base/mcdi_mon.h +++ b/drivers/net/sfc/base/mcdi_mon.h @@ -17,11 +17,11 @@ extern "C" { #if EFSYS_OPT_MON_STATS - __checkReturn efx_rc_t +extern __checkReturn efx_rc_t mcdi_mon_cfg_build( __in efx_nic_t *enp); - void +extern void mcdi_mon_cfg_free( __in efx_nic_t *enp); From patchwork Thu Sep 17 06:34:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77990 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2BF8EA04B6; Thu, 17 Sep 2020 08:35:56 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D483B1D55B; Thu, 17 Sep 2020 08:35:31 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 0BCB91D519 for ; Thu, 17 Sep 2020 08:35:20 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 8116C60065 for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) Received: from us4-mdac16-53.ut7.mdlocal (unknown [10.7.66.24]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 7F46F8009B for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id B3C8E280050 for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 49DD810005E for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCC5002473 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id E8DE11613BE for ; Thu, 17 Sep 2020 07:35:11 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:28 +0100 Message-ID: <1600324483-23153-3-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-8.353000-8.000000-10 X-TMASE-MatchedRID: ibJnBZAVSm299CTQbGTA8i2416nc3bQlenEjMjAtGW5jLp8Cm8vwF2dC uMvHMJPkdePpOPwAbfzo9qFZCLqJ6SHhSBQfglfsA9lly13c/gGOz/LLJUcaHuLsQIDmr3S5ku+ GdcB8c5P7TxZiWxvtrGKW2rd6XT7zSGWRHxWKPlU1VHP4fCovglJVMsx1CTj3r3DiW2de5g84Yx 6cqKWhOpDzLY9lzbjhZEzgXAooBYiRQnbVeiX91kWj1375/pHqD+jls0cSwJNIyDY579vwTHiVB 3z9o3PEZAzUZBr6DH9rI/8rhwvvY9dsyStrXg4Qx5sgyUhLCNvqobkz1A0A7UYza41dGqxS21pB zAE1M7p6VHoyd6nIXVJ5VZ9Gme/UsMAFTJq6wcdIwW/Kvkvzgvf8ftp0B9+S1l38M6aWfEhYUJl u8+JdRWgv6GpGS92prboE/OvwNHCcv1o9RY5FQASx3eZas70iGwKs3RUcsbhRW4MQnfsyhsfxny 6hnu6szMCoBngkXEhVx3sKkKygH7xTpz2zW+LJkIA1wW1nvBOpXdWa4gU0S9Wb/MXO2XdLJECeE jkhvbzMwbZud6iYwMcZu5LNVdKtCf3iIcWqhY+AZJonBrzfUNyAomAsZentBwZ0IMCNOMFIVIDp 1pd6gILds98SH7b7iQkgbvdF4Plc3m1rWUs4apK9FvwQx1hFSoCG4sefl8QIpEFl2N6KTyJXmJt FWsY79i3Fbmglsrk32XcNcWNSKZ6xxdcaEpMSzfqlpbtmcWg9/b618SpbHQrkj7klVufu3xaZN6 v3k/o3vqqVT1u/o89fuxSQqqSyZRIK0b0NxHeeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8jpP8tMO yYmaA== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--8.353000-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324519-EtWKhjLWaM7d Subject: [dpdk-dev] [PATCH v2 02/17] net/sfc/base: decorate libefx API functions 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The decorators will be used in the future to mark libefx API functions as __rte_internal. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton Reviewed-by: Richard Houldsworth --- drivers/net/sfc/base/efx.h | 251 +++++++++++++++++++++++++++++++ drivers/net/sfc/base/efx_check.h | 9 ++ drivers/net/sfc/base/efx_mcdi.h | 1 + drivers/net/sfc/efsys.h | 3 + 4 files changed, 264 insertions(+) diff --git a/drivers/net/sfc/base/efx.h b/drivers/net/sfc/base/efx.h index f723ff2540..c1b4876314 100644 --- a/drivers/net/sfc/base/efx.h +++ b/drivers/net/sfc/base/efx.h @@ -58,6 +58,7 @@ typedef enum efx_family_e { EFX_FAMILY_NTYPES } efx_family_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_family( __in uint16_t venid, @@ -120,6 +121,7 @@ enum { }; /* Calculate the IEEE 802.3 CRC32 of a MAC addr */ +LIBEFX_API extern __checkReturn uint32_t efx_crc32_calculate( __in uint32_t crc_init, @@ -135,6 +137,7 @@ typedef struct efx_rxq_s efx_rxq_t; typedef struct efx_nic_s efx_nic_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_create( __in efx_family_t family, @@ -155,43 +158,52 @@ typedef enum efx_fw_variant_e { EFX_FW_VARIANT_DONT_CARE = 0xffffffff } efx_fw_variant_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_probe( __in efx_nic_t *enp, __in efx_fw_variant_t efv); +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_init( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_reset( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn boolean_t efx_nic_hw_unavailable( __in efx_nic_t *enp); +LIBEFX_API extern void efx_nic_set_hw_unavailable( __in efx_nic_t *enp); #if EFSYS_OPT_DIAG +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_register_test( __in efx_nic_t *enp); #endif /* EFSYS_OPT_DIAG */ +LIBEFX_API extern void efx_nic_fini( __in efx_nic_t *enp); +LIBEFX_API extern void efx_nic_unprobe( __in efx_nic_t *enp); +LIBEFX_API extern void efx_nic_destroy( __in efx_nic_t *enp); @@ -207,12 +219,14 @@ typedef enum efx_pcie_link_performance_e { EFX_PCIE_LINK_PERFORMANCE_OPTIMAL } efx_pcie_link_performance_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_calculate_pcie_link_bandwidth( __in uint32_t pcie_link_width, __in uint32_t pcie_link_gen, __out uint32_t *bandwidth_mbpsp); +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_check_pcie_link_speed( __in efx_nic_t *enp, @@ -260,39 +274,47 @@ typedef struct efx_mcdi_transport_s { #endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */ } efx_mcdi_transport_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_mcdi_init( __in efx_nic_t *enp, __in const efx_mcdi_transport_t *mtp); +LIBEFX_API extern __checkReturn efx_rc_t efx_mcdi_reboot( __in efx_nic_t *enp); +LIBEFX_API extern void efx_mcdi_new_epoch( __in efx_nic_t *enp); +LIBEFX_API extern void efx_mcdi_get_timeout( __in efx_nic_t *enp, __in efx_mcdi_req_t *emrp, __out uint32_t *usec_timeoutp); +LIBEFX_API extern void efx_mcdi_request_start( __in efx_nic_t *enp, __in efx_mcdi_req_t *emrp, __in boolean_t ev_cpl); +LIBEFX_API extern __checkReturn boolean_t efx_mcdi_request_poll( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn boolean_t efx_mcdi_request_abort( __in efx_nic_t *enp); +LIBEFX_API extern void efx_mcdi_fini( __in efx_nic_t *enp); @@ -312,47 +334,56 @@ typedef enum efx_intr_type_e { #define EFX_INTR_SIZE (sizeof (efx_oword_t)) +LIBEFX_API extern __checkReturn efx_rc_t efx_intr_init( __in efx_nic_t *enp, __in efx_intr_type_t type, __in_opt efsys_mem_t *esmp); +LIBEFX_API extern void efx_intr_enable( __in efx_nic_t *enp); +LIBEFX_API extern void efx_intr_disable( __in efx_nic_t *enp); +LIBEFX_API extern void efx_intr_disable_unlocked( __in efx_nic_t *enp); #define EFX_INTR_NEVQS 32 +LIBEFX_API extern __checkReturn efx_rc_t efx_intr_trigger( __in efx_nic_t *enp, __in unsigned int level); +LIBEFX_API extern void efx_intr_status_line( __in efx_nic_t *enp, __out boolean_t *fatalp, __out uint32_t *maskp); +LIBEFX_API extern void efx_intr_status_message( __in efx_nic_t *enp, __in unsigned int message, __out boolean_t *fatalp); +LIBEFX_API extern void efx_intr_fatal( __in efx_nic_t *enp); +LIBEFX_API extern void efx_intr_fini( __in efx_nic_t *enp); @@ -521,21 +552,25 @@ typedef enum efx_link_mode_e { #define EFX_MAC_PDU_MIN 60 #define EFX_MAC_PDU_MAX EFX_MAC_PDU(EFX_MAC_SDU_MAX) +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_pdu_get( __in efx_nic_t *enp, __out size_t *pdu); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_pdu_set( __in efx_nic_t *enp, __in size_t pdu); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_addr_set( __in efx_nic_t *enp, __in uint8_t *addr); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_filter_set( __in efx_nic_t *enp, @@ -544,33 +579,39 @@ efx_mac_filter_set( __in boolean_t all_mulcst, __in boolean_t brdcst); +LIBEFX_API extern void efx_mac_filter_get_all_ucast_mcast( __in efx_nic_t *enp, __out boolean_t *all_unicst, __out boolean_t *all_mulcst); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_multicast_list_set( __in efx_nic_t *enp, __in_ecount(6*count) uint8_t const *addrs, __in int count); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_filter_default_rxq_set( __in efx_nic_t *enp, __in efx_rxq_t *erp, __in boolean_t using_rss); +LIBEFX_API extern void efx_mac_filter_default_rxq_clear( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_drain( __in efx_nic_t *enp, __in boolean_t enabled); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_up( __in efx_nic_t *enp, @@ -579,12 +620,14 @@ efx_mac_up( #define EFX_FCNTL_RESPOND 0x00000001 #define EFX_FCNTL_GENERATE 0x00000002 +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_fcntl_set( __in efx_nic_t *enp, __in unsigned int fcntl, __in boolean_t autoneg); +LIBEFX_API extern void efx_mac_fcntl_get( __in efx_nic_t *enp, @@ -596,6 +639,7 @@ efx_mac_fcntl_get( #if EFSYS_OPT_NAMES +LIBEFX_API extern __checkReturn const char * efx_mac_stat_name( __in efx_nic_t *enp, @@ -617,6 +661,7 @@ efx_mac_stat_name( * returned. EFX_MAC_STATS_MASK_NPAGES multiplied by size of the page * (which is sizeof (uint32_t)) is sufficient. */ +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_stats_get_mask( __in efx_nic_t *enp, @@ -628,6 +673,7 @@ efx_mac_stats_get_mask( (1ULL << ((_stat) & (EFX_MAC_STATS_MASK_BITS_PER_PAGE - 1)))) +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_stats_clear( __in efx_nic_t *enp); @@ -645,11 +691,13 @@ efx_mac_stats_clear( * Thus, drivers should zero this buffer before use, so that not-understood * statistics read back as zero. */ +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_stats_upload( __in efx_nic_t *enp, __in efsys_mem_t *esmp); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_stats_periodic( __in efx_nic_t *enp, @@ -657,6 +705,7 @@ efx_mac_stats_periodic( __in uint16_t period_ms, __in boolean_t events); +LIBEFX_API extern __checkReturn efx_rc_t efx_mac_stats_update( __in efx_nic_t *enp, @@ -678,12 +727,14 @@ typedef enum efx_mon_type_e { #if EFSYS_OPT_NAMES +LIBEFX_API extern const char * efx_mon_name( __in efx_nic_t *enp); #endif /* EFSYS_OPT_NAMES */ +LIBEFX_API extern __checkReturn efx_rc_t efx_mon_init( __in efx_nic_t *enp); @@ -824,11 +875,13 @@ typedef enum efx_mon_stat_portmask_e { #if EFSYS_OPT_NAMES +LIBEFX_API extern const char * efx_mon_stat_name( __in efx_nic_t *enp, __in efx_mon_stat_t id); +LIBEFX_API extern const char * efx_mon_stat_description( __in efx_nic_t *enp, @@ -836,27 +889,32 @@ efx_mon_stat_description( #endif /* EFSYS_OPT_NAMES */ +LIBEFX_API extern __checkReturn boolean_t efx_mon_mcdi_to_efx_stat( __in int mcdi_index, __out efx_mon_stat_t *statp); +LIBEFX_API extern __checkReturn boolean_t efx_mon_get_stat_unit( __in efx_mon_stat_t stat, __out efx_mon_stat_unit_t *unitp); +LIBEFX_API extern __checkReturn boolean_t efx_mon_get_stat_portmap( __in efx_mon_stat_t stat, __out efx_mon_stat_portmask_t *maskp); +LIBEFX_API extern __checkReturn efx_rc_t efx_mon_stats_update( __in efx_nic_t *enp, __in efsys_mem_t *esmp, __inout_ecount(EFX_MON_NSTATS) efx_mon_stat_value_t *values); +LIBEFX_API extern __checkReturn efx_rc_t efx_mon_limits_update( __in efx_nic_t *enp, @@ -864,12 +922,14 @@ efx_mon_limits_update( #endif /* EFSYS_OPT_MON_STATS */ +LIBEFX_API extern void efx_mon_fini( __in efx_nic_t *enp); /* PHY */ +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_verify( __in efx_nic_t *enp); @@ -884,6 +944,7 @@ typedef enum efx_phy_led_mode_e { EFX_PHY_LED_NMODES } efx_phy_led_mode_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_led_set( __in efx_nic_t *enp, @@ -891,6 +952,7 @@ efx_phy_led_set( #endif /* EFSYS_OPT_PHY_LED_CONTROL */ +LIBEFX_API extern __checkReturn efx_rc_t efx_port_init( __in efx_nic_t *enp); @@ -947,11 +1009,13 @@ typedef enum efx_loopback_kind_e { EFX_LOOPBACK_NKINDS } efx_loopback_kind_t; +LIBEFX_API extern void efx_loopback_mask( __in efx_loopback_kind_t loopback_kind, __out efx_qword_t *maskp); +LIBEFX_API extern __checkReturn efx_rc_t efx_port_loopback_set( __in efx_nic_t *enp, @@ -960,6 +1024,7 @@ efx_port_loopback_set( #if EFSYS_OPT_NAMES +LIBEFX_API extern __checkReturn const char * efx_loopback_type_name( __in efx_nic_t *enp, @@ -969,11 +1034,13 @@ efx_loopback_type_name( #endif /* EFSYS_OPT_LOOPBACK */ +LIBEFX_API extern __checkReturn efx_rc_t efx_port_poll( __in efx_nic_t *enp, __out_opt efx_link_mode_t *link_modep); +LIBEFX_API extern void efx_port_fini( __in efx_nic_t *enp); @@ -1009,22 +1076,26 @@ typedef enum efx_phy_cap_type_e { #define EFX_PHY_CAP_DEFAULT 0x00000001 #define EFX_PHY_CAP_PERM 0x00000002 +LIBEFX_API extern void efx_phy_adv_cap_get( __in efx_nic_t *enp, __in uint32_t flag, __out uint32_t *maskp); +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_adv_cap_set( __in efx_nic_t *enp, __in uint32_t mask); +LIBEFX_API extern void efx_phy_lp_cap_get( __in efx_nic_t *enp, __out uint32_t *maskp); +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_oui_get( __in efx_nic_t *enp, @@ -1048,6 +1119,7 @@ typedef enum efx_phy_media_type_e { * the module, then this will be the media type of the module. * Otherwise it will be the media type of the port. */ +LIBEFX_API extern void efx_phy_media_type_get( __in efx_nic_t *enp, @@ -1080,6 +1152,7 @@ efx_phy_media_type_get( #define EFX_PHY_MEDIA_INFO_MAX_OFFSET 0x100 +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_module_get_info( __in efx_nic_t *enp, @@ -1145,6 +1218,7 @@ typedef enum efx_phy_stat_e { #if EFSYS_OPT_NAMES +LIBEFX_API extern const char * efx_phy_stat_name( __in efx_nic_t *enp, @@ -1154,6 +1228,7 @@ efx_phy_stat_name( #define EFX_PHY_STATS_SIZE 0x100 +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_stats_update( __in efx_nic_t *enp, @@ -1217,15 +1292,18 @@ typedef enum efx_bist_value_e { EFX_BIST_NVALUES, } efx_bist_value_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_bist_enable_offline( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_bist_start( __in efx_nic_t *enp, __in efx_bist_type_t type); +LIBEFX_API extern __checkReturn efx_rc_t efx_bist_poll( __in efx_nic_t *enp, @@ -1235,6 +1313,7 @@ efx_bist_poll( __out_ecount_opt(count) unsigned long *valuesp, __in size_t count); +LIBEFX_API extern void efx_bist_stop( __in efx_nic_t *enp, @@ -1446,6 +1525,7 @@ typedef struct efx_nic_cfg_s { #define EFX_PCI_VF_PARENT(_encp) ((_encp)->enc_pf) +LIBEFX_API extern const efx_nic_cfg_t * efx_nic_cfg_get( __in const efx_nic_t *enp); @@ -1470,6 +1550,7 @@ typedef struct efx_nic_fw_info_s { uint16_t enfi_tx_dpcpu_fw_id; } efx_nic_fw_info_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_get_fw_version( __in efx_nic_t *enp, @@ -1491,6 +1572,7 @@ typedef struct efx_drv_limits_s { uint32_t edl_max_pio_alloc_count; } efx_drv_limits_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_set_drv_limits( __inout efx_nic_t *enp, @@ -1503,6 +1585,7 @@ efx_nic_set_drv_limits( * should be advertised. It is valid to set the version string * only before efx_nic_probe() is called. */ +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_set_drv_version( __inout efx_nic_t *enp, @@ -1514,6 +1597,7 @@ typedef enum efx_nic_region_e { EFX_REGION_PIO_WRITE_VI, /* Memory BAR WC mapping */ } efx_nic_region_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_get_bar_region( __in efx_nic_t *enp, @@ -1521,6 +1605,7 @@ efx_nic_get_bar_region( __out uint32_t *offsetp, __out size_t *sizep); +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_get_vi_pool( __in efx_nic_t *enp, @@ -1550,33 +1635,39 @@ typedef struct efx_vpd_value_s { #define EFX_VPD_KEYWORD(x, y) ((x) | ((y) << 8)) +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_init( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_size( __in efx_nic_t *enp, __out size_t *sizep); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_read( __in efx_nic_t *enp, __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_verify( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_reinit( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_get( __in efx_nic_t *enp, @@ -1584,6 +1675,7 @@ efx_vpd_get( __in size_t size, __inout efx_vpd_value_t *evvp); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_set( __in efx_nic_t *enp, @@ -1591,6 +1683,7 @@ efx_vpd_set( __in size_t size, __in efx_vpd_value_t *evvp); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_next( __in efx_nic_t *enp, @@ -1599,12 +1692,14 @@ efx_vpd_next( __out efx_vpd_value_t *evvp, __inout unsigned int *contp); +LIBEFX_API extern __checkReturn efx_rc_t efx_vpd_write( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_API extern void efx_vpd_fini( __in efx_nic_t *enp); @@ -1648,42 +1743,49 @@ typedef struct efx_nvram_info_s { #define EFX_NVRAM_FLAG_READ_ONLY (1 << 0) +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_init( __in efx_nic_t *enp); #if EFSYS_OPT_DIAG +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_test( __in efx_nic_t *enp); #endif /* EFSYS_OPT_DIAG */ +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_size( __in efx_nic_t *enp, __in efx_nvram_type_t type, __out size_t *sizep); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_info( __in efx_nic_t *enp, __in efx_nvram_type_t type, __out efx_nvram_info_t *enip); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_rw_start( __in efx_nic_t *enp, __in efx_nvram_type_t type, __out_opt size_t *pref_chunkp); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_rw_finish( __in efx_nic_t *enp, __in efx_nvram_type_t type, __out_opt uint32_t *verify_resultp); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_get_version( __in efx_nic_t *enp, @@ -1691,6 +1793,7 @@ efx_nvram_get_version( __out uint32_t *subtypep, __out_ecount(4) uint16_t version[4]); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_read_chunk( __in efx_nic_t *enp, @@ -1699,6 +1802,7 @@ efx_nvram_read_chunk( __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_read_backup( __in efx_nic_t *enp, @@ -1707,12 +1811,14 @@ efx_nvram_read_backup( __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_set_version( __in efx_nic_t *enp, __in efx_nvram_type_t type, __in_ecount(4) uint16_t version[4]); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_validate( __in efx_nic_t *enp, @@ -1720,11 +1826,13 @@ efx_nvram_validate( __in_bcount(partn_size) caddr_t partn_data, __in size_t partn_size); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_erase( __in efx_nic_t *enp, __in efx_nvram_type_t type); +LIBEFX_API extern __checkReturn efx_rc_t efx_nvram_write_chunk( __in efx_nic_t *enp, @@ -1733,6 +1841,7 @@ efx_nvram_write_chunk( __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_API extern void efx_nvram_fini( __in efx_nic_t *enp); @@ -1742,6 +1851,7 @@ efx_nvram_fini( #if EFSYS_OPT_BOOTCFG /* Report size and offset of bootcfg sector in NVRAM partition. */ +LIBEFX_API extern __checkReturn efx_rc_t efx_bootcfg_sector_info( __in efx_nic_t *enp, @@ -1754,6 +1864,7 @@ efx_bootcfg_sector_info( * Copy bootcfg sector data to a target buffer which may differ in size. * Optionally corrects format errors in source buffer. */ +LIBEFX_API extern efx_rc_t efx_bootcfg_copy_sector( __in efx_nic_t *enp, @@ -1764,12 +1875,14 @@ efx_bootcfg_copy_sector( __in size_t data_size, __in boolean_t handle_format_errors); +LIBEFX_API extern efx_rc_t efx_bootcfg_read( __in efx_nic_t *enp, __out_bcount(size) uint8_t *data, __in size_t size); +LIBEFX_API extern efx_rc_t efx_bootcfg_write( __in efx_nic_t *enp, @@ -1807,17 +1920,20 @@ efx_bootcfg_write( #define EFX_DHCP_ENCAP_OPT(encapsulator, encapsulated) \ (uint16_t)(((encapsulator) << 8) | (encapsulated)) +LIBEFX_API extern __checkReturn uint8_t efx_dhcp_csum( __in_bcount(size) uint8_t const *data, __in size_t size); +LIBEFX_API extern __checkReturn efx_rc_t efx_dhcp_verify( __in_bcount(size) uint8_t const *data, __in size_t size, __out_opt size_t *usedp); +LIBEFX_API extern __checkReturn efx_rc_t efx_dhcp_find_tag( __in_bcount(buffer_length) uint8_t *bufferp, @@ -1826,6 +1942,7 @@ efx_dhcp_find_tag( __deref_out uint8_t **valuepp, __out size_t *value_lengthp); +LIBEFX_API extern __checkReturn efx_rc_t efx_dhcp_find_end( __in_bcount(buffer_length) uint8_t *bufferp, @@ -1833,12 +1950,14 @@ efx_dhcp_find_end( __deref_out uint8_t **endpp); +LIBEFX_API extern __checkReturn efx_rc_t efx_dhcp_delete_tag( __inout_bcount(buffer_length) uint8_t *bufferp, __in size_t buffer_length, __in uint16_t opt); +LIBEFX_API extern __checkReturn efx_rc_t efx_dhcp_add_tag( __inout_bcount(buffer_length) uint8_t *bufferp, @@ -1847,6 +1966,7 @@ efx_dhcp_add_tag( __in_bcount_opt(value_length) uint8_t *valuep, __in size_t value_length); +LIBEFX_API extern __checkReturn efx_rc_t efx_dhcp_update_tag( __inout_bcount(buffer_length) uint8_t *bufferp, @@ -1931,12 +2051,14 @@ typedef struct efx_image_info_s { efx_image_header_t * eii_headerp; } efx_image_info_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_check_reflash_image( __in void *bufferp, __in uint32_t buffer_size, __out efx_image_info_t *infop); +LIBEFX_API extern __checkReturn efx_rc_t efx_build_signed_image_write_buffer( __out_bcount(buffer_size) @@ -1965,6 +2087,7 @@ typedef void __in boolean_t negate, __out efx_qword_t *eqp); +LIBEFX_API extern __checkReturn efx_rc_t efx_sram_test( __in efx_nic_t *enp, @@ -1972,6 +2095,7 @@ efx_sram_test( #endif /* EFSYS_OPT_DIAG */ +LIBEFX_API extern __checkReturn efx_rc_t efx_sram_buf_tbl_set( __in efx_nic_t *enp, @@ -1979,6 +2103,7 @@ efx_sram_buf_tbl_set( __in efsys_mem_t *esmp, __in size_t n); +LIBEFX_API extern void efx_sram_buf_tbl_clear( __in efx_nic_t *enp, @@ -2042,19 +2167,23 @@ typedef enum efx_ev_qstat_e { #endif /* EFSYS_OPT_QSTATS */ +LIBEFX_API extern __checkReturn efx_rc_t efx_ev_init( __in efx_nic_t *enp); +LIBEFX_API extern void efx_ev_fini( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn size_t efx_evq_size( __in const efx_nic_t *enp, __in unsigned int ndescs); +LIBEFX_API extern __checkReturn unsigned int efx_evq_nbufs( __in const efx_nic_t *enp, @@ -2079,6 +2208,7 @@ efx_evq_nbufs( */ #define EFX_EVQ_FLAGS_NO_CONT_EV (0x10) +LIBEFX_API extern __checkReturn efx_rc_t efx_ev_qcreate( __in efx_nic_t *enp, @@ -2090,6 +2220,7 @@ efx_ev_qcreate( __in uint32_t flags, __deref_out efx_evq_t **eepp); +LIBEFX_API extern void efx_ev_qpost( __in efx_evq_t *eep, @@ -2276,6 +2407,7 @@ typedef struct efx_ev_callbacks_s { #endif /* EFSYS_OPT_MAC_STATS */ } efx_ev_callbacks_t; +LIBEFX_API extern __checkReturn boolean_t efx_ev_qpending( __in efx_evq_t *eep, @@ -2283,6 +2415,7 @@ efx_ev_qpending( #if EFSYS_OPT_EV_PREFETCH +LIBEFX_API extern void efx_ev_qprefetch( __in efx_evq_t *eep, @@ -2290,6 +2423,7 @@ efx_ev_qprefetch( #endif /* EFSYS_OPT_EV_PREFETCH */ +LIBEFX_API extern void efx_ev_qpoll( __in efx_evq_t *eep, @@ -2297,17 +2431,20 @@ efx_ev_qpoll( __in const efx_ev_callbacks_t *eecp, __in_opt void *arg); +LIBEFX_API extern __checkReturn efx_rc_t efx_ev_usecs_to_ticks( __in efx_nic_t *enp, __in unsigned int usecs, __out unsigned int *ticksp); +LIBEFX_API extern __checkReturn efx_rc_t efx_ev_qmoderate( __in efx_evq_t *eep, __in unsigned int us); +LIBEFX_API extern __checkReturn efx_rc_t efx_ev_qprime( __in efx_evq_t *eep, @@ -2317,6 +2454,7 @@ efx_ev_qprime( #if EFSYS_OPT_NAMES +LIBEFX_API extern const char * efx_ev_qstat_name( __in efx_nic_t *enp, @@ -2324,6 +2462,7 @@ efx_ev_qstat_name( #endif /* EFSYS_OPT_NAMES */ +LIBEFX_API extern void efx_ev_qstats_update( __in efx_evq_t *eep, @@ -2331,21 +2470,25 @@ efx_ev_qstats_update( #endif /* EFSYS_OPT_QSTATS */ +LIBEFX_API extern void efx_ev_qdestroy( __in efx_evq_t *eep); /* RX */ +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_init( __inout efx_nic_t *enp); +LIBEFX_API extern void efx_rx_fini( __in efx_nic_t *enp); #if EFSYS_OPT_RX_SCATTER +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scatter_enable( __in efx_nic_t *enp, @@ -2485,6 +2628,7 @@ typedef enum efx_rx_scale_context_type_e { */ #define EFX_RX_HASH_NFLAGS (EFX_RX_NCLASSES * EFX_RX_CLASS_HASH_NTUPLES) +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scale_hash_flags_get( __in efx_nic_t *enp, @@ -2493,17 +2637,20 @@ efx_rx_scale_hash_flags_get( __in unsigned int max_nflags, __out unsigned int *nflagsp); +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_hash_default_support_get( __in efx_nic_t *enp, __out efx_rx_hash_support_t *supportp); +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scale_default_support_get( __in efx_nic_t *enp, __out efx_rx_scale_context_type_t *typep); +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scale_context_alloc( __in efx_nic_t *enp, @@ -2511,11 +2658,13 @@ efx_rx_scale_context_alloc( __in uint32_t num_queues, __out uint32_t *rss_contextp); +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scale_context_free( __in efx_nic_t *enp, __in uint32_t rss_context); +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scale_mode_set( __in efx_nic_t *enp, @@ -2524,6 +2673,7 @@ efx_rx_scale_mode_set( __in efx_rx_hash_type_t type, __in boolean_t insert); +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scale_tbl_set( __in efx_nic_t *enp, @@ -2531,6 +2681,7 @@ efx_rx_scale_tbl_set( __in_ecount(n) unsigned int *table, __in size_t n); +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_scale_key_set( __in efx_nic_t *enp, @@ -2538,6 +2689,7 @@ efx_rx_scale_key_set( __in_ecount(n) uint8_t *key, __in size_t n); +LIBEFX_API extern __checkReturn uint32_t efx_pseudo_hdr_hash_get( __in efx_rxq_t *erp, @@ -2546,17 +2698,20 @@ efx_pseudo_hdr_hash_get( #endif /* EFSYS_OPT_RX_SCALE */ +LIBEFX_API extern __checkReturn efx_rc_t efx_pseudo_hdr_pkt_length_get( __in efx_rxq_t *erp, __in uint8_t *buffer, __out uint16_t *pkt_lengthp); +LIBEFX_API extern __checkReturn size_t efx_rxq_size( __in const efx_nic_t *enp, __in unsigned int ndescs); +LIBEFX_API extern __checkReturn unsigned int efx_rxq_nbufs( __in const efx_nic_t *enp, @@ -2587,6 +2742,7 @@ typedef enum efx_rxq_type_e { */ #define EFX_RXQ_FLAG_INNER_CLASSES 0x2 +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_qcreate( __in efx_nic_t *enp, @@ -2609,6 +2765,7 @@ efx_rx_qcreate( #define EFX_RXQ_PACKED_STREAM_BUF_SIZE_128K (128U * 1024) #define EFX_RXQ_PACKED_STREAM_BUF_SIZE_64K (64U * 1024) +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_qcreate_packed_stream( __in efx_nic_t *enp, @@ -2627,6 +2784,7 @@ efx_rx_qcreate_packed_stream( /* Maximum head-of-line block timeout in nanoseconds */ #define EFX_RXQ_ES_SUPER_BUFFER_HOL_BLOCK_MAX (400U * 1000 * 1000) +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_qcreate_es_super_buffer( __in efx_nic_t *enp, @@ -2654,6 +2812,7 @@ typedef struct efx_desc_s { efx_qword_t ed_eq; } efx_desc_t; +LIBEFX_API extern void efx_rx_qpost( __in efx_rxq_t *erp, @@ -2663,6 +2822,7 @@ efx_rx_qpost( __in unsigned int completed, __in unsigned int added); +LIBEFX_API extern void efx_rx_qpush( __in efx_rxq_t *erp, @@ -2671,10 +2831,12 @@ efx_rx_qpush( #if EFSYS_OPT_RX_PACKED_STREAM +LIBEFX_API extern void efx_rx_qpush_ps_credits( __in efx_rxq_t *erp); +LIBEFX_API extern __checkReturn uint8_t * efx_rx_qps_packet_info( __in efx_rxq_t *erp, @@ -2686,14 +2848,17 @@ efx_rx_qps_packet_info( __out uint32_t *timestamp); #endif +LIBEFX_API extern __checkReturn efx_rc_t efx_rx_qflush( __in efx_rxq_t *erp); +LIBEFX_API extern void efx_rx_qenable( __in efx_rxq_t *erp); +LIBEFX_API extern void efx_rx_qdestroy( __in efx_rxq_t *erp); @@ -2715,19 +2880,23 @@ typedef enum efx_tx_qstat_e { #endif /* EFSYS_OPT_QSTATS */ +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_init( __in efx_nic_t *enp); +LIBEFX_API extern void efx_tx_fini( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn size_t efx_txq_size( __in const efx_nic_t *enp, __in unsigned int ndescs); +LIBEFX_API extern __checkReturn unsigned int efx_txq_nbufs( __in const efx_nic_t *enp, @@ -2741,6 +2910,7 @@ efx_txq_nbufs( #define EFX_TXQ_CKSUM_INNER_IPV4 0x0008 #define EFX_TXQ_CKSUM_INNER_TCPUDP 0x0010 +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qcreate( __in efx_nic_t *enp, @@ -2754,6 +2924,7 @@ efx_tx_qcreate( __deref_out efx_txq_t **etpp, __out unsigned int *addedp); +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qpost( __in efx_txq_t *etp, @@ -2762,33 +2933,40 @@ efx_tx_qpost( __in unsigned int completed, __inout unsigned int *addedp); +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qpace( __in efx_txq_t *etp, __in unsigned int ns); +LIBEFX_API extern void efx_tx_qpush( __in efx_txq_t *etp, __in unsigned int added, __in unsigned int pushed); +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qflush( __in efx_txq_t *etp); +LIBEFX_API extern void efx_tx_qenable( __in efx_txq_t *etp); +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qpio_enable( __in efx_txq_t *etp); +LIBEFX_API extern void efx_tx_qpio_disable( __in efx_txq_t *etp); +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qpio_write( __in efx_txq_t *etp, @@ -2796,6 +2974,7 @@ efx_tx_qpio_write( __in size_t buf_length, __in size_t pio_buf_offset); +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qpio_post( __in efx_txq_t *etp, @@ -2803,6 +2982,7 @@ efx_tx_qpio_post( __in unsigned int completed, __inout unsigned int *addedp); +LIBEFX_API extern __checkReturn efx_rc_t efx_tx_qdesc_post( __in efx_txq_t *etp, @@ -2811,6 +2991,7 @@ efx_tx_qdesc_post( __in unsigned int completed, __inout unsigned int *addedp); +LIBEFX_API extern void efx_tx_qdesc_dma_create( __in efx_txq_t *etp, @@ -2819,6 +3000,7 @@ efx_tx_qdesc_dma_create( __in boolean_t eop, __out efx_desc_t *edp); +LIBEFX_API extern void efx_tx_qdesc_tso_create( __in efx_txq_t *etp, @@ -2833,6 +3015,7 @@ efx_tx_qdesc_tso_create( /* Maximum number of DMA segments per TSO packet (not superframe) */ #define EFX_TX_FATSOV2_DMA_SEGS_PER_PKT_MAX 24 +LIBEFX_API extern void efx_tx_qdesc_tso2_create( __in efx_txq_t *etp, @@ -2843,12 +3026,14 @@ efx_tx_qdesc_tso2_create( __out_ecount(count) efx_desc_t *edp, __in int count); +LIBEFX_API extern void efx_tx_qdesc_vlantci_create( __in efx_txq_t *etp, __in uint16_t tci, __out efx_desc_t *edp); +LIBEFX_API extern void efx_tx_qdesc_checksum_create( __in efx_txq_t *etp, @@ -2859,6 +3044,7 @@ efx_tx_qdesc_checksum_create( #if EFSYS_OPT_NAMES +LIBEFX_API extern const char * efx_tx_qstat_name( __in efx_nic_t *etp, @@ -2866,6 +3052,7 @@ efx_tx_qstat_name( #endif /* EFSYS_OPT_NAMES */ +LIBEFX_API extern void efx_tx_qstats_update( __in efx_txq_t *etp, @@ -2873,6 +3060,7 @@ efx_tx_qstats_update( #endif /* EFSYS_OPT_QSTATS */ +LIBEFX_API extern void efx_tx_qdestroy( __in efx_txq_t *etp); @@ -3004,28 +3192,34 @@ typedef struct efx_filter_spec_s { #define EFX_FILTER_SPEC_RX_DMAQ_ID_DROP 0xfff #define EFX_FILTER_SPEC_VID_UNSPEC 0xffff +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_init( __in efx_nic_t *enp); +LIBEFX_API extern void efx_filter_fini( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_insert( __in efx_nic_t *enp, __inout efx_filter_spec_t *spec); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_remove( __in efx_nic_t *enp, __inout efx_filter_spec_t *spec); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_restore( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_supported_filters( __in efx_nic_t *enp, @@ -3033,6 +3227,7 @@ efx_filter_supported_filters( __in size_t buffer_length, __out size_t *list_lengthp); +LIBEFX_API extern void efx_filter_spec_init_rx( __out efx_filter_spec_t *spec, @@ -3040,11 +3235,13 @@ efx_filter_spec_init_rx( __in efx_filter_flags_t flags, __in efx_rxq_t *erp); +LIBEFX_API extern void efx_filter_spec_init_tx( __out efx_filter_spec_t *spec, __in efx_txq_t *etp); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_ipv4_local( __inout efx_filter_spec_t *spec, @@ -3052,6 +3249,7 @@ efx_filter_spec_set_ipv4_local( __in uint32_t host, __in uint16_t port); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_ipv4_full( __inout efx_filter_spec_t *spec, @@ -3061,21 +3259,25 @@ efx_filter_spec_set_ipv4_full( __in uint32_t rhost, __in uint16_t rport); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_eth_local( __inout efx_filter_spec_t *spec, __in uint16_t vid, __in const uint8_t *addr); +LIBEFX_API extern void efx_filter_spec_set_ether_type( __inout efx_filter_spec_t *spec, __in uint16_t ether_type); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_uc_def( __inout efx_filter_spec_t *spec); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_mc_def( __inout efx_filter_spec_t *spec); @@ -3086,12 +3288,14 @@ typedef enum efx_filter_inner_frame_match_e { EFX_FILTER_INNER_FRAME_MATCH_UNKNOWN_UCAST_DST } efx_filter_inner_frame_match_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_encap_type( __inout efx_filter_spec_t *spec, __in efx_tunnel_protocol_t encap_type, __in efx_filter_inner_frame_match_t inner_frame_match); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_vxlan( __inout efx_filter_spec_t *spec, @@ -3099,6 +3303,7 @@ efx_filter_spec_set_vxlan( __in const uint8_t *inner_addr, __in const uint8_t *outer_addr); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_geneve( __inout efx_filter_spec_t *spec, @@ -3106,6 +3311,7 @@ efx_filter_spec_set_geneve( __in const uint8_t *inner_addr, __in const uint8_t *outer_addr); +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_nvgre( __inout efx_filter_spec_t *spec, @@ -3114,6 +3320,7 @@ efx_filter_spec_set_nvgre( __in const uint8_t *outer_addr); #if EFSYS_OPT_RX_SCALE +LIBEFX_API extern __checkReturn efx_rc_t efx_filter_spec_set_rss_context( __inout efx_filter_spec_t *spec, @@ -3123,12 +3330,14 @@ efx_filter_spec_set_rss_context( /* HASH */ +LIBEFX_API extern __checkReturn uint32_t efx_hash_dwords( __in_ecount(count) uint32_t const *input, __in size_t count, __in uint32_t init); +LIBEFX_API extern __checkReturn uint32_t efx_hash_bytes( __in_ecount(length) uint8_t const *input, @@ -3151,33 +3360,40 @@ typedef struct efx_key_stats_s { uint32_t eks_licensed_features_hi; } efx_key_stats_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_init( __in efx_nic_t *enp); +LIBEFX_API extern void efx_lic_fini( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn boolean_t efx_lic_check_support( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_update_licenses( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_get_key_stats( __in efx_nic_t *enp, __out efx_key_stats_t *ksp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_app_state( __in efx_nic_t *enp, __in uint64_t app_id, __out boolean_t *licensedp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_get_id( __in efx_nic_t *enp, @@ -3187,6 +3403,7 @@ efx_lic_get_id( __out_opt uint8_t *bufferp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_find_start( __in efx_nic_t *enp, @@ -3195,6 +3412,7 @@ efx_lic_find_start( __in size_t buffer_size, __out uint32_t *startp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_find_end( __in efx_nic_t *enp, @@ -3204,6 +3422,7 @@ efx_lic_find_end( __in uint32_t offset, __out uint32_t *endp); +LIBEFX_API extern __checkReturn __success(return != B_FALSE) boolean_t efx_lic_find_key( __in efx_nic_t *enp, @@ -3214,12 +3433,14 @@ efx_lic_find_key( __out uint32_t *startp, __out uint32_t *lengthp); +LIBEFX_API extern __checkReturn __success(return != B_FALSE) boolean_t efx_lic_validate_key( __in efx_nic_t *enp, __in_bcount(length) caddr_t keyp, __in uint32_t length); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_read_key( __in efx_nic_t *enp, @@ -3233,6 +3454,7 @@ efx_lic_read_key( __in size_t key_max_size, __out uint32_t *lengthp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_write_key( __in efx_nic_t *enp, @@ -3244,6 +3466,7 @@ efx_lic_write_key( __in uint32_t length, __out uint32_t *lengthp); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_delete_key( __in efx_nic_t *enp, @@ -3255,6 +3478,7 @@ efx_lic_delete_key( __in uint32_t end, __out uint32_t *deltap); +LIBEFX_API extern __checkReturn efx_rc_t efx_lic_create_partition( __in efx_nic_t *enp, @@ -3275,10 +3499,12 @@ efx_lic_finish_partition( #if EFSYS_OPT_TUNNEL +LIBEFX_API extern __checkReturn efx_rc_t efx_tunnel_init( __in efx_nic_t *enp); +LIBEFX_API extern void efx_tunnel_fini( __in efx_nic_t *enp); @@ -3290,18 +3516,21 @@ efx_tunnel_fini( * The UDP port/protocol list is global. */ +LIBEFX_API extern __checkReturn efx_rc_t efx_tunnel_config_udp_add( __in efx_nic_t *enp, __in uint16_t port /* host/cpu-endian */, __in efx_tunnel_protocol_t protocol); +LIBEFX_API extern __checkReturn efx_rc_t efx_tunnel_config_udp_remove( __in efx_nic_t *enp, __in uint16_t port /* host/cpu-endian */, __in efx_tunnel_protocol_t protocol); +LIBEFX_API extern void efx_tunnel_config_clear( __in efx_nic_t *enp); @@ -3312,6 +3541,7 @@ efx_tunnel_config_clear( * EAGAIN is returned if hardware will be reset (datapath and managment CPU * reboot). */ +LIBEFX_API extern __checkReturn efx_rc_t efx_tunnel_reconfigure( __in efx_nic_t *enp); @@ -3339,11 +3569,13 @@ typedef enum efx_nic_fw_subvariant_e { EFX_NIC_FW_SUBVARIANT_NTYPES } efx_nic_fw_subvariant_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_get_fw_subvariant( __in efx_nic_t *enp, __out efx_nic_fw_subvariant_t *subvariantp); +LIBEFX_API extern __checkReturn efx_rc_t efx_nic_set_fw_subvariant( __in efx_nic_t *enp, @@ -3357,6 +3589,7 @@ typedef enum efx_phy_fec_type_e { EFX_PHY_FEC_RS } efx_phy_fec_type_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_fec_type_get( __in efx_nic_t *enp, @@ -3371,6 +3604,7 @@ typedef struct efx_phy_link_state_s { efx_link_mode_t epls_link_mode; } efx_phy_link_state_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_phy_link_state_get( __in efx_nic_t *enp, @@ -3424,14 +3658,17 @@ typedef struct efx_vport_config_s { typedef struct efx_vswitch_s efx_vswitch_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_evb_init( __in efx_nic_t *enp); +LIBEFX_API extern void efx_evb_fini( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_evb_vswitch_create( __in efx_nic_t *enp, @@ -3439,11 +3676,13 @@ efx_evb_vswitch_create( __inout_ecount(num_vports) efx_vport_config_t *vport_configp, __deref_out efx_vswitch_t **evpp); +LIBEFX_API extern __checkReturn efx_rc_t efx_evb_vswitch_destroy( __in efx_nic_t *enp, __in efx_vswitch_t *evp); +LIBEFX_API extern __checkReturn efx_rc_t efx_evb_vport_mac_set( __in efx_nic_t *enp, @@ -3451,6 +3690,7 @@ efx_evb_vport_mac_set( __in efx_vport_id_t vport_id, __in_bcount(EFX_MAC_ADDR_LEN) uint8_t *addrp); +LIBEFX_API extern __checkReturn efx_rc_t efx_evb_vport_vlan_set( __in efx_nic_t *enp, @@ -3458,6 +3698,7 @@ efx_evb_vport_vlan_set( __in efx_vport_id_t vport_id, __in uint16_t vid); +LIBEFX_API extern __checkReturn efx_rc_t efx_evb_vport_reset( __in efx_nic_t *enp, @@ -3467,6 +3708,7 @@ efx_evb_vport_reset( __in uint16_t vid, __out boolean_t *is_fn_resetp); +LIBEFX_API extern __checkReturn efx_rc_t efx_evb_vport_stats( __in efx_nic_t *enp, @@ -3498,24 +3740,29 @@ typedef struct efx_proxy_cmd_params_s { size_t *response_size_actualp; } efx_proxy_cmd_params_t; +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_init( __in efx_nic_t *enp); +LIBEFX_API extern void efx_proxy_auth_fini( __in efx_nic_t *enp); +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_configure( __in efx_nic_t *enp, __in efx_proxy_auth_config_t *configp); +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_destroy( __in efx_nic_t *enp, __in uint32_t handled_privileges); +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_complete_request( __in efx_nic_t *enp, @@ -3523,11 +3770,13 @@ efx_proxy_auth_complete_request( __in uint32_t proxy_result, __in uint32_t handle); +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_exec_cmd( __in efx_nic_t *enp, __inout efx_proxy_cmd_params_t *paramsp); +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_set_privilege_mask( __in efx_nic_t *enp, @@ -3535,6 +3784,7 @@ efx_proxy_auth_set_privilege_mask( __in uint32_t mask, __in uint32_t value); +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_privilege_mask_get( __in efx_nic_t *enp, @@ -3542,6 +3792,7 @@ efx_proxy_auth_privilege_mask_get( __in uint32_t vf_index, __out uint32_t *maskp); +LIBEFX_API extern __checkReturn efx_rc_t efx_proxy_auth_privilege_modify( __in efx_nic_t *enp, diff --git a/drivers/net/sfc/base/efx_check.h b/drivers/net/sfc/base/efx_check.h index 5965247569..41300fd9b1 100644 --- a/drivers/net/sfc/base/efx_check.h +++ b/drivers/net/sfc/base/efx_check.h @@ -9,6 +9,15 @@ #include "efsys.h" +/* + * LIBEFX_* defines may be used to put API functions into dedicated code + * section if required by driver development framework and conventions. + */ + +#ifndef LIBEFX_API +# error "LIBEFX_API must be defined" +#endif + /* * Check that the efsys.h header in client code has a valid combination of * EFSYS_OPT_xxx options. diff --git a/drivers/net/sfc/base/efx_mcdi.h b/drivers/net/sfc/base/efx_mcdi.h index d199060a41..42c84eb7d6 100644 --- a/drivers/net/sfc/base/efx_mcdi.h +++ b/drivers/net/sfc/base/efx_mcdi.h @@ -74,6 +74,7 @@ efx_mcdi_ev_cpl( __in int errcode); #if EFSYS_OPT_MCDI_PROXY_AUTH +LIBEFX_API extern __checkReturn efx_rc_t efx_mcdi_get_proxy_handle( __in efx_nic_t *enp, diff --git a/drivers/net/sfc/efsys.h b/drivers/net/sfc/efsys.h index c94e6c0b93..cc132d83bb 100644 --- a/drivers/net/sfc/efsys.h +++ b/drivers/net/sfc/efsys.h @@ -32,6 +32,9 @@ extern "C" { #endif +/* No specific decorations required since all functions are local now */ +#define LIBEFX_API + #define EFSYS_HAS_UINT64 1 #define EFSYS_USE_UINT64 1 #define EFSYS_HAS_SSE2_M128 1 From patchwork Thu Sep 17 06:34:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 78001 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6EE5EA04B6; Thu, 17 Sep 2020 08:37:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0AB481D5A4; Thu, 17 Sep 2020 08:35:47 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 085DC1D54A for ; Thu, 17 Sep 2020 08:35:25 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 8A37F60053 for ; Thu, 17 Sep 2020 06:35:24 +0000 (UTC) Received: from us4-mdac16-52.ut7.mdlocal (unknown [10.7.66.23]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 897052009A for ; Thu, 17 Sep 2020 06:35:24 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id C3BB31C0051 for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 791EE10005E for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCYu002478 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 034571613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:29 +0100 Message-ID: <1600324483-23153-4-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-12.068100-8.000000-10 X-TMASE-MatchedRID: ibJnBZAVSm3AGgLrCY70f3E8DpquRinQaeMaKzvXUpnYzDFd3mQzYd1N 6eaZ7jFz8XVI39JCRnSlskwMhnibr3rSP9RtGZYoJxGpoclVv6eXh6cfI6kzO1OitEi5p2m0cij MZrr2iZ2t2gtuWr1Lml/NnaI9HF5etuHEcDwMTCeLCYYg4B+SYSz0ibuY6L9mx6C6dcifNxgb/6 44p3jxBz+HFa5ntl5cXncnPcSgkajErhw/CPhbBc36paW7ZnFoXGjQf7uckKv5niUX8JbmBsiFU APw0Pi3df9no6/gViZC9o63ueLr7dwGyLnS1FSdB7TqRAYVohYX78cTYKd+cMy6+ygSGlBPEoN4 n3g9RrYBUuWQdqZN+107whOuWkhF/wc4BmSs8N2iAZ3zAhQYglQhqd4OP4Y7hLFp6kDqprRQfCi BCXBOSa7xzcHyKDUOcHTHoz+bNIUFu+Irw8cMdub3p4cnIXGNN5Y1JJcJv25RW4MQnfsyhjqbUS cd8Lfu6N+sCTQouGPTwXod9C5zlboYxrrj2Su4F9p7X9UAWGWSiza26cvwNHD7h3yMTXLJqKnXy /QNZhV58guN4Rnv38dxqwvCtHsJ5rZk5Tf98PDnZxuPj9aY+zKx0awWOyc1q4++j0vqJogAaV5d FN1EUYqy5mGXzhFOrf7C4HJrYGlJVeVxUA0ddrBZAi3nrnzbiMxrpvoBfm2RoQLwUmtovxg5vyF 0rotX1UWUvqxcE6o5BjV11ZAaOpG3xUgZJlVX0T5D1Qq6pCcxXH/dlhvLv5WjuQbzw7c3N17Xwn /rN3M1lNZgSEVpul5uQUZJ624GtKK2P+LRq7ueAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8jpP8tMO yYmaA== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--12.068100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324524-sEcCKFsoVilP Subject: [dpdk-dev] [PATCH v2 03/17] net/sfc/base: decorate libefx internal extern functions 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The decorator may be used in the future to instruct linker to put it into dedicated sections or hide. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton Reviewed-by: Mark Spender Reviewed-by: Richard Houldsworth --- drivers/net/sfc/base/ef10_impl.h | 194 +++++++++++++++++++++++++++ drivers/net/sfc/base/efx_check.h | 4 + drivers/net/sfc/base/efx_impl.h | 26 ++++ drivers/net/sfc/base/efx_mcdi.h | 28 ++++ drivers/net/sfc/base/hunt_impl.h | 1 + drivers/net/sfc/base/mcdi_mon.h | 5 + drivers/net/sfc/base/medford2_impl.h | 1 + drivers/net/sfc/base/medford_impl.h | 1 + drivers/net/sfc/base/siena_impl.h | 60 +++++++++ drivers/net/sfc/efsys.h | 1 + 10 files changed, 321 insertions(+) diff --git a/drivers/net/sfc/base/ef10_impl.h b/drivers/net/sfc/base/ef10_impl.h index 1f17fc2f69..da0ec7fab5 100644 --- a/drivers/net/sfc/base/ef10_impl.h +++ b/drivers/net/sfc/base/ef10_impl.h @@ -91,14 +91,17 @@ extern "C" { /* EV */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_ev_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_ev_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_ev_qcreate( __in efx_nic_t *enp, @@ -110,32 +113,38 @@ ef10_ev_qcreate( __in uint32_t flags, __in efx_evq_t *eep); +LIBEFX_INTERNAL extern void ef10_ev_qdestroy( __in efx_evq_t *eep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_ev_qprime( __in efx_evq_t *eep, __in unsigned int count); +LIBEFX_INTERNAL extern void ef10_ev_qpost( __in efx_evq_t *eep, __in uint16_t data); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_ev_qmoderate( __in efx_evq_t *eep, __in unsigned int us); #if EFSYS_OPT_QSTATS +LIBEFX_INTERNAL extern void ef10_ev_qstats_update( __in efx_evq_t *eep, __inout_ecount(EV_NQSTATS) efsys_stat_t *stat); #endif /* EFSYS_OPT_QSTATS */ +LIBEFX_INTERNAL extern void ef10_ev_rxlabel_init( __in efx_evq_t *eep, @@ -143,6 +152,7 @@ ef10_ev_rxlabel_init( __in unsigned int label, __in efx_rxq_type_t type); +LIBEFX_INTERNAL extern void ef10_ev_rxlabel_fini( __in efx_evq_t *eep, @@ -150,74 +160,90 @@ ef10_ev_rxlabel_fini( /* INTR */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_intr_init( __in efx_nic_t *enp, __in efx_intr_type_t type, __in efsys_mem_t *esmp); +LIBEFX_INTERNAL extern void ef10_intr_enable( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_intr_disable( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_intr_disable_unlocked( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_intr_trigger( __in efx_nic_t *enp, __in unsigned int level); +LIBEFX_INTERNAL extern void ef10_intr_status_line( __in efx_nic_t *enp, __out boolean_t *fatalp, __out uint32_t *qmaskp); +LIBEFX_INTERNAL extern void ef10_intr_status_message( __in efx_nic_t *enp, __in unsigned int message, __out boolean_t *fatalp); +LIBEFX_INTERNAL extern void ef10_intr_fatal( __in efx_nic_t *enp); + +LIBEFX_INTERNAL extern void ef10_intr_fini( __in efx_nic_t *enp); /* NIC */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_vadaptor_alloc( __in efx_nic_t *enp, __in uint32_t port_id); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_vadaptor_free( __in efx_nic_t *enp, __in uint32_t port_id); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_probe( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_set_drv_limits( __inout efx_nic_t *enp, __in efx_drv_limits_t *edlp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_get_vi_pool( __in efx_nic_t *enp, __out uint32_t *vi_countp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_get_bar_region( __in efx_nic_t *enp, @@ -225,34 +251,41 @@ ef10_nic_get_bar_region( __out uint32_t *offsetp, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_reset( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn boolean_t ef10_nic_hw_unavailable( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_nic_set_hw_unavailable( __in efx_nic_t *enp); #if EFSYS_OPT_DIAG +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_register_test( __in efx_nic_t *enp); #endif /* EFSYS_OPT_DIAG */ +LIBEFX_INTERNAL extern void ef10_nic_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_nic_unprobe( __in efx_nic_t *enp); @@ -260,49 +293,59 @@ ef10_nic_unprobe( /* MAC */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_poll( __in efx_nic_t *enp, __out efx_link_mode_t *link_modep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_up( __in efx_nic_t *enp, __out boolean_t *mac_upp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_addr_set( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_pdu_set( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_pdu_get( __in efx_nic_t *enp, __out size_t *pdu); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_reconfigure( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_multicast_list_set( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_filter_default_rxq_set( __in efx_nic_t *enp, __in efx_rxq_t *erp, __in boolean_t using_rss); +LIBEFX_INTERNAL extern void ef10_mac_filter_default_rxq_clear( __in efx_nic_t *enp); #if EFSYS_OPT_LOOPBACK +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_loopback_set( __in efx_nic_t *enp, @@ -313,12 +356,14 @@ ef10_mac_loopback_set( #if EFSYS_OPT_MAC_STATS +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_stats_get_mask( __in efx_nic_t *enp, __inout_bcount(mask_size) uint32_t *maskp, __in size_t mask_size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mac_stats_update( __in efx_nic_t *enp, @@ -333,15 +378,18 @@ ef10_mac_stats_update( #if EFSYS_OPT_MCDI +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mcdi_init( __in efx_nic_t *enp, __in const efx_mcdi_transport_t *mtp); +LIBEFX_INTERNAL extern void ef10_mcdi_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_mcdi_send_request( __in efx_nic_t *enp, @@ -350,10 +398,12 @@ ef10_mcdi_send_request( __in_bcount(sdu_len) void *sdup, __in size_t sdu_len); +LIBEFX_INTERNAL extern __checkReturn boolean_t ef10_mcdi_poll_response( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_mcdi_read_response( __in efx_nic_t *enp, @@ -361,16 +411,19 @@ ef10_mcdi_read_response( __in size_t offset, __in size_t length); +LIBEFX_INTERNAL extern efx_rc_t ef10_mcdi_poll_reboot( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_mcdi_feature_supported( __in efx_nic_t *enp, __in efx_mcdi_feature_id_t id, __out boolean_t *supportedp); +LIBEFX_INTERNAL extern void ef10_mcdi_get_timeout( __in efx_nic_t *enp, @@ -383,6 +436,7 @@ ef10_mcdi_get_timeout( #if EFSYS_OPT_NVRAM || EFSYS_OPT_VPD +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buf_read_tlv( __in efx_nic_t *enp, @@ -392,6 +446,7 @@ ef10_nvram_buf_read_tlv( __deref_out_bcount_opt(*sizep) caddr_t *datap, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buf_write_tlv( __inout_bcount(partn_size) caddr_t partn_data, @@ -401,6 +456,7 @@ ef10_nvram_buf_write_tlv( __in size_t tag_size, __out size_t *total_lengthp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_read_tlv( __in efx_nic_t *enp, @@ -409,6 +465,7 @@ ef10_nvram_partn_read_tlv( __deref_out_bcount_opt(*sizep) caddr_t *datap, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_write_tlv( __in efx_nic_t *enp, @@ -417,6 +474,7 @@ ef10_nvram_partn_write_tlv( __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_write_segment_tlv( __in efx_nic_t *enp, @@ -426,11 +484,13 @@ ef10_nvram_partn_write_segment_tlv( __in size_t size, __in boolean_t all_segments); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_lock( __in efx_nic_t *enp, __in uint32_t partn); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_unlock( __in efx_nic_t *enp, @@ -443,36 +503,42 @@ ef10_nvram_partn_unlock( #if EFSYS_OPT_DIAG +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_test( __in efx_nic_t *enp); #endif /* EFSYS_OPT_DIAG */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_type_to_partn( __in efx_nic_t *enp, __in efx_nvram_type_t type, __out uint32_t *partnp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_size( __in efx_nic_t *enp, __in uint32_t partn, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_info( __in efx_nic_t *enp, __in uint32_t partn, __out efx_nvram_info_t * enip); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_rw_start( __in efx_nic_t *enp, __in uint32_t partn, __out size_t *chunk_sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_read_mode( __in efx_nic_t *enp, @@ -482,6 +548,7 @@ ef10_nvram_partn_read_mode( __in size_t size, __in uint32_t mode); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_read( __in efx_nic_t *enp, @@ -490,6 +557,7 @@ ef10_nvram_partn_read( __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_read_backup( __in efx_nic_t *enp, @@ -498,6 +566,7 @@ ef10_nvram_partn_read_backup( __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_erase( __in efx_nic_t *enp, @@ -505,6 +574,7 @@ ef10_nvram_partn_erase( __in unsigned int offset, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_write( __in efx_nic_t *enp, @@ -513,12 +583,14 @@ ef10_nvram_partn_write( __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_rw_finish( __in efx_nic_t *enp, __in uint32_t partn, __out_opt uint32_t *verify_resultp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_get_version( __in efx_nic_t *enp, @@ -526,12 +598,14 @@ ef10_nvram_partn_get_version( __out uint32_t *subtypep, __out_ecount(4) uint16_t version[4]); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_partn_set_version( __in efx_nic_t *enp, __in uint32_t partn, __in_ecount(4) uint16_t version[4]); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_validate( __in uint32_t partn, @@ -539,12 +613,14 @@ ef10_nvram_buffer_validate( caddr_t bufferp, __in size_t buffer_size); +LIBEFX_INTERNAL extern void ef10_nvram_buffer_init( __out_bcount(buffer_size) caddr_t bufferp, __in size_t buffer_size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_create( __in uint32_t partn_type, @@ -552,6 +628,7 @@ ef10_nvram_buffer_create( caddr_t bufferp, __in size_t buffer_size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_find_item_start( __in_bcount(buffer_size) @@ -559,6 +636,7 @@ ef10_nvram_buffer_find_item_start( __in size_t buffer_size, __out uint32_t *startp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_find_end( __in_bcount(buffer_size) @@ -567,6 +645,7 @@ ef10_nvram_buffer_find_end( __in uint32_t offset, __out uint32_t *endp); +LIBEFX_INTERNAL extern __checkReturn __success(return != B_FALSE) boolean_t ef10_nvram_buffer_find_item( __in_bcount(buffer_size) @@ -576,6 +655,7 @@ ef10_nvram_buffer_find_item( __out uint32_t *startp, __out uint32_t *lengthp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_peek_item( __in_bcount(buffer_size) @@ -586,6 +666,7 @@ ef10_nvram_buffer_peek_item( __out uint32_t *lengthp, __out uint32_t *value_offsetp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_get_item( __in_bcount(buffer_size) @@ -599,6 +680,7 @@ ef10_nvram_buffer_get_item( __in size_t value_max_size, __out uint32_t *lengthp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_insert_item( __in_bcount(buffer_size) @@ -610,6 +692,7 @@ ef10_nvram_buffer_insert_item( __in uint32_t length, __out uint32_t *lengthp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_modify_item( __in_bcount(buffer_size) @@ -621,6 +704,7 @@ ef10_nvram_buffer_modify_item( __in uint32_t length, __out uint32_t *lengthp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_delete_item( __in_bcount(buffer_size) @@ -630,6 +714,7 @@ ef10_nvram_buffer_delete_item( __in uint32_t length, __in uint32_t end); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nvram_buffer_finish( __in_bcount(buffer_size) @@ -649,35 +734,42 @@ typedef struct ef10_link_state_s { boolean_t els_mac_up; } ef10_link_state_t; +LIBEFX_INTERNAL extern void ef10_phy_link_ev( __in efx_nic_t *enp, __in efx_qword_t *eqp, __out efx_link_mode_t *link_modep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_phy_get_link( __in efx_nic_t *enp, __out ef10_link_state_t *elsp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_phy_power( __in efx_nic_t *enp, __in boolean_t on); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_phy_reconfigure( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_phy_verify( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_phy_oui_get( __in efx_nic_t *enp, __out uint32_t *ouip); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_phy_link_state_get( __in efx_nic_t *enp, @@ -685,6 +777,7 @@ ef10_phy_link_state_get( #if EFSYS_OPT_PHY_STATS +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_phy_stats_update( __in efx_nic_t *enp, @@ -695,15 +788,18 @@ ef10_phy_stats_update( #if EFSYS_OPT_BIST +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_bist_enable_offline( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_bist_start( __in efx_nic_t *enp, __in efx_bist_type_t type); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_bist_poll( __in efx_nic_t *enp, @@ -715,6 +811,7 @@ ef10_bist_poll( unsigned long *valuesp, __in size_t count); +LIBEFX_INTERNAL extern void ef10_bist_stop( __in efx_nic_t *enp, @@ -724,14 +821,17 @@ ef10_bist_stop( /* TX */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_tx_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qcreate( __in efx_nic_t *enp, @@ -745,10 +845,12 @@ ef10_tx_qcreate( __in efx_txq_t *etp, __out unsigned int *addedp); +LIBEFX_INTERNAL extern void ef10_tx_qdestroy( __in efx_txq_t *etp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qpost( __in efx_txq_t *etp, @@ -757,6 +859,7 @@ ef10_tx_qpost( __in unsigned int completed, __inout unsigned int *addedp); +LIBEFX_INTERNAL extern void ef10_tx_qpush( __in efx_txq_t *etp, @@ -764,10 +867,12 @@ ef10_tx_qpush( __in unsigned int pushed); #if EFSYS_OPT_RX_PACKED_STREAM +LIBEFX_INTERNAL extern void ef10_rx_qpush_ps_credits( __in efx_rxq_t *erp); +LIBEFX_INTERNAL extern __checkReturn uint8_t * ef10_rx_qps_packet_info( __in efx_rxq_t *erp, @@ -779,27 +884,33 @@ ef10_rx_qps_packet_info( __out uint32_t *timestamp); #endif +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qpace( __in efx_txq_t *etp, __in unsigned int ns); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qflush( __in efx_txq_t *etp); +LIBEFX_INTERNAL extern void ef10_tx_qenable( __in efx_txq_t *etp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qpio_enable( __in efx_txq_t *etp); +LIBEFX_INTERNAL extern void ef10_tx_qpio_disable( __in efx_txq_t *etp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qpio_write( __in efx_txq_t *etp, @@ -807,6 +918,7 @@ ef10_tx_qpio_write( __in size_t buf_length, __in size_t pio_buf_offset); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qpio_post( __in efx_txq_t *etp, @@ -814,6 +926,7 @@ ef10_tx_qpio_post( __in unsigned int completed, __inout unsigned int *addedp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_tx_qdesc_post( __in efx_txq_t *etp, @@ -822,6 +935,7 @@ ef10_tx_qdesc_post( __in unsigned int completed, __inout unsigned int *addedp); +LIBEFX_INTERNAL extern void ef10_tx_qdesc_dma_create( __in efx_txq_t *etp, @@ -830,6 +944,7 @@ ef10_tx_qdesc_dma_create( __in boolean_t eop, __out efx_desc_t *edp); +LIBEFX_INTERNAL extern void ef10_tx_qdesc_tso_create( __in efx_txq_t *etp, @@ -838,6 +953,7 @@ ef10_tx_qdesc_tso_create( __in uint8_t tcp_flags, __out efx_desc_t *edp); +LIBEFX_INTERNAL extern void ef10_tx_qdesc_tso2_create( __in efx_txq_t *etp, @@ -848,12 +964,14 @@ ef10_tx_qdesc_tso2_create( __out_ecount(count) efx_desc_t *edp, __in int count); +LIBEFX_INTERNAL extern void ef10_tx_qdesc_vlantci_create( __in efx_txq_t *etp, __in uint16_t vlan_tci, __out efx_desc_t *edp); +LIBEFX_INTERNAL extern void ef10_tx_qdesc_checksum_create( __in efx_txq_t *etp, @@ -862,6 +980,7 @@ ef10_tx_qdesc_checksum_create( #if EFSYS_OPT_QSTATS +LIBEFX_INTERNAL extern void ef10_tx_qstats_update( __in efx_txq_t *etp, @@ -873,6 +992,7 @@ typedef uint32_t efx_piobuf_handle_t; #define EFX_PIOBUF_HANDLE_INVALID ((efx_piobuf_handle_t)-1) +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_pio_alloc( __inout efx_nic_t *enp, @@ -882,18 +1002,21 @@ ef10_nic_pio_alloc( __out uint32_t *offsetp, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_pio_free( __inout efx_nic_t *enp, __in uint32_t bufnum, __in uint32_t blknum); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_pio_link( __inout efx_nic_t *enp, __in uint32_t vi_index, __in efx_piobuf_handle_t handle); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_pio_unlink( __inout efx_nic_t *enp, @@ -904,33 +1027,39 @@ ef10_nic_pio_unlink( #if EFSYS_OPT_VPD +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_size( __in efx_nic_t *enp, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_read( __in efx_nic_t *enp, __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_verify( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_reinit( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_get( __in efx_nic_t *enp, @@ -938,6 +1067,7 @@ ef10_vpd_get( __in size_t size, __inout efx_vpd_value_t *evvp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_set( __in efx_nic_t *enp, @@ -945,6 +1075,7 @@ ef10_vpd_set( __in size_t size, __in efx_vpd_value_t *evvp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_next( __in efx_nic_t *enp, @@ -953,12 +1084,14 @@ ef10_vpd_next( __out efx_vpd_value_t *evvp, __inout unsigned int *contp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_vpd_write( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern void ef10_vpd_fini( __in efx_nic_t *enp); @@ -968,11 +1101,13 @@ ef10_vpd_fini( /* RX */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_init( __in efx_nic_t *enp); #if EFSYS_OPT_RX_SCATTER +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_scatter_enable( __in efx_nic_t *enp, @@ -982,6 +1117,7 @@ ef10_rx_scatter_enable( #if EFSYS_OPT_RX_SCALE +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_scale_context_alloc( __in efx_nic_t *enp, @@ -989,11 +1125,13 @@ ef10_rx_scale_context_alloc( __in uint32_t num_queues, __out uint32_t *rss_contextp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_scale_context_free( __in efx_nic_t *enp, __in uint32_t rss_context); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_scale_mode_set( __in efx_nic_t *enp, @@ -1002,6 +1140,7 @@ ef10_rx_scale_mode_set( __in efx_rx_hash_type_t type, __in boolean_t insert); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_scale_key_set( __in efx_nic_t *enp, @@ -1009,6 +1148,7 @@ ef10_rx_scale_key_set( __in_ecount(n) uint8_t *key, __in size_t n); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_scale_tbl_set( __in efx_nic_t *enp, @@ -1016,6 +1156,7 @@ ef10_rx_scale_tbl_set( __in_ecount(n) unsigned int *table, __in size_t n); +LIBEFX_INTERNAL extern __checkReturn uint32_t ef10_rx_prefix_hash( __in efx_nic_t *enp, @@ -1024,12 +1165,14 @@ ef10_rx_prefix_hash( #endif /* EFSYS_OPT_RX_SCALE */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_prefix_pktlen( __in efx_nic_t *enp, __in uint8_t *buffer, __out uint16_t *lengthp); +LIBEFX_INTERNAL extern void ef10_rx_qpost( __in efx_rxq_t *erp, @@ -1039,22 +1182,26 @@ ef10_rx_qpost( __in unsigned int completed, __in unsigned int added); +LIBEFX_INTERNAL extern void ef10_rx_qpush( __in efx_rxq_t *erp, __in unsigned int added, __inout unsigned int *pushedp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_qflush( __in efx_rxq_t *erp); +LIBEFX_INTERNAL extern void ef10_rx_qenable( __in efx_rxq_t *erp); union efx_rxq_type_data_u; +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_rx_qcreate( __in efx_nic_t *enp, @@ -1069,10 +1216,12 @@ ef10_rx_qcreate( __in efx_evq_t *eep, __in efx_rxq_t *erp); +LIBEFX_INTERNAL extern void ef10_rx_qdestroy( __in efx_rxq_t *erp); +LIBEFX_INTERNAL extern void ef10_rx_fini( __in efx_nic_t *enp); @@ -1134,29 +1283,35 @@ typedef struct ef10_filter_table_s { uint32_t eft_encap_filter_count; } ef10_filter_table_t; +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_filter_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_filter_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_filter_restore( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_filter_add( __in efx_nic_t *enp, __inout efx_filter_spec_t *spec, __in enum efx_filter_replacement_policy_e policy); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_filter_delete( __in efx_nic_t *enp, __inout efx_filter_spec_t *spec); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_filter_supported_filters( __in efx_nic_t *enp, @@ -1164,6 +1319,7 @@ ef10_filter_supported_filters( __in size_t buffer_length, __out size_t *list_lengthp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_filter_reconfigure( __in efx_nic_t *enp, @@ -1175,18 +1331,21 @@ ef10_filter_reconfigure( __in_ecount(6*count) uint8_t const *addrs, __in uint32_t count); +LIBEFX_INTERNAL extern void ef10_filter_get_default_rxq( __in efx_nic_t *enp, __out efx_rxq_t **erpp, __out boolean_t *using_rss); +LIBEFX_INTERNAL extern void ef10_filter_default_rxq_set( __in efx_nic_t *enp, __in efx_rxq_t *erp, __in boolean_t using_rss); +LIBEFX_INTERNAL extern void ef10_filter_default_rxq_clear( __in efx_nic_t *enp); @@ -1194,12 +1353,14 @@ ef10_filter_default_rxq_clear( #endif /* EFSYS_OPT_FILTER */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_function_info( __in efx_nic_t *enp, __out uint32_t *pfp, __out_opt uint32_t *vfp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_privilege_mask( __in efx_nic_t *enp, @@ -1207,11 +1368,13 @@ efx_mcdi_privilege_mask( __in uint32_t vf, __out uint32_t *maskp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_port_assignment( __in efx_nic_t *enp, __out uint32_t *portp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_port_modes( __in efx_nic_t *enp, @@ -1219,21 +1382,25 @@ efx_mcdi_get_port_modes( __out_opt uint32_t *current_modep, __out_opt uint32_t *default_modep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_nic_get_port_mode_bandwidth( __in efx_nic_t *enp, __out uint32_t *bandwidth_mbpsp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_mac_address_pf( __in efx_nic_t *enp, __out_ecount_opt(6) uint8_t mac_addrp[6]); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_mac_address_vf( __in efx_nic_t *enp, __out_ecount_opt(6) uint8_t mac_addrp[6]); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_clock( __in efx_nic_t *enp, @@ -1241,11 +1408,13 @@ efx_mcdi_get_clock( __out uint32_t *dpcpu_freqp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_rxdp_config( __in efx_nic_t *enp, __out uint32_t *end_paddingp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_vector_cfg( __in efx_nic_t *enp, @@ -1253,6 +1422,7 @@ efx_mcdi_get_vector_cfg( __out_opt uint32_t *pf_nvecp, __out_opt uint32_t *vf_nvecp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_get_privilege_mask( __in efx_nic_t *enp, @@ -1260,12 +1430,14 @@ ef10_get_privilege_mask( #if EFSYS_OPT_FW_SUBVARIANT_AWARE +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_nic_global( __in efx_nic_t *enp, __in uint32_t key, __out uint32_t *valuep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_set_nic_global( __in efx_nic_t *enp, @@ -1275,25 +1447,30 @@ efx_mcdi_set_nic_global( #endif /* EFSYS_OPT_FW_SUBVARIANT_AWARE */ #if EFSYS_OPT_EVB +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_evb_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vswitch_alloc( __in efx_nic_t *enp, __out efx_vswitch_id_t *vswitch_idp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vswitch_free( __in efx_nic_t *enp, __in efx_vswitch_id_t vswitch_id); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vport_alloc( __in efx_nic_t *enp, @@ -1304,12 +1481,14 @@ ef10_evb_vport_alloc( __out efx_vport_id_t *vport_idp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vport_free( __in efx_nic_t *enp, __in efx_vswitch_id_t vswitch_id, __in efx_vport_id_t vport_id); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vport_mac_addr_add( __in efx_nic_t *enp, @@ -1317,6 +1496,7 @@ ef10_evb_vport_mac_addr_add( __in efx_vport_id_t vport_id, __in_ecount(6) uint8_t *addrp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vport_mac_addr_del( __in efx_nic_t *enp, @@ -1324,6 +1504,7 @@ ef10_evb_vport_mac_addr_del( __in efx_vport_id_t vport_id, __in_ecount(6) uint8_t *addrp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vadaptor_alloc( __in efx_nic_t *enp, @@ -1331,12 +1512,14 @@ ef10_evb_vadaptor_alloc( __in efx_vport_id_t vport_id); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vadaptor_free( __in efx_nic_t *enp, __in efx_vswitch_id_t vswitch_id, __in efx_vport_id_t vport_id); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vport_assign( __in efx_nic_t *enp, @@ -1344,6 +1527,7 @@ ef10_evb_vport_assign( __in efx_vport_id_t vport_id, __in uint32_t vf_index); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vport_reconfigure( __in efx_nic_t *enp, @@ -1353,6 +1537,7 @@ ef10_evb_vport_reconfigure( __in_bcount_opt(EFX_MAC_ADDR_LEN) uint8_t *addrp, __out_opt boolean_t *fn_resetp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_evb_vport_stats( __in efx_nic_t *enp, @@ -1363,14 +1548,17 @@ ef10_evb_vport_stats( #endif /* EFSYS_OPT_EVB */ #if EFSYS_OPT_MCDI_PROXY_AUTH_SERVER +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void ef10_proxy_auth_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_mc_config( __in efx_nic_t *enp, @@ -1381,10 +1569,12 @@ ef10_proxy_auth_mc_config( __in_ecount(op_count) uint32_t *op_listp, __in size_t op_count); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_disable( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_privilege_modify( __in efx_nic_t *enp, @@ -1394,6 +1584,7 @@ ef10_proxy_auth_privilege_modify( __in uint32_t add_privileges_mask, __in uint32_t remove_privileges_mask); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_set_privilege_mask( __in efx_nic_t *enp, @@ -1401,6 +1592,7 @@ ef10_proxy_auth_set_privilege_mask( __in uint32_t mask, __in uint32_t value); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_complete_request( __in efx_nic_t *enp, @@ -1408,11 +1600,13 @@ ef10_proxy_auth_complete_request( __in uint32_t proxy_result, __in uint32_t handle); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_exec_cmd( __in efx_nic_t *enp, __inout efx_proxy_cmd_params_t *paramsp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t ef10_proxy_auth_get_privilege_mask( __in efx_nic_t *enp, diff --git a/drivers/net/sfc/base/efx_check.h b/drivers/net/sfc/base/efx_check.h index 41300fd9b1..5a04a69e5f 100644 --- a/drivers/net/sfc/base/efx_check.h +++ b/drivers/net/sfc/base/efx_check.h @@ -18,6 +18,10 @@ # error "LIBEFX_API must be defined" #endif +#ifndef LIBEFX_INTERNAL +# error "LIBEFX_INTERNAL must be defined" +#endif + /* * Check that the efsys.h header in client code has a valid combination of * EFSYS_OPT_xxx options. diff --git a/drivers/net/sfc/base/efx_impl.h b/drivers/net/sfc/base/efx_impl.h index 70176760be..7d6a31d298 100644 --- a/drivers/net/sfc/base/efx_impl.h +++ b/drivers/net/sfc/base/efx_impl.h @@ -279,6 +279,7 @@ typedef struct efx_filter_ops_s { uint8_t const *, uint32_t); } efx_filter_ops_t; +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_filter_reconfigure( __in efx_nic_t *enp, @@ -464,6 +465,7 @@ typedef struct efx_filter_s { #if EFSYS_OPT_SIENA +LIBEFX_INTERNAL extern void siena_filter_tbl_clear( __in efx_nic_t *enp, @@ -566,6 +568,7 @@ typedef struct efx_vpd_ops_s { #if EFSYS_OPT_VPD || EFSYS_OPT_NVRAM +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_partitions( __in efx_nic_t *enp, @@ -573,6 +576,7 @@ efx_mcdi_nvram_partitions( __in size_t size, __out unsigned int *npartnp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_metadata( __in efx_nic_t *enp, @@ -582,17 +586,20 @@ efx_mcdi_nvram_metadata( __out_bcount_opt(size) char *descp, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_info( __in efx_nic_t *enp, __in uint32_t partn, __out efx_nvram_info_t *eni); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_update_start( __in efx_nic_t *enp, __in uint32_t partn); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_read( __in efx_nic_t *enp, @@ -602,6 +609,7 @@ efx_mcdi_nvram_read( __in size_t size, __in uint32_t mode); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_erase( __in efx_nic_t *enp, @@ -609,6 +617,7 @@ efx_mcdi_nvram_erase( __in uint32_t offset, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_write( __in efx_nic_t *enp, @@ -620,6 +629,7 @@ efx_mcdi_nvram_write( #define EFX_NVRAM_UPDATE_FLAGS_BACKGROUND 0x00000001 #define EFX_NVRAM_UPDATE_FLAGS_POLL 0x00000002 +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_update_finish( __in efx_nic_t *enp, @@ -630,6 +640,7 @@ efx_mcdi_nvram_update_finish( #if EFSYS_OPT_DIAG +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_nvram_test( __in efx_nic_t *enp, @@ -713,6 +724,7 @@ typedef struct efx_evb_ops_s { efx_vport_id_t, efsys_mem_t *); } efx_evb_ops_t; +LIBEFX_INTERNAL extern __checkReturn boolean_t efx_is_zero_eth_addr( __in_bcount(EFX_MAC_ADDR_LEN) const uint8_t *addrp); @@ -1286,10 +1298,12 @@ struct efx_txq_s { _NOTE(CONSTANTCONDITION) \ } while (B_FALSE) +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mac_select( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void efx_mac_multicast_hash_compute( __in_ecount(6*count) uint8_t const *addrs, @@ -1297,10 +1311,12 @@ efx_mac_multicast_hash_compute( __out efx_oword_t *hash_low, __out efx_oword_t *hash_high); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_phy_probe( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void efx_phy_unprobe( __in efx_nic_t *enp); @@ -1309,24 +1325,28 @@ efx_phy_unprobe( /* VPD utility functions */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_vpd_hunk_length( __in_bcount(size) caddr_t data, __in size_t size, __out size_t *lengthp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_vpd_hunk_verify( __in_bcount(size) caddr_t data, __in size_t size, __out_opt boolean_t *cksummedp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_vpd_hunk_reinit( __in_bcount(size) caddr_t data, __in size_t size, __in boolean_t wantpid); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_vpd_hunk_get( __in_bcount(size) caddr_t data, @@ -1336,6 +1356,7 @@ efx_vpd_hunk_get( __out unsigned int *payloadp, __out uint8_t *paylenp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_vpd_hunk_next( __in_bcount(size) caddr_t data, @@ -1346,6 +1367,7 @@ efx_vpd_hunk_next( __out_opt uint8_t *paylenp, __inout unsigned int *contp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_vpd_hunk_set( __in_bcount(size) caddr_t data, @@ -1356,6 +1378,7 @@ efx_vpd_hunk_set( #if EFSYS_OPT_MCDI +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_set_workaround( __in efx_nic_t *enp, @@ -1363,6 +1386,7 @@ efx_mcdi_set_workaround( __in boolean_t enabled, __out_opt uint32_t *flagsp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_workarounds( __in efx_nic_t *enp, @@ -1391,6 +1415,7 @@ typedef enum efx_stats_action_e { EFX_STATS_DISABLE, } efx_stats_action_t; +LIBEFX_INTERNAL extern efx_rc_t efx_mac_stats_mask_add_ranges( __inout_bcount(mask_size) uint32_t *maskp, @@ -1398,6 +1423,7 @@ efx_mac_stats_mask_add_ranges( __in_ecount(rng_count) const struct efx_mac_stats_range *rngp, __in unsigned int rng_count); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_mac_stats( __in efx_nic_t *enp, diff --git a/drivers/net/sfc/base/efx_mcdi.h b/drivers/net/sfc/base/efx_mcdi.h index 42c84eb7d6..97ac8bf496 100644 --- a/drivers/net/sfc/base/efx_mcdi.h +++ b/drivers/net/sfc/base/efx_mcdi.h @@ -56,16 +56,19 @@ typedef struct efx_mcdi_iface_s { uint32_t emi_mc_reboot_status; } efx_mcdi_iface_t; +LIBEFX_INTERNAL extern void efx_mcdi_execute( __in efx_nic_t *enp, __inout efx_mcdi_req_t *emrp); +LIBEFX_INTERNAL extern void efx_mcdi_execute_quiet( __in efx_nic_t *enp, __inout efx_mcdi_req_t *emrp); +LIBEFX_INTERNAL extern void efx_mcdi_ev_cpl( __in efx_nic_t *enp, @@ -81,6 +84,7 @@ efx_mcdi_get_proxy_handle( __in efx_mcdi_req_t *emrp, __out uint32_t *handlep); +LIBEFX_INTERNAL extern void efx_mcdi_ev_proxy_response( __in efx_nic_t *enp, @@ -89,21 +93,25 @@ efx_mcdi_ev_proxy_response( #endif #if EFSYS_OPT_MCDI_PROXY_AUTH_SERVER +LIBEFX_INTERNAL extern void efx_mcdi_ev_proxy_request( __in efx_nic_t *enp, __in unsigned int index); #endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */ +LIBEFX_INTERNAL extern void efx_mcdi_ev_death( __in efx_nic_t *enp, __in int rc); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_request_errcode( __in unsigned int err); +LIBEFX_INTERNAL extern void efx_mcdi_raise_exception( __in efx_nic_t *enp, @@ -116,6 +124,7 @@ typedef enum efx_mcdi_boot_e { EFX_MCDI_BOOT_ROM, } efx_mcdi_boot_t; +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_version( __in efx_nic_t *enp, @@ -123,6 +132,7 @@ efx_mcdi_version( __out_opt uint32_t *buildp, __out_opt efx_mcdi_boot_t *statusp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_capabilities( __in efx_nic_t *enp, @@ -132,19 +142,23 @@ efx_mcdi_get_capabilities( __out_opt uint32_t *flags2p, __out_opt uint32_t *tso2ncp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_read_assertion( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_exit_assertion_handler( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_drv_attach( __in efx_nic_t *enp, __in boolean_t attach); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_board_cfg( __in efx_nic_t *enp, @@ -152,25 +166,30 @@ efx_mcdi_get_board_cfg( __out_opt efx_dword_t *capabilitiesp, __out_ecount_opt(6) uint8_t mac_addrp[6]); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_phy_cfg( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_firmware_update_supported( __in efx_nic_t *enp, __out boolean_t *supportedp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_macaddr_change_supported( __in efx_nic_t *enp, __out boolean_t *supportedp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_link_control_supported( __in efx_nic_t *enp, __out boolean_t *supportedp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_mac_spoofing_supported( __in efx_nic_t *enp, @@ -179,16 +198,19 @@ efx_mcdi_mac_spoofing_supported( #if EFSYS_OPT_BIST #if EFX_OPTS_EF10() +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_bist_enable_offline( __in efx_nic_t *enp); #endif /* EFX_OPTS_EF10() */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_bist_start( __in efx_nic_t *enp, __in efx_bist_type_t type); #endif /* EFSYS_OPT_BIST */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_resource_limits( __in efx_nic_t *enp, @@ -196,19 +218,23 @@ efx_mcdi_get_resource_limits( __out_opt uint32_t *nrxqp, __out_opt uint32_t *ntxqp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_log_ctrl( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_mac_stats_clear( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_mac_stats_upload( __in efx_nic_t *enp, __in efsys_mem_t *esmp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_mac_stats_periodic( __in efx_nic_t *enp, @@ -218,11 +244,13 @@ efx_mcdi_mac_stats_periodic( #if EFSYS_OPT_LOOPBACK +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_get_loopback_modes( __in efx_nic_t *enp); #endif /* EFSYS_OPT_LOOPBACK */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t efx_mcdi_phy_module_get_info( __in efx_nic_t *enp, diff --git a/drivers/net/sfc/base/hunt_impl.h b/drivers/net/sfc/base/hunt_impl.h index 546c5d9d0a..4f193935a7 100644 --- a/drivers/net/sfc/base/hunt_impl.h +++ b/drivers/net/sfc/base/hunt_impl.h @@ -43,6 +43,7 @@ extern "C" { /* NIC */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t hunt_board_cfg( __in efx_nic_t *enp); diff --git a/drivers/net/sfc/base/mcdi_mon.h b/drivers/net/sfc/base/mcdi_mon.h index c79f55c35f..4cdf9d6f5f 100644 --- a/drivers/net/sfc/base/mcdi_mon.h +++ b/drivers/net/sfc/base/mcdi_mon.h @@ -17,15 +17,18 @@ extern "C" { #if EFSYS_OPT_MON_STATS +LIBEFX_INTERNAL extern __checkReturn efx_rc_t mcdi_mon_cfg_build( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void mcdi_mon_cfg_free( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t mcdi_mon_ev( __in efx_nic_t *enp, @@ -33,12 +36,14 @@ mcdi_mon_ev( __out efx_mon_stat_t *idp, __out efx_mon_stat_value_t *valuep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t mcdi_mon_stats_update( __in efx_nic_t *enp, __in efsys_mem_t *esmp, __inout_ecount(EFX_MON_NSTATS) efx_mon_stat_value_t *values); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t mcdi_mon_limits_update( __in efx_nic_t *enp, diff --git a/drivers/net/sfc/base/medford2_impl.h b/drivers/net/sfc/base/medford2_impl.h index 61a11829f2..ea93b51690 100644 --- a/drivers/net/sfc/base/medford2_impl.h +++ b/drivers/net/sfc/base/medford2_impl.h @@ -27,6 +27,7 @@ extern "C" { #define MEDFORD2_MIN_PIO_ALLOC_SIZE (MEDFORD2_PIOBUF_SIZE / 32) +LIBEFX_INTERNAL extern __checkReturn efx_rc_t medford2_board_cfg( __in efx_nic_t *enp); diff --git a/drivers/net/sfc/base/medford_impl.h b/drivers/net/sfc/base/medford_impl.h index 21e5652fbf..f1a3bb1bf6 100644 --- a/drivers/net/sfc/base/medford_impl.h +++ b/drivers/net/sfc/base/medford_impl.h @@ -27,6 +27,7 @@ extern "C" { #define MEDFORD_MIN_PIO_ALLOC_SIZE (MEDFORD_PIOBUF_SIZE / 32) +LIBEFX_INTERNAL extern __checkReturn efx_rc_t medford_board_cfg( __in efx_nic_t *enp); diff --git a/drivers/net/sfc/base/siena_impl.h b/drivers/net/sfc/base/siena_impl.h index 83f60d164c..eb3b76369b 100644 --- a/drivers/net/sfc/base/siena_impl.h +++ b/drivers/net/sfc/base/siena_impl.h @@ -40,20 +40,24 @@ extern "C" { #define SIENA_NVRAM_CHUNK 0x80 +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nic_probe( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nic_reset( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nic_init( __in efx_nic_t *enp); #if EFSYS_OPT_DIAG +LIBEFX_INTERNAL extern efx_sram_pattern_fn_t __efx_sram_pattern_fns[]; typedef struct siena_register_set_s { @@ -63,28 +67,33 @@ typedef struct siena_register_set_s { efx_oword_t mask; } siena_register_set_t; +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nic_register_test( __in efx_nic_t *enp); #endif /* EFSYS_OPT_DIAG */ +LIBEFX_INTERNAL extern void siena_nic_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void siena_nic_unprobe( __in efx_nic_t *enp); #define SIENA_SRAM_ROWS 0x12000 +LIBEFX_INTERNAL extern void siena_sram_init( __in efx_nic_t *enp); #if EFSYS_OPT_DIAG +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_sram_test( __in efx_nic_t *enp, @@ -94,11 +103,13 @@ siena_sram_test( #if EFSYS_OPT_MCDI +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mcdi_init( __in efx_nic_t *enp, __in const efx_mcdi_transport_t *mtp); +LIBEFX_INTERNAL extern void siena_mcdi_send_request( __in efx_nic_t *enp, @@ -107,10 +118,12 @@ siena_mcdi_send_request( __in_bcount(sdu_len) void *sdup, __in size_t sdu_len); +LIBEFX_INTERNAL extern __checkReturn boolean_t siena_mcdi_poll_response( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void siena_mcdi_read_response( __in efx_nic_t *enp, @@ -118,20 +131,24 @@ siena_mcdi_read_response( __in size_t offset, __in size_t length); +LIBEFX_INTERNAL extern efx_rc_t siena_mcdi_poll_reboot( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern void siena_mcdi_fini( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mcdi_feature_supported( __in efx_nic_t *enp, __in efx_mcdi_feature_id_t id, __out boolean_t *supportedp); +LIBEFX_INTERNAL extern void siena_mcdi_get_timeout( __in efx_nic_t *enp, @@ -142,17 +159,20 @@ siena_mcdi_get_timeout( #if EFSYS_OPT_NVRAM || EFSYS_OPT_VPD +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_lock( __in efx_nic_t *enp, __in uint32_t partn); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_unlock( __in efx_nic_t *enp, __in uint32_t partn, __out_opt uint32_t *verify_resultp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_get_dynamic_cfg( __in efx_nic_t *enp, @@ -167,42 +187,49 @@ siena_nvram_get_dynamic_cfg( #if EFSYS_OPT_DIAG +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_test( __in efx_nic_t *enp); #endif /* EFSYS_OPT_DIAG */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_get_subtype( __in efx_nic_t *enp, __in uint32_t partn, __out uint32_t *subtypep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_type_to_partn( __in efx_nic_t *enp, __in efx_nvram_type_t type, __out uint32_t *partnp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_size( __in efx_nic_t *enp, __in uint32_t partn, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_info( __in efx_nic_t *enp, __in uint32_t partn, __out efx_nvram_info_t * enip); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_rw_start( __in efx_nic_t *enp, __in uint32_t partn, __out size_t *chunk_sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_read( __in efx_nic_t *enp, @@ -211,6 +238,7 @@ siena_nvram_partn_read( __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_erase( __in efx_nic_t *enp, @@ -218,6 +246,7 @@ siena_nvram_partn_erase( __in unsigned int offset, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_write( __in efx_nic_t *enp, @@ -226,12 +255,14 @@ siena_nvram_partn_write( __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_rw_finish( __in efx_nic_t *enp, __in uint32_t partn, __out_opt uint32_t *verify_resultp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_get_version( __in efx_nic_t *enp, @@ -239,6 +270,7 @@ siena_nvram_partn_get_version( __out uint32_t *subtypep, __out_ecount(4) uint16_t version[4]); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_nvram_partn_set_version( __in efx_nic_t *enp, @@ -249,33 +281,39 @@ siena_nvram_partn_set_version( #if EFSYS_OPT_VPD +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_init( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_size( __in efx_nic_t *enp, __out size_t *sizep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_read( __in efx_nic_t *enp, __out_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_verify( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_reinit( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_get( __in efx_nic_t *enp, @@ -283,6 +321,7 @@ siena_vpd_get( __in size_t size, __inout efx_vpd_value_t *evvp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_set( __in efx_nic_t *enp, @@ -290,6 +329,7 @@ siena_vpd_set( __in size_t size, __in efx_vpd_value_t *evvp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_next( __in efx_nic_t *enp, @@ -298,12 +338,14 @@ siena_vpd_next( __out efx_vpd_value_t *evvp, __inout unsigned int *contp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_vpd_write( __in efx_nic_t *enp, __in_bcount(size) caddr_t data, __in size_t size); +LIBEFX_INTERNAL extern void siena_vpd_fini( __in efx_nic_t *enp); @@ -321,30 +363,36 @@ typedef struct siena_link_state_s { boolean_t sls_mac_up; } siena_link_state_t; +LIBEFX_INTERNAL extern void siena_phy_link_ev( __in efx_nic_t *enp, __in efx_qword_t *eqp, __out efx_link_mode_t *link_modep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_get_link( __in efx_nic_t *enp, __out siena_link_state_t *slsp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_power( __in efx_nic_t *enp, __in boolean_t on); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_reconfigure( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_verify( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_oui_get( __in efx_nic_t *enp, @@ -352,6 +400,7 @@ siena_phy_oui_get( #if EFSYS_OPT_PHY_STATS +LIBEFX_INTERNAL extern void siena_phy_decode_stats( __in efx_nic_t *enp, @@ -360,6 +409,7 @@ siena_phy_decode_stats( __out_opt uint64_t *smaskp, __inout_ecount_opt(EFX_PHY_NSTATS) uint32_t *stat); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_stats_update( __in efx_nic_t *enp, @@ -370,11 +420,13 @@ siena_phy_stats_update( #if EFSYS_OPT_BIST +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_bist_start( __in efx_nic_t *enp, __in efx_bist_type_t type); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_phy_bist_poll( __in efx_nic_t *enp, @@ -386,6 +438,7 @@ siena_phy_bist_poll( unsigned long *valuesp, __in size_t count); +LIBEFX_INTERNAL extern void siena_phy_bist_stop( __in efx_nic_t *enp, @@ -393,20 +446,24 @@ siena_phy_bist_stop( #endif /* EFSYS_OPT_BIST */ +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mac_poll( __in efx_nic_t *enp, __out efx_link_mode_t *link_modep); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mac_up( __in efx_nic_t *enp, __out boolean_t *mac_upp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mac_reconfigure( __in efx_nic_t *enp); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mac_pdu_get( __in efx_nic_t *enp, @@ -414,6 +471,7 @@ siena_mac_pdu_get( #if EFSYS_OPT_LOOPBACK +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mac_loopback_set( __in efx_nic_t *enp, @@ -424,12 +482,14 @@ siena_mac_loopback_set( #if EFSYS_OPT_MAC_STATS +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mac_stats_get_mask( __in efx_nic_t *enp, __inout_bcount(mask_size) uint32_t *maskp, __in size_t mask_size); +LIBEFX_INTERNAL extern __checkReturn efx_rc_t siena_mac_stats_update( __in efx_nic_t *enp, diff --git a/drivers/net/sfc/efsys.h b/drivers/net/sfc/efsys.h index cc132d83bb..dee06e5ae3 100644 --- a/drivers/net/sfc/efsys.h +++ b/drivers/net/sfc/efsys.h @@ -34,6 +34,7 @@ extern "C" { /* No specific decorations required since all functions are local now */ #define LIBEFX_API +#define LIBEFX_INTERNAL #define EFSYS_HAS_UINT64 1 #define EFSYS_USE_UINT64 1 From patchwork Thu Sep 17 06:34:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77987 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0AAD3A04B6; Thu, 17 Sep 2020 08:35:29 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 02B581D547; Thu, 17 Sep 2020 08:35:23 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 0A19D1D519 for ; Thu, 17 Sep 2020 08:35:19 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.61]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 88A7860055 for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) Received: from us4-mdac16-11.ut7.mdlocal (unknown [10.7.65.208]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 863968009E for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id C8B198005C for ; Thu, 17 Sep 2020 06:35:17 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 7E7D010006E for ; Thu, 17 Sep 2020 06:35:17 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCSi002481 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 10B591613A9 for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:30 +0100 Message-ID: <1600324483-23153-5-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-0.853500-8.000000-10 X-TMASE-MatchedRID: dOm6f3IdN8WQwZP6WaAvV6iUivh0j2PvB7lMZ4YsZk/RLEyE6G4DRHIo zGa69omdrdoLblq9S5oAhGIvsKa9H9ySVj0wBolS/ccgt/EtX/37H53q49PMQ5soi2XrUn/Jn6K dMrRsL14qtq5d3cxkNb8DM1m1CPUeFHYuCHN4jqb4w1LbY5qx4ToPjkyUEvAbnRSIJc2PdbhOe3 zVkrzFPOuDDCYVzFtxEVRfNh5z3mKDOkxatSZxIxIG1a6aK8YvI6KkAL2A5kcMtYrw9BuTwqSmS PRgKSZM0Hy8mOlvvF7vdCUIFuasqw== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-0.853500-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324518-lZFAL8COkPQp Subject: [dpdk-dev] [PATCH v2 04/17] net/sfc: include header with debug helpers directly 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Avoid build failures on further restructuring. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc.c | 1 + drivers/net/sfc/sfc.h | 1 + drivers/net/sfc/sfc_dp_tx.h | 1 + drivers/net/sfc/sfc_ef10.h | 2 ++ drivers/net/sfc/sfc_ef10_essb_rx.c | 1 + drivers/net/sfc/sfc_ef10_rx.c | 1 + drivers/net/sfc/sfc_ef10_rx_ev.h | 2 ++ drivers/net/sfc/sfc_ef10_tx.c | 1 + drivers/net/sfc/sfc_filter.c | 1 + drivers/net/sfc/sfc_flow.c | 1 + drivers/net/sfc/sfc_mcdi.c | 1 + drivers/net/sfc/sfc_port.c | 1 + 12 files changed, 14 insertions(+) diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c index c19d81cc88..03ea5dc128 100644 --- a/drivers/net/sfc/sfc.c +++ b/drivers/net/sfc/sfc.c @@ -16,6 +16,7 @@ #include "efx.h" #include "sfc.h" +#include "sfc_debug.h" #include "sfc_log.h" #include "sfc_ev.h" #include "sfc_rx.h" diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index cf95ebaf90..cdff9be3ec 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -21,6 +21,7 @@ #include "efx.h" +#include "sfc_debug.h" #include "sfc_filter.h" #ifdef __cplusplus diff --git a/drivers/net/sfc/sfc_dp_tx.h b/drivers/net/sfc/sfc_dp_tx.h index dcad4fe585..77ae166885 100644 --- a/drivers/net/sfc/sfc_dp_tx.h +++ b/drivers/net/sfc/sfc_dp_tx.h @@ -12,6 +12,7 @@ #include +#include "sfc_debug.h" #include "sfc_dp.h" #include "sfc_debug.h" #include "sfc_tso.h" diff --git a/drivers/net/sfc/sfc_ef10.h b/drivers/net/sfc/sfc_ef10.h index f138e8d9b0..07c322f7a6 100644 --- a/drivers/net/sfc/sfc_ef10.h +++ b/drivers/net/sfc/sfc_ef10.h @@ -10,6 +10,8 @@ #ifndef _SFC_EF10_H #define _SFC_EF10_H +#include "sfc_debug.h" + #ifdef __cplusplus extern "C" { #endif diff --git a/drivers/net/sfc/sfc_ef10_essb_rx.c b/drivers/net/sfc/sfc_ef10_essb_rx.c index 13b2b824e3..8238cc830d 100644 --- a/drivers/net/sfc/sfc_ef10_essb_rx.c +++ b/drivers/net/sfc/sfc_ef10_essb_rx.c @@ -18,6 +18,7 @@ #include "efx_types.h" #include "efx_regs_ef10.h" +#include "sfc_debug.h" #include "sfc_tweak.h" #include "sfc_dp_rx.h" #include "sfc_kvargs.h" diff --git a/drivers/net/sfc/sfc_ef10_rx.c b/drivers/net/sfc/sfc_ef10_rx.c index 42e205e1bd..8c6ebaa2fa 100644 --- a/drivers/net/sfc/sfc_ef10_rx.c +++ b/drivers/net/sfc/sfc_ef10_rx.c @@ -21,6 +21,7 @@ #include "efx_regs.h" #include "efx_regs_ef10.h" +#include "sfc_debug.h" #include "sfc_tweak.h" #include "sfc_dp_rx.h" #include "sfc_kvargs.h" diff --git a/drivers/net/sfc/sfc_ef10_rx_ev.h b/drivers/net/sfc/sfc_ef10_rx_ev.h index a9896eae56..d15d24f4c1 100644 --- a/drivers/net/sfc/sfc_ef10_rx_ev.h +++ b/drivers/net/sfc/sfc_ef10_rx_ev.h @@ -16,6 +16,8 @@ #include "efx_regs.h" #include "efx_regs_ef10.h" +#include "sfc_debug.h" + #ifdef __cplusplus extern "C" { #endif diff --git a/drivers/net/sfc/sfc_ef10_tx.c b/drivers/net/sfc/sfc_ef10_tx.c index b91c8068b1..4d7da427cb 100644 --- a/drivers/net/sfc/sfc_ef10_tx.c +++ b/drivers/net/sfc/sfc_ef10_tx.c @@ -19,6 +19,7 @@ #include "efx_regs.h" #include "efx_regs_ef10.h" +#include "sfc_debug.h" #include "sfc_dp_tx.h" #include "sfc_tweak.h" #include "sfc_kvargs.h" diff --git a/drivers/net/sfc/sfc_filter.c b/drivers/net/sfc/sfc_filter.c index 7f4f7c47a5..05a9799230 100644 --- a/drivers/net/sfc/sfc_filter.c +++ b/drivers/net/sfc/sfc_filter.c @@ -12,6 +12,7 @@ #include "efx.h" #include "sfc.h" +#include "sfc_debug.h" #include "sfc_log.h" boolean_t diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c index c8e6fb8bce..1a3c0d618b 100644 --- a/drivers/net/sfc/sfc_flow.c +++ b/drivers/net/sfc/sfc_flow.c @@ -18,6 +18,7 @@ #include "efx.h" #include "sfc.h" +#include "sfc_debug.h" #include "sfc_rx.h" #include "sfc_filter.h" #include "sfc_flow.h" diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 872e4e76b1..ec62ba95ff 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -14,6 +14,7 @@ #include "efx_regs_mcdi.h" #include "sfc.h" +#include "sfc_debug.h" #include "sfc_log.h" #include "sfc_ev.h" diff --git a/drivers/net/sfc/sfc_port.c b/drivers/net/sfc/sfc_port.c index 32a0894a55..4de13267d5 100644 --- a/drivers/net/sfc/sfc_port.c +++ b/drivers/net/sfc/sfc_port.c @@ -10,6 +10,7 @@ #include "efx.h" #include "sfc.h" +#include "sfc_debug.h" #include "sfc_log.h" #include "sfc_kvargs.h" From patchwork Thu Sep 17 06:34:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 78000 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A799EA04B6; Thu, 17 Sep 2020 08:37:31 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7258F1D59C; Thu, 17 Sep 2020 08:35:45 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id ABC191D54E for ; Thu, 17 Sep 2020 08:35:24 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.61]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 2F65360063 for ; Thu, 17 Sep 2020 06:35:24 +0000 (UTC) Received: from us4-mdac16-39.ut7.mdlocal (unknown [10.7.66.158]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 2C57C800A4 for ; Thu, 17 Sep 2020 06:35:24 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 631DC80051 for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 182FB100079 for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCg5002484 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 1DAD21613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:31 +0100 Message-ID: <1600324483-23153-6-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-7.924800-8.000000-10 X-TMASE-MatchedRID: CzrRmG7Jh68kVMQcdgU2qW6HurDH4PpPaeMaKzvXUpnRmpwtWlELp4pb wG9fIuITBTL3N8yyT9fOPqq7dg2F0rQHnhaRx4GgR/j040fRFpIn8jQhMLowhd9zZd3pUn7KIv1 5iK3UB+i0sAMMft5JQB5HYMkA+slodAwYi68WoY8HwuCWPSIIABDqmKczPoNZq2RzHFToRUgrFw z1a+NmIghy9MlxtSYWxNgdVQNxsErtWteqKqfAda5iccRV1A3Yy733NwuklsIHZBaLwEXlKC2Ng sVnbGZK2B0q6PyRn98sXNQR30Zuaasq5KwNeXl7Hbdv6Uke88Dqobkz1A0A7R53XUX0iwoU6aX8 TYIrj1s+oXQ1wreHGWq2yuJhae1jwKudp5LE+PgmZusHWPhfClrM5a0ZRVwjfkiy7TTogYYVLGI PVP4OQYx/s+44b+Q6gePt/FBezHC8gVUkX0SvF854hX4xV6jOu8egSg2URB9Ww5sMt9VCxPIS8r d8dZaS0h4+ZH/NYqv1yEkjh0q8iNWKNmKtnvU1X3+/a8z3dZidCQesAegqpkp12IXZajx5/XMEI C3RJvmQrDMYz76xx3MKQgXcQBjhLSjsz5/bbfQI5rLLSVe5tJnaxzJFBx6vRjNrjV0arFKFYPhO 0Nx/NMgFIBR/E2buRwWmLxdIcSiHHh42/d8E7glpVkdtt3WuMI2NtA9qrmI4WKr1PmPdtaHsYBi 1FWMj9DUk6CXsG1I7pHnzpyV/bnHxC4bPmCOyzfqlpbtmcWjX4KnRCDcFnjnZfxjBVQRboLjrCm gL2PXNc3R/U6PlUpTIkSm2IMPShT5cErpKjumeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8h+ICquN i0WJEAzk40689JzNI7UDFn1Rz/bru825glpK8vP6dWyKBpQftwZ3X11IV0= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--7.924800-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324523-3fkA3H6UzvAS Subject: [dpdk-dev] [PATCH v2 05/17] net/sfc: introduce common driver library 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Move libefx (base driver) into common driver. Prepare to add vDPA driver which will use the common driver as well. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- MAINTAINERS | 1 + drivers/common/meson.build | 2 +- .../{net/sfc => common/sfc_efx}/base/README | 0 .../sfc => common/sfc_efx}/base/ef10_ev.c | 0 .../sfc => common/sfc_efx}/base/ef10_evb.c | 0 .../sfc => common/sfc_efx}/base/ef10_filter.c | 0 .../sfc_efx}/base/ef10_firmware_ids.h | 0 .../sfc => common/sfc_efx}/base/ef10_image.c | 0 .../sfc => common/sfc_efx}/base/ef10_impl.h | 0 .../sfc => common/sfc_efx}/base/ef10_intr.c | 0 .../sfc => common/sfc_efx}/base/ef10_mac.c | 0 .../sfc => common/sfc_efx}/base/ef10_mcdi.c | 0 .../sfc => common/sfc_efx}/base/ef10_nic.c | 0 .../sfc => common/sfc_efx}/base/ef10_nvram.c | 0 .../sfc => common/sfc_efx}/base/ef10_phy.c | 0 .../sfc => common/sfc_efx}/base/ef10_proxy.c | 0 .../sfc => common/sfc_efx}/base/ef10_rx.c | 0 .../sfc_efx}/base/ef10_signed_image_layout.h | 0 .../sfc_efx}/base/ef10_tlv_layout.h | 0 .../sfc => common/sfc_efx}/base/ef10_tx.c | 0 .../sfc => common/sfc_efx}/base/ef10_vpd.c | 0 .../{net/sfc => common/sfc_efx}/base/efx.h | 0 .../sfc => common/sfc_efx}/base/efx_annote.h | 0 .../sfc => common/sfc_efx}/base/efx_bootcfg.c | 0 .../sfc => common/sfc_efx}/base/efx_check.h | 0 .../sfc => common/sfc_efx}/base/efx_crc32.c | 0 .../{net/sfc => common/sfc_efx}/base/efx_ev.c | 0 .../sfc => common/sfc_efx}/base/efx_evb.c | 0 .../sfc => common/sfc_efx}/base/efx_filter.c | 0 .../sfc => common/sfc_efx}/base/efx_hash.c | 0 .../sfc => common/sfc_efx}/base/efx_impl.h | 0 .../sfc => common/sfc_efx}/base/efx_intr.c | 0 .../sfc => common/sfc_efx}/base/efx_lic.c | 0 .../sfc => common/sfc_efx}/base/efx_mac.c | 0 .../sfc => common/sfc_efx}/base/efx_mcdi.c | 0 .../sfc => common/sfc_efx}/base/efx_mcdi.h | 0 .../sfc => common/sfc_efx}/base/efx_mon.c | 0 .../sfc => common/sfc_efx}/base/efx_nic.c | 0 .../sfc => common/sfc_efx}/base/efx_nvram.c | 0 .../sfc => common/sfc_efx}/base/efx_phy.c | 0 .../sfc => common/sfc_efx}/base/efx_phy_ids.h | 0 .../sfc => common/sfc_efx}/base/efx_port.c | 0 .../sfc => common/sfc_efx}/base/efx_proxy.c | 0 .../sfc => common/sfc_efx}/base/efx_regs.h | 0 .../sfc_efx}/base/efx_regs_ef10.h | 0 .../sfc_efx}/base/efx_regs_mcdi.h | 0 .../sfc_efx}/base/efx_regs_mcdi_aoe.h | 0 .../sfc_efx}/base/efx_regs_mcdi_strs.h | 0 .../sfc_efx}/base/efx_regs_pci.h | 0 .../{net/sfc => common/sfc_efx}/base/efx_rx.c | 0 .../sfc => common/sfc_efx}/base/efx_sram.c | 0 .../sfc => common/sfc_efx}/base/efx_tunnel.c | 0 .../{net/sfc => common/sfc_efx}/base/efx_tx.c | 0 .../sfc => common/sfc_efx}/base/efx_types.h | 0 .../sfc => common/sfc_efx}/base/efx_vpd.c | 0 .../sfc => common/sfc_efx}/base/hunt_impl.h | 0 .../sfc => common/sfc_efx}/base/hunt_nic.c | 0 .../sfc => common/sfc_efx}/base/mcdi_mon.c | 0 .../sfc => common/sfc_efx}/base/mcdi_mon.h | 0 .../sfc_efx}/base/medford2_impl.h | 0 .../sfc_efx}/base/medford2_nic.c | 0 .../sfc_efx}/base/medford_impl.h | 0 .../sfc => common/sfc_efx}/base/medford_nic.c | 0 .../sfc => common/sfc_efx}/base/meson.build | 0 .../sfc => common/sfc_efx}/base/siena_flash.h | 0 .../sfc => common/sfc_efx}/base/siena_impl.h | 0 .../sfc => common/sfc_efx}/base/siena_mac.c | 0 .../sfc => common/sfc_efx}/base/siena_mcdi.c | 0 .../sfc => common/sfc_efx}/base/siena_nic.c | 0 .../sfc => common/sfc_efx}/base/siena_nvram.c | 0 .../sfc => common/sfc_efx}/base/siena_phy.c | 0 .../sfc => common/sfc_efx}/base/siena_sram.c | 0 .../sfc => common/sfc_efx}/base/siena_vpd.c | 0 drivers/{net/sfc => common/sfc_efx}/efsys.h | 63 +++--- drivers/common/sfc_efx/meson.build | 39 ++++ .../sfc_efx/rte_common_sfc_efx_version.map | 182 ++++++++++++++++++ drivers/common/sfc_efx/sfc_efx.c | 23 +++ drivers/common/sfc_efx/sfc_efx_debug.h | 29 +++ drivers/common/sfc_efx/sfc_efx_log.h | 22 +++ drivers/net/sfc/meson.build | 6 +- 80 files changed, 330 insertions(+), 37 deletions(-) rename drivers/{net/sfc => common/sfc_efx}/base/README (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_ev.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_evb.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_filter.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_firmware_ids.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_image.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_impl.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_intr.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_mac.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_mcdi.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_nic.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_nvram.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_phy.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_proxy.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_rx.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_signed_image_layout.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_tlv_layout.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_tx.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/ef10_vpd.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_annote.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_bootcfg.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_check.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_crc32.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_ev.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_evb.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_filter.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_hash.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_impl.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_intr.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_lic.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_mac.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_mcdi.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_mcdi.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_mon.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_nic.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_nvram.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_phy.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_phy_ids.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_port.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_proxy.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_regs.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_regs_ef10.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_regs_mcdi.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_regs_mcdi_aoe.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_regs_mcdi_strs.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_regs_pci.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_rx.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_sram.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_tunnel.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_tx.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_types.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/efx_vpd.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/hunt_impl.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/hunt_nic.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/mcdi_mon.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/mcdi_mon.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/medford2_impl.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/medford2_nic.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/medford_impl.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/medford_nic.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/meson.build (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_flash.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_impl.h (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_mac.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_mcdi.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_nic.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_nvram.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_phy.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_sram.c (100%) rename drivers/{net/sfc => common/sfc_efx}/base/siena_vpd.c (100%) rename drivers/{net/sfc => common/sfc_efx}/efsys.h (93%) create mode 100644 drivers/common/sfc_efx/meson.build create mode 100644 drivers/common/sfc_efx/rte_common_sfc_efx_version.map create mode 100644 drivers/common/sfc_efx/sfc_efx.c create mode 100644 drivers/common/sfc_efx/sfc_efx_debug.h create mode 100644 drivers/common/sfc_efx/sfc_efx_log.h diff --git a/MAINTAINERS b/MAINTAINERS index 9db8d69f19..2f6344b057 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -854,6 +854,7 @@ F: doc/guides/nics/features/qede*.ini Solarflare sfc_efx M: Andrew Rybchenko +F: drivers/common/sfc_efx/ F: drivers/net/sfc/ F: doc/guides/nics/sfc_efx.rst F: doc/guides/nics/features/sfc_efx.ini diff --git a/drivers/common/meson.build b/drivers/common/meson.build index 9ed4c04ba5..7ac1ca73a2 100644 --- a/drivers/common/meson.build +++ b/drivers/common/meson.build @@ -6,6 +6,6 @@ if is_windows endif std_deps = ['eal'] -drivers = ['cpt', 'dpaax', 'iavf', 'mvep', 'octeontx', 'octeontx2', 'qat'] +drivers = ['cpt', 'dpaax', 'iavf', 'mvep', 'octeontx', 'octeontx2', 'qat', 'sfc_efx'] config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON' driver_name_fmt = 'rte_common_@0@' diff --git a/drivers/net/sfc/base/README b/drivers/common/sfc_efx/base/README similarity index 100% rename from drivers/net/sfc/base/README rename to drivers/common/sfc_efx/base/README diff --git a/drivers/net/sfc/base/ef10_ev.c b/drivers/common/sfc_efx/base/ef10_ev.c similarity index 100% rename from drivers/net/sfc/base/ef10_ev.c rename to drivers/common/sfc_efx/base/ef10_ev.c diff --git a/drivers/net/sfc/base/ef10_evb.c b/drivers/common/sfc_efx/base/ef10_evb.c similarity index 100% rename from drivers/net/sfc/base/ef10_evb.c rename to drivers/common/sfc_efx/base/ef10_evb.c diff --git a/drivers/net/sfc/base/ef10_filter.c b/drivers/common/sfc_efx/base/ef10_filter.c similarity index 100% rename from drivers/net/sfc/base/ef10_filter.c rename to drivers/common/sfc_efx/base/ef10_filter.c diff --git a/drivers/net/sfc/base/ef10_firmware_ids.h b/drivers/common/sfc_efx/base/ef10_firmware_ids.h similarity index 100% rename from drivers/net/sfc/base/ef10_firmware_ids.h rename to drivers/common/sfc_efx/base/ef10_firmware_ids.h diff --git a/drivers/net/sfc/base/ef10_image.c b/drivers/common/sfc_efx/base/ef10_image.c similarity index 100% rename from drivers/net/sfc/base/ef10_image.c rename to drivers/common/sfc_efx/base/ef10_image.c diff --git a/drivers/net/sfc/base/ef10_impl.h b/drivers/common/sfc_efx/base/ef10_impl.h similarity index 100% rename from drivers/net/sfc/base/ef10_impl.h rename to drivers/common/sfc_efx/base/ef10_impl.h diff --git a/drivers/net/sfc/base/ef10_intr.c b/drivers/common/sfc_efx/base/ef10_intr.c similarity index 100% rename from drivers/net/sfc/base/ef10_intr.c rename to drivers/common/sfc_efx/base/ef10_intr.c diff --git a/drivers/net/sfc/base/ef10_mac.c b/drivers/common/sfc_efx/base/ef10_mac.c similarity index 100% rename from drivers/net/sfc/base/ef10_mac.c rename to drivers/common/sfc_efx/base/ef10_mac.c diff --git a/drivers/net/sfc/base/ef10_mcdi.c b/drivers/common/sfc_efx/base/ef10_mcdi.c similarity index 100% rename from drivers/net/sfc/base/ef10_mcdi.c rename to drivers/common/sfc_efx/base/ef10_mcdi.c diff --git a/drivers/net/sfc/base/ef10_nic.c b/drivers/common/sfc_efx/base/ef10_nic.c similarity index 100% rename from drivers/net/sfc/base/ef10_nic.c rename to drivers/common/sfc_efx/base/ef10_nic.c diff --git a/drivers/net/sfc/base/ef10_nvram.c b/drivers/common/sfc_efx/base/ef10_nvram.c similarity index 100% rename from drivers/net/sfc/base/ef10_nvram.c rename to drivers/common/sfc_efx/base/ef10_nvram.c diff --git a/drivers/net/sfc/base/ef10_phy.c b/drivers/common/sfc_efx/base/ef10_phy.c similarity index 100% rename from drivers/net/sfc/base/ef10_phy.c rename to drivers/common/sfc_efx/base/ef10_phy.c diff --git a/drivers/net/sfc/base/ef10_proxy.c b/drivers/common/sfc_efx/base/ef10_proxy.c similarity index 100% rename from drivers/net/sfc/base/ef10_proxy.c rename to drivers/common/sfc_efx/base/ef10_proxy.c diff --git a/drivers/net/sfc/base/ef10_rx.c b/drivers/common/sfc_efx/base/ef10_rx.c similarity index 100% rename from drivers/net/sfc/base/ef10_rx.c rename to drivers/common/sfc_efx/base/ef10_rx.c diff --git a/drivers/net/sfc/base/ef10_signed_image_layout.h b/drivers/common/sfc_efx/base/ef10_signed_image_layout.h similarity index 100% rename from drivers/net/sfc/base/ef10_signed_image_layout.h rename to drivers/common/sfc_efx/base/ef10_signed_image_layout.h diff --git a/drivers/net/sfc/base/ef10_tlv_layout.h b/drivers/common/sfc_efx/base/ef10_tlv_layout.h similarity index 100% rename from drivers/net/sfc/base/ef10_tlv_layout.h rename to drivers/common/sfc_efx/base/ef10_tlv_layout.h diff --git a/drivers/net/sfc/base/ef10_tx.c b/drivers/common/sfc_efx/base/ef10_tx.c similarity index 100% rename from drivers/net/sfc/base/ef10_tx.c rename to drivers/common/sfc_efx/base/ef10_tx.c diff --git a/drivers/net/sfc/base/ef10_vpd.c b/drivers/common/sfc_efx/base/ef10_vpd.c similarity index 100% rename from drivers/net/sfc/base/ef10_vpd.c rename to drivers/common/sfc_efx/base/ef10_vpd.c diff --git a/drivers/net/sfc/base/efx.h b/drivers/common/sfc_efx/base/efx.h similarity index 100% rename from drivers/net/sfc/base/efx.h rename to drivers/common/sfc_efx/base/efx.h diff --git a/drivers/net/sfc/base/efx_annote.h b/drivers/common/sfc_efx/base/efx_annote.h similarity index 100% rename from drivers/net/sfc/base/efx_annote.h rename to drivers/common/sfc_efx/base/efx_annote.h diff --git a/drivers/net/sfc/base/efx_bootcfg.c b/drivers/common/sfc_efx/base/efx_bootcfg.c similarity index 100% rename from drivers/net/sfc/base/efx_bootcfg.c rename to drivers/common/sfc_efx/base/efx_bootcfg.c diff --git a/drivers/net/sfc/base/efx_check.h b/drivers/common/sfc_efx/base/efx_check.h similarity index 100% rename from drivers/net/sfc/base/efx_check.h rename to drivers/common/sfc_efx/base/efx_check.h diff --git a/drivers/net/sfc/base/efx_crc32.c b/drivers/common/sfc_efx/base/efx_crc32.c similarity index 100% rename from drivers/net/sfc/base/efx_crc32.c rename to drivers/common/sfc_efx/base/efx_crc32.c diff --git a/drivers/net/sfc/base/efx_ev.c b/drivers/common/sfc_efx/base/efx_ev.c similarity index 100% rename from drivers/net/sfc/base/efx_ev.c rename to drivers/common/sfc_efx/base/efx_ev.c diff --git a/drivers/net/sfc/base/efx_evb.c b/drivers/common/sfc_efx/base/efx_evb.c similarity index 100% rename from drivers/net/sfc/base/efx_evb.c rename to drivers/common/sfc_efx/base/efx_evb.c diff --git a/drivers/net/sfc/base/efx_filter.c b/drivers/common/sfc_efx/base/efx_filter.c similarity index 100% rename from drivers/net/sfc/base/efx_filter.c rename to drivers/common/sfc_efx/base/efx_filter.c diff --git a/drivers/net/sfc/base/efx_hash.c b/drivers/common/sfc_efx/base/efx_hash.c similarity index 100% rename from drivers/net/sfc/base/efx_hash.c rename to drivers/common/sfc_efx/base/efx_hash.c diff --git a/drivers/net/sfc/base/efx_impl.h b/drivers/common/sfc_efx/base/efx_impl.h similarity index 100% rename from drivers/net/sfc/base/efx_impl.h rename to drivers/common/sfc_efx/base/efx_impl.h diff --git a/drivers/net/sfc/base/efx_intr.c b/drivers/common/sfc_efx/base/efx_intr.c similarity index 100% rename from drivers/net/sfc/base/efx_intr.c rename to drivers/common/sfc_efx/base/efx_intr.c diff --git a/drivers/net/sfc/base/efx_lic.c b/drivers/common/sfc_efx/base/efx_lic.c similarity index 100% rename from drivers/net/sfc/base/efx_lic.c rename to drivers/common/sfc_efx/base/efx_lic.c diff --git a/drivers/net/sfc/base/efx_mac.c b/drivers/common/sfc_efx/base/efx_mac.c similarity index 100% rename from drivers/net/sfc/base/efx_mac.c rename to drivers/common/sfc_efx/base/efx_mac.c diff --git a/drivers/net/sfc/base/efx_mcdi.c b/drivers/common/sfc_efx/base/efx_mcdi.c similarity index 100% rename from drivers/net/sfc/base/efx_mcdi.c rename to drivers/common/sfc_efx/base/efx_mcdi.c diff --git a/drivers/net/sfc/base/efx_mcdi.h b/drivers/common/sfc_efx/base/efx_mcdi.h similarity index 100% rename from drivers/net/sfc/base/efx_mcdi.h rename to drivers/common/sfc_efx/base/efx_mcdi.h diff --git a/drivers/net/sfc/base/efx_mon.c b/drivers/common/sfc_efx/base/efx_mon.c similarity index 100% rename from drivers/net/sfc/base/efx_mon.c rename to drivers/common/sfc_efx/base/efx_mon.c diff --git a/drivers/net/sfc/base/efx_nic.c b/drivers/common/sfc_efx/base/efx_nic.c similarity index 100% rename from drivers/net/sfc/base/efx_nic.c rename to drivers/common/sfc_efx/base/efx_nic.c diff --git a/drivers/net/sfc/base/efx_nvram.c b/drivers/common/sfc_efx/base/efx_nvram.c similarity index 100% rename from drivers/net/sfc/base/efx_nvram.c rename to drivers/common/sfc_efx/base/efx_nvram.c diff --git a/drivers/net/sfc/base/efx_phy.c b/drivers/common/sfc_efx/base/efx_phy.c similarity index 100% rename from drivers/net/sfc/base/efx_phy.c rename to drivers/common/sfc_efx/base/efx_phy.c diff --git a/drivers/net/sfc/base/efx_phy_ids.h b/drivers/common/sfc_efx/base/efx_phy_ids.h similarity index 100% rename from drivers/net/sfc/base/efx_phy_ids.h rename to drivers/common/sfc_efx/base/efx_phy_ids.h diff --git a/drivers/net/sfc/base/efx_port.c b/drivers/common/sfc_efx/base/efx_port.c similarity index 100% rename from drivers/net/sfc/base/efx_port.c rename to drivers/common/sfc_efx/base/efx_port.c diff --git a/drivers/net/sfc/base/efx_proxy.c b/drivers/common/sfc_efx/base/efx_proxy.c similarity index 100% rename from drivers/net/sfc/base/efx_proxy.c rename to drivers/common/sfc_efx/base/efx_proxy.c diff --git a/drivers/net/sfc/base/efx_regs.h b/drivers/common/sfc_efx/base/efx_regs.h similarity index 100% rename from drivers/net/sfc/base/efx_regs.h rename to drivers/common/sfc_efx/base/efx_regs.h diff --git a/drivers/net/sfc/base/efx_regs_ef10.h b/drivers/common/sfc_efx/base/efx_regs_ef10.h similarity index 100% rename from drivers/net/sfc/base/efx_regs_ef10.h rename to drivers/common/sfc_efx/base/efx_regs_ef10.h diff --git a/drivers/net/sfc/base/efx_regs_mcdi.h b/drivers/common/sfc_efx/base/efx_regs_mcdi.h similarity index 100% rename from drivers/net/sfc/base/efx_regs_mcdi.h rename to drivers/common/sfc_efx/base/efx_regs_mcdi.h diff --git a/drivers/net/sfc/base/efx_regs_mcdi_aoe.h b/drivers/common/sfc_efx/base/efx_regs_mcdi_aoe.h similarity index 100% rename from drivers/net/sfc/base/efx_regs_mcdi_aoe.h rename to drivers/common/sfc_efx/base/efx_regs_mcdi_aoe.h diff --git a/drivers/net/sfc/base/efx_regs_mcdi_strs.h b/drivers/common/sfc_efx/base/efx_regs_mcdi_strs.h similarity index 100% rename from drivers/net/sfc/base/efx_regs_mcdi_strs.h rename to drivers/common/sfc_efx/base/efx_regs_mcdi_strs.h diff --git a/drivers/net/sfc/base/efx_regs_pci.h b/drivers/common/sfc_efx/base/efx_regs_pci.h similarity index 100% rename from drivers/net/sfc/base/efx_regs_pci.h rename to drivers/common/sfc_efx/base/efx_regs_pci.h diff --git a/drivers/net/sfc/base/efx_rx.c b/drivers/common/sfc_efx/base/efx_rx.c similarity index 100% rename from drivers/net/sfc/base/efx_rx.c rename to drivers/common/sfc_efx/base/efx_rx.c diff --git a/drivers/net/sfc/base/efx_sram.c b/drivers/common/sfc_efx/base/efx_sram.c similarity index 100% rename from drivers/net/sfc/base/efx_sram.c rename to drivers/common/sfc_efx/base/efx_sram.c diff --git a/drivers/net/sfc/base/efx_tunnel.c b/drivers/common/sfc_efx/base/efx_tunnel.c similarity index 100% rename from drivers/net/sfc/base/efx_tunnel.c rename to drivers/common/sfc_efx/base/efx_tunnel.c diff --git a/drivers/net/sfc/base/efx_tx.c b/drivers/common/sfc_efx/base/efx_tx.c similarity index 100% rename from drivers/net/sfc/base/efx_tx.c rename to drivers/common/sfc_efx/base/efx_tx.c diff --git a/drivers/net/sfc/base/efx_types.h b/drivers/common/sfc_efx/base/efx_types.h similarity index 100% rename from drivers/net/sfc/base/efx_types.h rename to drivers/common/sfc_efx/base/efx_types.h diff --git a/drivers/net/sfc/base/efx_vpd.c b/drivers/common/sfc_efx/base/efx_vpd.c similarity index 100% rename from drivers/net/sfc/base/efx_vpd.c rename to drivers/common/sfc_efx/base/efx_vpd.c diff --git a/drivers/net/sfc/base/hunt_impl.h b/drivers/common/sfc_efx/base/hunt_impl.h similarity index 100% rename from drivers/net/sfc/base/hunt_impl.h rename to drivers/common/sfc_efx/base/hunt_impl.h diff --git a/drivers/net/sfc/base/hunt_nic.c b/drivers/common/sfc_efx/base/hunt_nic.c similarity index 100% rename from drivers/net/sfc/base/hunt_nic.c rename to drivers/common/sfc_efx/base/hunt_nic.c diff --git a/drivers/net/sfc/base/mcdi_mon.c b/drivers/common/sfc_efx/base/mcdi_mon.c similarity index 100% rename from drivers/net/sfc/base/mcdi_mon.c rename to drivers/common/sfc_efx/base/mcdi_mon.c diff --git a/drivers/net/sfc/base/mcdi_mon.h b/drivers/common/sfc_efx/base/mcdi_mon.h similarity index 100% rename from drivers/net/sfc/base/mcdi_mon.h rename to drivers/common/sfc_efx/base/mcdi_mon.h diff --git a/drivers/net/sfc/base/medford2_impl.h b/drivers/common/sfc_efx/base/medford2_impl.h similarity index 100% rename from drivers/net/sfc/base/medford2_impl.h rename to drivers/common/sfc_efx/base/medford2_impl.h diff --git a/drivers/net/sfc/base/medford2_nic.c b/drivers/common/sfc_efx/base/medford2_nic.c similarity index 100% rename from drivers/net/sfc/base/medford2_nic.c rename to drivers/common/sfc_efx/base/medford2_nic.c diff --git a/drivers/net/sfc/base/medford_impl.h b/drivers/common/sfc_efx/base/medford_impl.h similarity index 100% rename from drivers/net/sfc/base/medford_impl.h rename to drivers/common/sfc_efx/base/medford_impl.h diff --git a/drivers/net/sfc/base/medford_nic.c b/drivers/common/sfc_efx/base/medford_nic.c similarity index 100% rename from drivers/net/sfc/base/medford_nic.c rename to drivers/common/sfc_efx/base/medford_nic.c diff --git a/drivers/net/sfc/base/meson.build b/drivers/common/sfc_efx/base/meson.build similarity index 100% rename from drivers/net/sfc/base/meson.build rename to drivers/common/sfc_efx/base/meson.build diff --git a/drivers/net/sfc/base/siena_flash.h b/drivers/common/sfc_efx/base/siena_flash.h similarity index 100% rename from drivers/net/sfc/base/siena_flash.h rename to drivers/common/sfc_efx/base/siena_flash.h diff --git a/drivers/net/sfc/base/siena_impl.h b/drivers/common/sfc_efx/base/siena_impl.h similarity index 100% rename from drivers/net/sfc/base/siena_impl.h rename to drivers/common/sfc_efx/base/siena_impl.h diff --git a/drivers/net/sfc/base/siena_mac.c b/drivers/common/sfc_efx/base/siena_mac.c similarity index 100% rename from drivers/net/sfc/base/siena_mac.c rename to drivers/common/sfc_efx/base/siena_mac.c diff --git a/drivers/net/sfc/base/siena_mcdi.c b/drivers/common/sfc_efx/base/siena_mcdi.c similarity index 100% rename from drivers/net/sfc/base/siena_mcdi.c rename to drivers/common/sfc_efx/base/siena_mcdi.c diff --git a/drivers/net/sfc/base/siena_nic.c b/drivers/common/sfc_efx/base/siena_nic.c similarity index 100% rename from drivers/net/sfc/base/siena_nic.c rename to drivers/common/sfc_efx/base/siena_nic.c diff --git a/drivers/net/sfc/base/siena_nvram.c b/drivers/common/sfc_efx/base/siena_nvram.c similarity index 100% rename from drivers/net/sfc/base/siena_nvram.c rename to drivers/common/sfc_efx/base/siena_nvram.c diff --git a/drivers/net/sfc/base/siena_phy.c b/drivers/common/sfc_efx/base/siena_phy.c similarity index 100% rename from drivers/net/sfc/base/siena_phy.c rename to drivers/common/sfc_efx/base/siena_phy.c diff --git a/drivers/net/sfc/base/siena_sram.c b/drivers/common/sfc_efx/base/siena_sram.c similarity index 100% rename from drivers/net/sfc/base/siena_sram.c rename to drivers/common/sfc_efx/base/siena_sram.c diff --git a/drivers/net/sfc/base/siena_vpd.c b/drivers/common/sfc_efx/base/siena_vpd.c similarity index 100% rename from drivers/net/sfc/base/siena_vpd.c rename to drivers/common/sfc_efx/base/siena_vpd.c diff --git a/drivers/net/sfc/efsys.h b/drivers/common/sfc_efx/efsys.h similarity index 93% rename from drivers/net/sfc/efsys.h rename to drivers/common/sfc_efx/efsys.h index dee06e5ae3..46b08f9789 100644 --- a/drivers/net/sfc/efsys.h +++ b/drivers/common/sfc_efx/efsys.h @@ -25,15 +25,16 @@ #include #include -#include "sfc_debug.h" -#include "sfc_log.h" +#include "sfc_efx_debug.h" +#include "sfc_efx_log.h" #ifdef __cplusplus extern "C" { #endif -/* No specific decorations required since all functions are local now */ -#define LIBEFX_API +#define LIBEFX_API __rte_internal + +/* No specific decorations required since functions are local by default */ #define LIBEFX_INTERNAL #define EFSYS_HAS_UINT64 1 @@ -228,8 +229,8 @@ typedef struct efsys_mem_s { volatile uint32_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_dword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_dword_t))); \ \ _addr = (volatile uint32_t *)(_base + (_offset)); \ (_edp)->ed_u32[0] = _addr[0]; \ @@ -246,8 +247,8 @@ typedef struct efsys_mem_s { volatile uint64_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_qword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_qword_t))); \ \ _addr = (volatile uint64_t *)(_base + (_offset)); \ (_eqp)->eq_u64[0] = _addr[0]; \ @@ -265,8 +266,8 @@ typedef struct efsys_mem_s { volatile __m128i *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_oword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_oword_t))); \ \ _addr = (volatile __m128i *)(_base + (_offset)); \ (_eop)->eo_u128[0] = _addr[0]; \ @@ -287,8 +288,8 @@ typedef struct efsys_mem_s { volatile uint32_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_dword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_dword_t))); \ \ EFSYS_PROBE2(mem_writed, unsigned int, (_offset), \ uint32_t, (_edp)->ed_u32[0]); \ @@ -305,8 +306,8 @@ typedef struct efsys_mem_s { volatile uint64_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_qword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_qword_t))); \ \ EFSYS_PROBE3(mem_writeq, unsigned int, (_offset), \ uint32_t, (_eqp)->eq_u32[1], \ @@ -324,8 +325,8 @@ typedef struct efsys_mem_s { volatile __m128i *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_oword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_oword_t))); \ \ \ EFSYS_PROBE5(mem_writeo, unsigned int, (_offset), \ @@ -390,8 +391,8 @@ typedef struct efsys_bar_s { volatile uint32_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_dword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_dword_t))); \ _NOTE(CONSTANTCONDITION); \ if (_lock) \ SFC_BAR_LOCK(_esbp); \ @@ -415,8 +416,8 @@ typedef struct efsys_bar_s { volatile uint64_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_qword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_qword_t))); \ \ SFC_BAR_LOCK(_esbp); \ \ @@ -438,8 +439,8 @@ typedef struct efsys_bar_s { volatile __m128i *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_oword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_oword_t))); \ \ _NOTE(CONSTANTCONDITION); \ if (_lock) \ @@ -469,8 +470,8 @@ typedef struct efsys_bar_s { volatile uint32_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_dword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_dword_t))); \ \ _NOTE(CONSTANTCONDITION); \ if (_lock) \ @@ -495,8 +496,8 @@ typedef struct efsys_bar_s { volatile uint64_t *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_qword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_qword_t))); \ \ SFC_BAR_LOCK(_esbp); \ \ @@ -530,8 +531,8 @@ typedef struct efsys_bar_s { volatile __m128i *_addr; \ \ _NOTE(CONSTANTCONDITION); \ - SFC_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ - sizeof(efx_oword_t))); \ + SFC_EFX_ASSERT(EFX_IS_P2ALIGNED(size_t, _offset, \ + sizeof(efx_oword_t))); \ \ _NOTE(CONSTANTCONDITION); \ if (_lock) \ @@ -629,7 +630,7 @@ typedef rte_spinlock_t efsys_lock_t; #define SFC_EFSYS_UNLOCK(_eslp) \ rte_spinlock_unlock((_eslp)) #define SFC_EFSYS_LOCK_ASSERT_OWNED(_eslp) \ - SFC_ASSERT(rte_spinlock_is_locked((_eslp))) + SFC_EFX_ASSERT(rte_spinlock_is_locked((_eslp))) typedef int efsys_lock_state_t; @@ -644,7 +645,7 @@ typedef int efsys_lock_state_t; #define EFSYS_UNLOCK(_lockp, _state) \ do { \ - SFC_ASSERT((_state) == EFSYS_LOCK_MAGIC); \ + SFC_EFX_ASSERT((_state) == EFSYS_LOCK_MAGIC); \ SFC_EFSYS_UNLOCK(_lockp); \ _NOTE(CONSTANTCONDITION); \ } while (B_FALSE) @@ -701,7 +702,7 @@ typedef uint64_t efsys_stat_t; #define EFSYS_ERR(_esip, _code, _dword0, _dword1) \ do { \ (void)(_esip); \ - SFC_GENERIC_LOG(ERR, "FATAL ERROR #%u (0x%08x%08x)", \ + SFC_EFX_LOG(ERR, "FATAL ERROR #%u (0x%08x%08x)", \ (_code), (_dword0), (_dword1)); \ _NOTE(CONSTANTCONDITION); \ } while (B_FALSE) diff --git a/drivers/common/sfc_efx/meson.build b/drivers/common/sfc_efx/meson.build new file mode 100644 index 0000000000..8fab4df792 --- /dev/null +++ b/drivers/common/sfc_efx/meson.build @@ -0,0 +1,39 @@ +# SPDX-License-Identifier: BSD-3-Clause +# +# Copyright(c) 2019-2020 Xilinx, Inc. +# +# This software was jointly developed between OKTET Labs (under contract +# for Solarflare) and Solarflare Communications, Inc. + +if arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64') + build = false + reason = 'only supported on x86_64' +endif + +extra_flags = [] + +# Enable more warnings +extra_flags += [ + '-Wdisabled-optimization' +] + +# Compiler and version dependent flags +extra_flags += [ + '-Waggregate-return', + '-Wbad-function-cast' +] + +foreach flag: extra_flags + if cc.has_argument(flag) + cflags += flag + endif +endforeach + +subdir('base') +objs = [base_objs] + +sources = files( + 'sfc_efx.c', +) + +includes += include_directories('base') diff --git a/drivers/common/sfc_efx/rte_common_sfc_efx_version.map b/drivers/common/sfc_efx/rte_common_sfc_efx_version.map new file mode 100644 index 0000000000..fa297d251b --- /dev/null +++ b/drivers/common/sfc_efx/rte_common_sfc_efx_version.map @@ -0,0 +1,182 @@ +INTERNAL { + global: + + efx_crc32_calculate; + + efx_ev_fini; + efx_ev_init; + efx_ev_qcreate; + efx_ev_qdestroy; + efx_ev_qmoderate; + efx_ev_qpending; + efx_ev_qpoll; + efx_ev_qpost; + efx_ev_qprime; + efx_ev_usecs_to_ticks; + + efx_evq_nbufs; + efx_evq_size; + + efx_family; + + efx_filter_fini; + efx_filter_init; + efx_filter_insert; + efx_filter_remove; + efx_filter_restore; + efx_filter_spec_init_rx; + efx_filter_spec_init_tx; + efx_filter_spec_set_encap_type; + efx_filter_spec_set_eth_local; + efx_filter_spec_set_ether_type; + efx_filter_spec_set_geneve; + efx_filter_spec_set_ipv4_full; + efx_filter_spec_set_ipv4_local; + efx_filter_spec_set_mc_def; + efx_filter_spec_set_nvgre; + efx_filter_spec_set_rss_context; + efx_filter_spec_set_uc_def; + efx_filter_spec_set_vxlan; + efx_filter_supported_filters; + + efx_hash_bytes; + efx_hash_dwords; + + efx_intr_disable; + efx_intr_disable_unlocked; + efx_intr_enable; + efx_intr_fatal; + efx_intr_fini; + efx_intr_init; + efx_intr_status_line; + efx_intr_status_message; + efx_intr_trigger; + + efx_loopback_mask; + efx_loopback_type_name; + + efx_mac_addr_set; + efx_mac_drain; + efx_mac_fcntl_get; + efx_mac_fcntl_set; + efx_mac_filter_default_rxq_clear; + efx_mac_filter_default_rxq_set; + efx_mac_filter_get_all_ucast_mcast; + efx_mac_filter_set; + efx_mac_multicast_list_set; + efx_mac_pdu_get; + efx_mac_pdu_set; + efx_mac_stat_name; + efx_mac_stats_clear; + efx_mac_stats_get_mask; + efx_mac_stats_periodic; + efx_mac_stats_update; + efx_mac_stats_upload; + efx_mac_up; + + efx_mcdi_fini; + efx_mcdi_get_proxy_handle; + efx_mcdi_get_timeout; + efx_mcdi_init; + efx_mcdi_new_epoch; + efx_mcdi_reboot; + efx_mcdi_request_abort; + efx_mcdi_request_poll; + efx_mcdi_request_start; + + efx_mon_fini; + efx_mon_init; + efx_mon_name; + + efx_nic_calculate_pcie_link_bandwidth; + efx_nic_cfg_get; + efx_nic_check_pcie_link_speed; + efx_nic_create; + efx_nic_destroy; + efx_nic_fini; + efx_nic_get_bar_region; + efx_nic_get_fw_subvariant; + efx_nic_get_fw_version; + efx_nic_get_vi_pool; + efx_nic_hw_unavailable; + efx_nic_init; + efx_nic_probe; + efx_nic_reset; + efx_nic_set_drv_limits; + efx_nic_set_drv_version; + efx_nic_set_fw_subvariant; + efx_nic_set_hw_unavailable; + efx_nic_unprobe; + + efx_phy_adv_cap_get; + efx_phy_adv_cap_set; + efx_phy_fec_type_get; + efx_phy_link_state_get; + efx_phy_lp_cap_get; + efx_phy_media_type_get; + efx_phy_module_get_info; + efx_phy_oui_get; + efx_phy_verify; + + efx_port_fini; + efx_port_init; + efx_port_loopback_set; + efx_port_poll; + + efx_pseudo_hdr_hash_get; + efx_pseudo_hdr_pkt_length_get; + + efx_rx_fini; + efx_rx_hash_default_support_get; + efx_rx_init; + efx_rx_qcreate; + efx_rx_qcreate_es_super_buffer; + efx_rx_qdestroy; + efx_rx_qenable; + efx_rx_qflush; + efx_rx_qpost; + efx_rx_qpush; + efx_rx_scale_context_alloc; + efx_rx_scale_context_free; + efx_rx_scale_default_support_get; + efx_rx_scale_hash_flags_get; + efx_rx_scale_key_set; + efx_rx_scale_mode_set; + efx_rx_scale_tbl_set; + efx_rxq_nbufs; + efx_rxq_size; + + efx_sram_buf_tbl_clear; + efx_sram_buf_tbl_set; + + efx_tunnel_config_clear; + efx_tunnel_config_udp_add; + efx_tunnel_config_udp_remove; + efx_tunnel_fini; + efx_tunnel_init; + efx_tunnel_reconfigure; + + efx_tx_fini; + efx_tx_init; + efx_tx_qcreate; + efx_tx_qdesc_checksum_create; + efx_tx_qdesc_dma_create; + efx_tx_qdesc_post; + efx_tx_qdesc_tso_create; + efx_tx_qdesc_tso2_create; + efx_tx_qdesc_vlantci_create; + efx_tx_qdestroy; + efx_tx_qenable; + efx_tx_qflush; + efx_tx_qpace; + efx_tx_qpio_disable; + efx_tx_qpio_enable; + efx_tx_qpio_post; + efx_tx_qpio_write; + efx_tx_qpost; + efx_tx_qpush; + efx_txq_nbufs; + efx_txq_size; + + local: *; +}; diff --git a/drivers/common/sfc_efx/sfc_efx.c b/drivers/common/sfc_efx/sfc_efx.c new file mode 100644 index 0000000000..0b8d5efee9 --- /dev/null +++ b/drivers/common/sfc_efx/sfc_efx.c @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2019-2020 Xilinx, Inc. + * Copyright(c) 2019 Solarflare Communications Inc. + * + * This software was jointly developed between OKTET Labs (under contract + * for Solarflare) and Solarflare Communications, Inc. + */ + +#include + +#include "sfc_efx_log.h" + +uint32_t sfc_efx_logtype; + +RTE_INIT(sfc_efx_register_logtype) +{ + int ret; + + ret = rte_log_register_type_and_pick_level("pmd.common.sfc_efx", + RTE_LOG_NOTICE); + sfc_efx_logtype = (ret < 0) ? RTE_LOGTYPE_PMD : ret; +} diff --git a/drivers/common/sfc_efx/sfc_efx_debug.h b/drivers/common/sfc_efx/sfc_efx_debug.h new file mode 100644 index 0000000000..e0bdeeb5a4 --- /dev/null +++ b/drivers/common/sfc_efx/sfc_efx_debug.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2019-2020 Xilinx, Inc. + * Copyright(c) 2019 Solarflare Communications Inc. + * + * This software was jointly developed between OKTET Labs (under contract + * for Solarflare) and Solarflare Communications, Inc. + */ + +#ifndef _SFC_EFX_DEBUG_H_ +#define _SFC_EFX_DEBUG_H_ + +#include + +#ifndef RTE_DEBUG_COMMON_SFC_EFX +#define RTE_DEBUG_COMMON_SFC_EFX 0 +#endif + +#ifdef RTE_DEBUG_COMMON_SFC_EFX +/* Avoid dependency from RTE_LOG_DP_LEVEL to be able to enable debug check + * in the driver only. + */ +#define SFC_EFX_ASSERT(exp) RTE_VERIFY(exp) +#else +/* If the driver debug is not enabled, follow DPDK debug/non-debug */ +#define SFC_EFX_ASSERT(exp) RTE_ASSERT(exp) +#endif + +#endif /* _SFC_EFX_DEBUG_H_ */ diff --git a/drivers/common/sfc_efx/sfc_efx_log.h b/drivers/common/sfc_efx/sfc_efx_log.h new file mode 100644 index 0000000000..f4417ffc30 --- /dev/null +++ b/drivers/common/sfc_efx/sfc_efx_log.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2019-2020 Xilinx, Inc. + * Copyright(c) 2019 Solarflare Communications Inc. + * + * This software was jointly developed between OKTET Labs (under contract + * for Solarflare) and Solarflare Communications, Inc. + */ + +#ifndef _SFC_EFX_LOG_H_ +#define _SFC_EFX_LOG_H_ + +/** Generic driver log type */ +extern uint32_t sfc_efx_logtype; + +/** Log message, add a prefix and a line break */ +#define SFC_EFX_LOG(level, ...) \ + rte_log(RTE_LOG_ ## level, sfc_efx_logtype, \ + RTE_FMT("sfc_efx: " RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \ + RTE_FMT_TAIL(__VA_ARGS__ ,))) + +#endif /* _SFC_EFX_LOG_H_ */ diff --git a/drivers/net/sfc/meson.build b/drivers/net/sfc/meson.build index 35c05ac1dd..26f0323738 100644 --- a/drivers/net/sfc/meson.build +++ b/drivers/net/sfc/meson.build @@ -33,9 +33,7 @@ foreach flag: extra_flags endif endforeach -subdir('base') -objs = [base_objs] - +deps += ['common_sfc_efx'] sources = files( 'sfc_ethdev.c', 'sfc_kvargs.c', @@ -54,5 +52,3 @@ sources = files( 'sfc_ef10_essb_rx.c', 'sfc_ef10_tx.c' ) - -includes += include_directories('base') From patchwork Thu Sep 17 06:34:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77989 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1548DA04B6; Thu, 17 Sep 2020 08:35:46 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A5E1B1D557; Thu, 17 Sep 2020 08:35:30 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 15A5D1D52F for ; Thu, 17 Sep 2020 08:35:20 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.61]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 95E1C60052 for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) Received: from us4-mdac16-11.ut7.mdlocal (unknown [10.7.65.208]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 938598009E for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 1DC5580055 for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id C9C3210005E for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZChi002487 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 2AC001613A9 for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:32 +0100 Message-ID: <1600324483-23153-7-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-3.301400-8.000000-10 X-TMASE-MatchedRID: mukClXrIO7yl+yWhjYUl7aiUivh0j2PvaeMaKzvXUpkGmHr1eMxt2YB5 w6KBECW1rdoLblq9S5oAhGIvsKa9H6qrJ2yPRGzpRaPXfvn+keqkdO7TbvbzY7qE5Z6/nd2cj+v Rrcokg+WrtzQ4oLWNxt4PjuOlRMxlS62nMBX/dwP4KPASpfWnuVsP0tBwe3qDkY8eITaSJPhnml iDOiSLQ/GrOL7GbikWgePt/FBezHC8gVUkX0SvF854hX4xV6jOfS0Ip2eEHnz3IzXlXlpamPoLR 4+zsDTtHtexZ1+/9PmlF4DxSfZVrRpfT1NXwKroGus3x7d8v+9Po3Kbq748ZmwoV7uXtxn/NffI vuoK0copYoYq9+gIB0gFvgko9aNFhQAl75DFpaYAA9BapWXaJtG+KyfdrZrRf3e2vVbH8zBmH8z Zfront8C+ksT6a9fy X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--3.301400-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324519-HUXeukjPfhLR Subject: [dpdk-dev] [PATCH v2 06/17] net/sfc: add dedicated header file with MCDI interface 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" MCDI helpers will be shared by net and vDPA drivers. Prepare to move it to common/sfc_efx. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc.h | 23 +--------------- drivers/net/sfc/sfc_mcdi.c | 1 + drivers/net/sfc/sfc_mcdi.h | 54 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 22 deletions(-) create mode 100644 drivers/net/sfc/sfc_mcdi.h diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index cdff9be3ec..a530b12a8e 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -23,6 +23,7 @@ #include "sfc_debug.h" #include "sfc_filter.h" +#include "sfc_mcdi.h" #ifdef __cplusplus extern "C" { @@ -86,25 +87,6 @@ enum sfc_dev_filter_mode { SFC_DEV_FILTER_NMODES }; -enum sfc_mcdi_state { - SFC_MCDI_UNINITIALIZED = 0, - SFC_MCDI_INITIALIZED, - SFC_MCDI_BUSY, - SFC_MCDI_COMPLETED, - - SFC_MCDI_NSTATES -}; - -struct sfc_mcdi { - rte_spinlock_t lock; - efsys_mem_t mem; - enum sfc_mcdi_state state; - efx_mcdi_transport_t transport; - uint32_t logtype; - uint32_t proxy_handle; - efx_rc_t proxy_result; -}; - struct sfc_intr { efx_intr_type_t type; rte_intr_callback_fn handler; @@ -384,9 +366,6 @@ void sfc_stop(struct sfc_adapter *sa); void sfc_schedule_restart(struct sfc_adapter *sa); -int sfc_mcdi_init(struct sfc_adapter *sa); -void sfc_mcdi_fini(struct sfc_adapter *sa); - int sfc_configure(struct sfc_adapter *sa); void sfc_close(struct sfc_adapter *sa); diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index ec62ba95ff..9a51b3e030 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -13,6 +13,7 @@ #include "efx_mcdi.h" #include "efx_regs_mcdi.h" +#include "sfc_mcdi.h" #include "sfc.h" #include "sfc_debug.h" #include "sfc_log.h" diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h new file mode 100644 index 0000000000..789a16d8bb --- /dev/null +++ b/drivers/net/sfc/sfc_mcdi.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2019-2020 Xilinx, Inc. + * Copyright(c) 2016-2019 Solarflare Communications Inc. + * + * This software was jointly developed between OKTET Labs (under contract + * for Solarflare) and Solarflare Communications, Inc. + */ + +#ifndef _SFC_MCDI_H +#define _SFC_MCDI_H + +#include + +#include + +#include "efsys.h" +#include "efx.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +enum sfc_mcdi_state { + SFC_MCDI_UNINITIALIZED = 0, + SFC_MCDI_INITIALIZED, + SFC_MCDI_BUSY, + SFC_MCDI_COMPLETED, + + SFC_MCDI_NSTATES +}; + +struct sfc_mcdi { + rte_spinlock_t lock; + efsys_mem_t mem; + enum sfc_mcdi_state state; + efx_mcdi_transport_t transport; + uint32_t logtype; + uint32_t proxy_handle; + efx_rc_t proxy_result; +}; + + +struct sfc_adapter; + +int sfc_mcdi_init(struct sfc_adapter *sa); +void sfc_mcdi_fini(struct sfc_adapter *sa); + +#ifdef __cplusplus +} +#endif + +#endif /* _SFC_MCDI_H */ From patchwork Thu Sep 17 06:34:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77992 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 44A24A04B6; Thu, 17 Sep 2020 08:36:15 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 460141D566; Thu, 17 Sep 2020 08:35:34 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 100F21D53E for ; Thu, 17 Sep 2020 08:35:21 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 9032F60066 for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from us4-mdac16-53.ut7.mdlocal (unknown [10.7.66.24]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 8FC4C8009B for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 09CDB280050 for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 95D6710005E for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCvA002490 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 37A511613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:33 +0100 Message-ID: <1600324483-23153-8-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-7.242100-8.000000-10 X-TMASE-MatchedRID: j2pOm8rChFuy9Uh/U28aL8mR5yDJkPg4SWg+u4ir2NOx6d2WO4Kt3eZ5 Gn23AeDZ8XVI39JCRnRuL3ESIrARlyHhSBQfglfsA9lly13c/gHZywDYifSetv3ZlZEIBuK0ZSg PkksZfMCp5lIcUsiQ21CTGkEP+yMkT7Z+FYI5UyHknMSTG9lH+J7B58V0nMeKqPGqHIPGZiPSJJ cbp1Y+Wyv4WWlvjvWfYVCjcmRetW6Zka9ZOnvpYBcr91Fo5aW9GKyJtpoUCGYcCkgotCl7hM1qk z3j5LNsoPnutf4cqxVm1hdnVK4ua+BheOk5tfVp2Hlwa3CYC+T54F/2i/DwjQpCjqVELlwVgNs3 amZ3AUPVy1G1jO4I4qVV+UYNOXSTQ9tg+p38ZomeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8jHUU+ U0ACZwDE63HM+4BUVvn9bsecRAaJAgzJhU+Pa36MxiyOOeSw4nqg/VrSZEiM= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--7.242100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324520-OAwfGl5meNcb Subject: [dpdk-dev] [PATCH v2 07/17] net/sfc: move MCDI helper interface to dedicated namespace 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" MCDI helpers will be moved to common/sfc_efx and it is better to do dummy renamings first before non-trivial changes. Existing functionality should be split into common and network driver specific parts. Prepare to do it. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc.h | 5 +- drivers/net/sfc/sfc_mcdi.c | 108 +++++++++++++++++++++---------------- drivers/net/sfc/sfc_mcdi.h | 22 +++----- 3 files changed, 73 insertions(+), 62 deletions(-) diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index a530b12a8e..b3ac752334 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -220,7 +220,7 @@ struct sfc_adapter { rte_spinlock_t nic_lock; rte_atomic32_t restart_required; - struct sfc_mcdi mcdi; + struct sfc_efx_mcdi mcdi; struct sfc_intr intr; struct sfc_port port; struct sfc_filter filter; @@ -366,6 +366,9 @@ void sfc_stop(struct sfc_adapter *sa); void sfc_schedule_restart(struct sfc_adapter *sa); +int sfc_mcdi_init(struct sfc_adapter *sa); +void sfc_mcdi_fini(struct sfc_adapter *sa); + int sfc_configure(struct sfc_adapter *sa); void sfc_close(struct sfc_adapter *sa); diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 9a51b3e030..c97a33d558 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -19,12 +19,12 @@ #include "sfc_log.h" #include "sfc_ev.h" -#define SFC_MCDI_POLL_INTERVAL_MIN_US 10 /* 10us in 1us units */ -#define SFC_MCDI_POLL_INTERVAL_MAX_US (US_PER_S / 10) /* 100ms in 1us units */ -#define SFC_MCDI_WATCHDOG_INTERVAL_US (10 * US_PER_S) /* 10s in 1us units */ +#define SFC_EFX_MCDI_POLL_INTERVAL_MIN_US 10 /* 10us */ +#define SFC_EFX_MCDI_POLL_INTERVAL_MAX_US (US_PER_S / 10) /* 100ms */ +#define SFC_EFX_MCDI_WATCHDOG_INTERVAL_US (10 * US_PER_S) /* 10s */ static void -sfc_mcdi_timeout(struct sfc_adapter *sa) +sfc_efx_mcdi_timeout(struct sfc_adapter *sa) { sfc_warn(sa, "MC TIMEOUT"); @@ -32,9 +32,9 @@ sfc_mcdi_timeout(struct sfc_adapter *sa) } static inline boolean_t -sfc_mcdi_proxy_event_available(struct sfc_adapter *sa) +sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) { - struct sfc_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = &sa->mcdi; mcdi->proxy_handle = 0; mcdi->proxy_result = ETIMEDOUT; @@ -46,7 +46,7 @@ sfc_mcdi_proxy_event_available(struct sfc_adapter *sa) } static void -sfc_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) +sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) { efx_nic_t *enp; unsigned int delay_total; @@ -54,22 +54,22 @@ sfc_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) boolean_t aborted __rte_unused; delay_total = 0; - delay_us = SFC_MCDI_POLL_INTERVAL_MIN_US; + delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MIN_US; enp = sa->nic; do { boolean_t poll_completed; - poll_completed = (proxy) ? sfc_mcdi_proxy_event_available(sa) : + poll_completed = (proxy) ? sfc_efx_mcdi_proxy_event_available(sa) : efx_mcdi_request_poll(enp); if (poll_completed) return; - if (delay_total > SFC_MCDI_WATCHDOG_INTERVAL_US) { + if (delay_total > SFC_EFX_MCDI_WATCHDOG_INTERVAL_US) { if (!proxy) { aborted = efx_mcdi_request_abort(enp); SFC_ASSERT(aborted); - sfc_mcdi_timeout(sa); + sfc_efx_mcdi_timeout(sa); } return; @@ -80,27 +80,28 @@ sfc_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) delay_total += delay_us; /* Exponentially back off the poll frequency */ - RTE_BUILD_BUG_ON(SFC_MCDI_POLL_INTERVAL_MAX_US > UINT_MAX / 2); + RTE_BUILD_BUG_ON(SFC_EFX_MCDI_POLL_INTERVAL_MAX_US > + UINT_MAX / 2); delay_us *= 2; - if (delay_us > SFC_MCDI_POLL_INTERVAL_MAX_US) - delay_us = SFC_MCDI_POLL_INTERVAL_MAX_US; + if (delay_us > SFC_EFX_MCDI_POLL_INTERVAL_MAX_US) + delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MAX_US; } while (1); } static void -sfc_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) +sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) { struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = &sa->mcdi; uint32_t proxy_handle; rte_spinlock_lock(&mcdi->lock); - SFC_ASSERT(mcdi->state == SFC_MCDI_INITIALIZED); + SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); efx_mcdi_request_start(sa->nic, emrp, B_FALSE); - sfc_mcdi_poll(sa, B_FALSE); + sfc_efx_mcdi_poll(sa, B_FALSE); if (efx_mcdi_get_proxy_handle(sa->nic, emrp, &proxy_handle) == 0) { /* @@ -109,7 +110,7 @@ sfc_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * a non-zero proxy handle (should be the same as * the value obtained above) and operation status */ - sfc_mcdi_poll(sa, B_TRUE); + sfc_efx_mcdi_poll(sa, B_TRUE); if ((mcdi->proxy_handle != 0) && (mcdi->proxy_handle != proxy_handle)) { @@ -121,7 +122,7 @@ sfc_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * request and poll for an ordinary MCDI response */ efx_mcdi_request_start(sa->nic, emrp, B_FALSE); - sfc_mcdi_poll(sa, B_FALSE); + sfc_efx_mcdi_poll(sa, B_FALSE); } else { emrp->emr_rc = mcdi->proxy_result; sfc_err(sa, "MCDI proxy authorization failed " @@ -134,20 +135,20 @@ sfc_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) } static void -sfc_mcdi_ev_cpl(void *arg) +sfc_efx_mcdi_ev_cpl(void *arg) { struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_mcdi *mcdi __rte_unused; + struct sfc_efx_mcdi *mcdi __rte_unused; mcdi = &sa->mcdi; - SFC_ASSERT(mcdi->state == SFC_MCDI_INITIALIZED); + SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); /* MCDI is polled, completions are not expected */ SFC_ASSERT(0); } static void -sfc_mcdi_exception(void *arg, efx_mcdi_exception_t eme) +sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) { struct sfc_adapter *sa = (struct sfc_adapter *)arg; @@ -161,7 +162,7 @@ sfc_mcdi_exception(void *arg, efx_mcdi_exception_t eme) #define SFC_MCDI_LOG_BUF_SIZE 128 static size_t -sfc_mcdi_do_log(const struct sfc_adapter *sa, +sfc_efx_mcdi_do_log(const struct sfc_adapter *sa, char *buffer, void *data, size_t data_size, size_t pfxsize, size_t position) { @@ -190,7 +191,7 @@ sfc_mcdi_do_log(const struct sfc_adapter *sa, } static void -sfc_mcdi_logger(void *arg, efx_log_msg_t type, +sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, void *header, size_t header_size, void *data, size_t data_size) { @@ -215,9 +216,10 @@ sfc_mcdi_logger(void *arg, efx_log_msg_t type, pfxsize = snprintf(buffer, sizeof(buffer), "MCDI RPC %s:", type == EFX_LOG_MCDI_REQUEST ? "REQ" : type == EFX_LOG_MCDI_RESPONSE ? "RESP" : "???"); - start = sfc_mcdi_do_log(sa, buffer, header, header_size, - pfxsize, pfxsize); - start = sfc_mcdi_do_log(sa, buffer, data, data_size, pfxsize, start); + start = sfc_efx_mcdi_do_log(sa, buffer, header, header_size, + pfxsize, pfxsize); + start = sfc_efx_mcdi_do_log(sa, buffer, data, data_size, + pfxsize, start); if (start != pfxsize) { buffer[start] = '\0'; sfc_log_mcdi(sa, "%s", buffer); @@ -225,19 +227,19 @@ sfc_mcdi_logger(void *arg, efx_log_msg_t type, } static void -sfc_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) +sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) { struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = &sa->mcdi; mcdi->proxy_handle = handle; mcdi->proxy_result = result; } -int -sfc_mcdi_init(struct sfc_adapter *sa) +static int +sfc_efx_mcdi_init(struct sfc_adapter *sa) { - struct sfc_mcdi *mcdi; + struct sfc_efx_mcdi *mcdi; size_t max_msg_size; efx_mcdi_transport_t *emtp; int rc; @@ -246,11 +248,11 @@ sfc_mcdi_init(struct sfc_adapter *sa) mcdi = &sa->mcdi; - SFC_ASSERT(mcdi->state == SFC_MCDI_UNINITIALIZED); + SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); rte_spinlock_init(&mcdi->lock); - mcdi->state = SFC_MCDI_INITIALIZED; + mcdi->state = SFC_EFX_MCDI_INITIALIZED; max_msg_size = sizeof(uint32_t) + MCDI_CTL_SDU_LEN_MAX_V2; rc = sfc_dma_alloc(sa, "mcdi", 0, max_msg_size, sa->socket_id, @@ -265,11 +267,11 @@ sfc_mcdi_init(struct sfc_adapter *sa) emtp = &mcdi->transport; emtp->emt_context = sa; emtp->emt_dma_mem = &mcdi->mem; - emtp->emt_execute = sfc_mcdi_execute; - emtp->emt_ev_cpl = sfc_mcdi_ev_cpl; - emtp->emt_exception = sfc_mcdi_exception; - emtp->emt_logger = sfc_mcdi_logger; - emtp->emt_ev_proxy_response = sfc_mcdi_ev_proxy_response; + emtp->emt_execute = sfc_efx_mcdi_execute; + emtp->emt_ev_cpl = sfc_efx_mcdi_ev_cpl; + emtp->emt_exception = sfc_efx_mcdi_exception; + emtp->emt_logger = sfc_efx_mcdi_logger; + emtp->emt_ev_proxy_response = sfc_efx_mcdi_ev_proxy_response; sfc_log_init(sa, "init MCDI"); rc = efx_mcdi_init(sa->nic, emtp); @@ -283,14 +285,14 @@ sfc_mcdi_init(struct sfc_adapter *sa) sfc_dma_free(sa, &mcdi->mem); fail_dma_alloc: - mcdi->state = SFC_MCDI_UNINITIALIZED; + mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; return rc; } -void -sfc_mcdi_fini(struct sfc_adapter *sa) +static void +sfc_efx_mcdi_fini(struct sfc_adapter *sa) { - struct sfc_mcdi *mcdi; + struct sfc_efx_mcdi *mcdi; efx_mcdi_transport_t *emtp; sfc_log_init(sa, "entry"); @@ -300,8 +302,8 @@ sfc_mcdi_fini(struct sfc_adapter *sa) rte_spinlock_lock(&mcdi->lock); - SFC_ASSERT(mcdi->state == SFC_MCDI_INITIALIZED); - mcdi->state = SFC_MCDI_UNINITIALIZED; + SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); + mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; sfc_log_init(sa, "fini MCDI"); efx_mcdi_fini(sa->nic); @@ -311,3 +313,15 @@ sfc_mcdi_fini(struct sfc_adapter *sa) sfc_dma_free(sa, &mcdi->mem); } + +int +sfc_mcdi_init(struct sfc_adapter *sa) +{ + return sfc_efx_mcdi_init(sa); +} + +void +sfc_mcdi_fini(struct sfc_adapter *sa) +{ + sfc_efx_mcdi_fini(sa); +} diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index 789a16d8bb..10f5bab666 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -22,31 +22,25 @@ extern "C" { #endif -enum sfc_mcdi_state { - SFC_MCDI_UNINITIALIZED = 0, - SFC_MCDI_INITIALIZED, - SFC_MCDI_BUSY, - SFC_MCDI_COMPLETED, +enum sfc_efx_mcdi_state { + SFC_EFX_MCDI_UNINITIALIZED = 0, + SFC_EFX_MCDI_INITIALIZED, + SFC_EFX_MCDI_BUSY, + SFC_EFX_MCDI_COMPLETED, - SFC_MCDI_NSTATES + SFC_EFX_MCDI_NSTATES }; -struct sfc_mcdi { +struct sfc_efx_mcdi { rte_spinlock_t lock; efsys_mem_t mem; - enum sfc_mcdi_state state; + enum sfc_efx_mcdi_state state; efx_mcdi_transport_t transport; uint32_t logtype; uint32_t proxy_handle; efx_rc_t proxy_result; }; - -struct sfc_adapter; - -int sfc_mcdi_init(struct sfc_adapter *sa); -void sfc_mcdi_fini(struct sfc_adapter *sa); - #ifdef __cplusplus } #endif From patchwork Thu Sep 17 06:34:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77993 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F1F16A04B6; Thu, 17 Sep 2020 08:36:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A7D901D56D; Thu, 17 Sep 2020 08:35:35 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 691431D543 for ; Thu, 17 Sep 2020 08:35:21 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id E2BF760070 for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from us4-mdac16-66.ut7.mdlocal (unknown [10.7.64.78]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id DF9452009A for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 68E441C0052 for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 2075310005E for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCrQ002493 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 44BFE1613A9 for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:34 +0100 Message-ID: <1600324483-23153-9-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-8.731200-8.000000-10 X-TMASE-MatchedRID: tcizGzo33Igi+Ly1jF96cbsHVDDM5xAPgcsVZH3dOCQGmHr1eMxt2UAc 6DyoS2rIOelg+pLqPPFsGcpYVjbbPr5FkoP8eT9ncaD+wPaBYtZIevoF6P4wcjbpMgyAfh26jGd KRTlT9kLb2VJ5zpbgoR9hkM6DnVcWX+8u+zQ7JmLknMSTG9lH+KIik2/euMx1VWQnHKxp38iUR6 6C6i5v83xL67a3d6gmRT5xeSl5IKJ5OVTeAyRyiLBZAi3nrnzbYCdLkMLwLkPNOks35FeGOaPFj JEFr+olwXCBO/GKkVqOhzOa6g8KrQDfSq9t4KACXbrUBOI3b4zrqJKHagbR08XkP1A0PpolqOOv oFiXspE= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--8.731200-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324520-PnDD_dPTAQr6 Subject: [dpdk-dev] [PATCH v2 08/17] net/sfc: make MCDI logging helper macros local 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Prepare to move MCDI helpers to drivers/common. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_log.h | 11 ----------- drivers/net/sfc/sfc_mcdi.c | 21 ++++++++++++++++----- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/net/sfc/sfc_log.h b/drivers/net/sfc/sfc_log.h index 5383091c76..4bf44b1f15 100644 --- a/drivers/net/sfc/sfc_log.h +++ b/drivers/net/sfc/sfc_log.h @@ -28,9 +28,6 @@ extern uint32_t sfc_logtype_driver; /** Device MCDI log type name prefix */ #define SFC_LOGTYPE_MCDI_STR SFC_LOGTYPE_PREFIX "mcdi" -/** Level value used by MCDI log statements */ -#define SFC_LOG_LEVEL_MCDI RTE_LOG_INFO - /* Log PMD message, automatically add prefix and \n */ #define SFC_LOG(sas, level, type, ...) \ do { \ @@ -92,13 +89,5 @@ extern uint32_t sfc_logtype_driver; RTE_FMT_TAIL(__VA_ARGS__ ,))); \ } while (0) -#define sfc_log_mcdi(sa, ...) \ - do { \ - const struct sfc_adapter *_sa = (sa); \ - \ - SFC_LOG(_sa->priv.shared, SFC_LOG_LEVEL_MCDI, \ - _sa->mcdi.logtype, __VA_ARGS__); \ - } while (0) - #endif /* _SFC_LOG_H_ */ diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index c97a33d558..c716caabdf 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -23,6 +23,17 @@ #define SFC_EFX_MCDI_POLL_INTERVAL_MAX_US (US_PER_S / 10) /* 100ms */ #define SFC_EFX_MCDI_WATCHDOG_INTERVAL_US (10 * US_PER_S) /* 10s */ +/** Level value used by MCDI log statements */ +#define SFC_EFX_LOG_LEVEL_MCDI RTE_LOG_INFO + +#define sfc_efx_log_mcdi(sa, ...) \ + do { \ + const struct sfc_adapter *_sa = (sa); \ + \ + SFC_LOG(_sa->priv.shared, SFC_EFX_LOG_LEVEL_MCDI, \ + _sa->mcdi.logtype, __VA_ARGS__); \ + } while (0) + static void sfc_efx_mcdi_timeout(struct sfc_adapter *sa) { @@ -178,7 +189,7 @@ sfc_efx_mcdi_do_log(const struct sfc_adapter *sa, * at the end which is required by netlogdecode. */ buffer[position] = '\0'; - sfc_log_mcdi(sa, "%s \\", buffer); + sfc_efx_log_mcdi(sa, "%s \\", buffer); /* Preserve prefix for the next log message */ position = pfxsize; } @@ -207,11 +218,11 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, * * To avoid wasting time, the actual level is examined in advance. */ - if (rte_log_get_level(sa->mcdi.logtype) < (int)SFC_LOG_LEVEL_MCDI) + if (rte_log_get_level(sa->mcdi.logtype) < (int)SFC_EFX_LOG_LEVEL_MCDI) return; - /* The format including prefix added by sfc_log_mcdi() is the format - * consumed by the Solarflare netlogdecode tool. + /* The format including prefix added by sfc_efx_log_mcdi() is the + * format consumed by the Solarflare netlogdecode tool. */ pfxsize = snprintf(buffer, sizeof(buffer), "MCDI RPC %s:", type == EFX_LOG_MCDI_REQUEST ? "REQ" : @@ -222,7 +233,7 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, pfxsize, start); if (start != pfxsize) { buffer[start] = '\0'; - sfc_log_mcdi(sa, "%s", buffer); + sfc_efx_log_mcdi(sa, "%s", buffer); } } From patchwork Thu Sep 17 06:34:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77988 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0844FA04B6; Thu, 17 Sep 2020 08:35:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1748C1D551; Thu, 17 Sep 2020 08:35:25 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 24E921D52F for ; Thu, 17 Sep 2020 08:35:19 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A592660070 for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) Received: from us4-mdac16-36.ut7.mdlocal (unknown [10.7.66.155]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A530B2009A for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 333EE1C0052 for ; Thu, 17 Sep 2020 06:35:18 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id DE3DE10005E for ; Thu, 17 Sep 2020 06:35:17 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCTG002496 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 512741613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:35 +0100 Message-ID: <1600324483-23153-10-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-6.083700-8.000000-10 X-TMASE-MatchedRID: 4xjj6Mfa9K5SHosnxqKdcP3HILfxLV/9E3EgF0+MVuBwkdIrVt8X1ciT Wug2C4DNBTL3N8yyT9ePQi9XuOWoOLQHnhaRx4GgMy+jMkhCdFbYuVu0X/rOkEdmDSBYfnJRssk CJ7yz5Pwfhw4XBVnp2E/fJLuJlbjnHxPMjOKY7A8LbigRnpKlKWxlRJiH4397apPiEUUWfU/L32 cs7IQiOmDDNtsHslsUuWcIZI9Qn0KEybG8uWxreg== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--6.083700-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324518-Ct6ZUOsH7_UD Subject: [dpdk-dev] [PATCH v2 09/17] net/sfc: start to make MCDI helpers interface shareable 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" sfc_adapter is network driver specific structure which finally should not be used in shared MCDI helpers interface. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index c716caabdf..35e1f3940d 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -248,17 +248,14 @@ sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) } static int -sfc_efx_mcdi_init(struct sfc_adapter *sa) +sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) { - struct sfc_efx_mcdi *mcdi; size_t max_msg_size; efx_mcdi_transport_t *emtp; int rc; sfc_log_init(sa, "entry"); - mcdi = &sa->mcdi; - SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); rte_spinlock_init(&mcdi->lock); @@ -301,14 +298,12 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa) } static void -sfc_efx_mcdi_fini(struct sfc_adapter *sa) +sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) { - struct sfc_efx_mcdi *mcdi; efx_mcdi_transport_t *emtp; sfc_log_init(sa, "entry"); - mcdi = &sa->mcdi; emtp = &mcdi->transport; rte_spinlock_lock(&mcdi->lock); @@ -328,11 +323,11 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa) int sfc_mcdi_init(struct sfc_adapter *sa) { - return sfc_efx_mcdi_init(sa); + return sfc_efx_mcdi_init(sa, &sa->mcdi); } void sfc_mcdi_fini(struct sfc_adapter *sa) { - sfc_efx_mcdi_fini(sa); + sfc_efx_mcdi_fini(sa, &sa->mcdi); } From patchwork Thu Sep 17 06:34:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 78002 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8A80DA04B6; Thu, 17 Sep 2020 08:37:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 50C7A1D5A9; Thu, 17 Sep 2020 08:35:48 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id AD7AF1D54E for ; Thu, 17 Sep 2020 08:35:25 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 3AE0360058 for ; Thu, 17 Sep 2020 06:35:25 +0000 (UTC) Received: from us4-mdac16-68.ut7.mdlocal (unknown [10.7.64.187]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 3B1268009E for ; Thu, 17 Sep 2020 06:35:25 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id AEDAE280050 for ; Thu, 17 Sep 2020 06:35:24 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 4654A10006E for ; Thu, 17 Sep 2020 06:35:24 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCXq002499 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 5DC581613A9 for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:36 +0100 Message-ID: <1600324483-23153-11-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-15.476000-8.000000-10 X-TMASE-MatchedRID: q1pm6qPPK/2bX4K/DqV0NcXfQl57nu/G2csA2In0nrZwkdIrVt8X1ciT Wug2C4DNaBlE1XNBqpjE2B1VA3GwSiHhSBQfglfsA9lly13c/gHAmOfzKotToo+Ixb7djOSCfVU ABWHMm0s+FZALrdQw27VYhmmQ16xDEGrGKgXI3I8dt2/pSR7zwIZ6Q5tE4bB0x5B+7qLBJ+z6O4 3MfdK6t+8wp+H295Osy/h3/XXam+iqJxP8CL5wCW6HurDH4PpP8gryAriuOnIRQQ4kFqjjJACJT p5CwDqKGSUXbuI5f3+Jkhd2ZcbBKHnYsjCinlm920204SCJw/qnLZXtX62Wm3S7//lqxurTHXPt gR0gN1zSJsMPesp+yyYRyYlpEhDLENHwxbanitm2+eU4nrUrehdoyFlJ5UUMFBQ5IKls/A7PR1u d0AS9ADhME59DakTsbMYatN9zEWEiRWw1gHaWS6IBnfMCFBiCLPSJu5jov2YUZ5IS2TgivU2p3Z j/R/ne4vM1YF6AJbbCCfuIMF6xLbxAi7jPoeEQftwZ3X11IV0= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--15.476000-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324525-Eo5Wwio16h4R Subject: [dpdk-dev] [PATCH v2 10/17] net/sfc: use own logging helper macros 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Network driver logging macros depends on sfc_adapter which is specific to the driver and cannot be used in common code. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc.h | 2 + drivers/net/sfc/sfc_ethdev.c | 13 ++++++ drivers/net/sfc/sfc_log.h | 12 ++--- drivers/net/sfc/sfc_mcdi.c | 86 +++++++++++++++++++++++------------- drivers/net/sfc/sfc_mcdi.h | 1 + 5 files changed, 75 insertions(+), 39 deletions(-) diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index b3ac752334..b20fecb4f8 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -22,6 +22,7 @@ #include "efx.h" #include "sfc_debug.h" +#include "sfc_log.h" #include "sfc_filter.h" #include "sfc_mcdi.h" @@ -170,6 +171,7 @@ struct sfc_adapter_shared { boolean_t isolated; uint32_t tunnel_encaps; + char log_prefix[SFC_LOG_PREFIX_MAX]; struct rte_pci_addr pci_addr; uint16_t port_id; diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 1a58e0df84..6c96118007 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -2136,6 +2136,7 @@ sfc_eth_dev_init(struct rte_eth_dev *dev) int rc; const efx_nic_cfg_t *encp; const struct rte_ether_addr *from; + int ret; sfc_register_dp(); @@ -2147,6 +2148,18 @@ sfc_eth_dev_init(struct rte_eth_dev *dev) return -sfc_eth_dev_secondary_init(dev, logtype_main); /* Required for logging */ + ret = snprintf(sas->log_prefix, sizeof(sas->log_prefix), + "PMD: sfc_efx " PCI_PRI_FMT " #%" PRIu16 ": ", + pci_dev->addr.domain, pci_dev->addr.bus, + pci_dev->addr.devid, pci_dev->addr.function, + dev->data->port_id); + if (ret < 0 || ret >= (int)sizeof(sas->log_prefix)) { + SFC_GENERIC_LOG(ERR, + "reserved log prefix is too short for " PCI_PRI_FMT, + pci_dev->addr.domain, pci_dev->addr.bus, + pci_dev->addr.devid, pci_dev->addr.function); + return -EINVAL; + } sas->pci_addr = pci_dev->addr; sas->port_id = dev->data->port_id; diff --git a/drivers/net/sfc/sfc_log.h b/drivers/net/sfc/sfc_log.h index 4bf44b1f15..a2d714afb7 100644 --- a/drivers/net/sfc/sfc_log.h +++ b/drivers/net/sfc/sfc_log.h @@ -28,20 +28,16 @@ extern uint32_t sfc_logtype_driver; /** Device MCDI log type name prefix */ #define SFC_LOGTYPE_MCDI_STR SFC_LOGTYPE_PREFIX "mcdi" +#define SFC_LOG_PREFIX_MAX 32 + /* Log PMD message, automatically add prefix and \n */ #define SFC_LOG(sas, level, type, ...) \ do { \ const struct sfc_adapter_shared *_sas = (sas); \ \ rte_log(level, type, \ - RTE_FMT("PMD: sfc_efx " \ - PCI_PRI_FMT " #%" PRIu16 \ - ": " RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \ - _sas->pci_addr.domain, \ - _sas->pci_addr.bus, \ - _sas->pci_addr.devid, \ - _sas->pci_addr.function, \ - _sas->port_id, \ + RTE_FMT("%s" RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \ + _sas->log_prefix, \ RTE_FMT_TAIL(__VA_ARGS__,))); \ } while (0) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 35e1f3940d..5f6ad0a4aa 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -23,21 +23,37 @@ #define SFC_EFX_MCDI_POLL_INTERVAL_MAX_US (US_PER_S / 10) /* 100ms */ #define SFC_EFX_MCDI_WATCHDOG_INTERVAL_US (10 * US_PER_S) /* 10s */ -/** Level value used by MCDI log statements */ -#define SFC_EFX_LOG_LEVEL_MCDI RTE_LOG_INFO - -#define sfc_efx_log_mcdi(sa, ...) \ +#define sfc_efx_mcdi_log(mcdi, level, ...) \ do { \ - const struct sfc_adapter *_sa = (sa); \ + const struct sfc_efx_mcdi *_mcdi = (mcdi); \ \ - SFC_LOG(_sa->priv.shared, SFC_EFX_LOG_LEVEL_MCDI, \ - _sa->mcdi.logtype, __VA_ARGS__); \ + rte_log(level, _mcdi->logtype, \ + RTE_FMT("%s" RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \ + _mcdi->log_prefix, \ + RTE_FMT_TAIL(__VA_ARGS__,))); \ } while (0) +#define sfc_efx_mcdi_err(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_ERR, __VA_ARGS__) + +#define sfc_efx_mcdi_warn(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_WARNING, __VA_ARGS__) + +#define sfc_efx_mcdi_info(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_INFO, __VA_ARGS__) + +/** Level value used by MCDI log statements */ +#define SFC_EFX_LOG_LEVEL_MCDI RTE_LOG_INFO + +#define sfc_efx_log_mcdi(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, SFC_EFX_LOG_LEVEL_MCDI, __VA_ARGS__) + static void sfc_efx_mcdi_timeout(struct sfc_adapter *sa) { - sfc_warn(sa, "MC TIMEOUT"); + struct sfc_efx_mcdi *mcdi = &sa->mcdi; + + sfc_efx_mcdi_warn(mcdi, "MC TIMEOUT"); sfc_panic(sa, "MCDI timeout handling is not implemented\n"); } @@ -125,7 +141,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) if ((mcdi->proxy_handle != 0) && (mcdi->proxy_handle != proxy_handle)) { - sfc_err(sa, "Unexpected MCDI proxy event"); + sfc_efx_mcdi_err(mcdi, "Unexpected MCDI proxy event"); emrp->emr_rc = EFAULT; } else if (mcdi->proxy_result == 0) { /* @@ -136,9 +152,9 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) sfc_efx_mcdi_poll(sa, B_FALSE); } else { emrp->emr_rc = mcdi->proxy_result; - sfc_err(sa, "MCDI proxy authorization failed " - "(handle=%08x, result=%d)", - proxy_handle, mcdi->proxy_result); + sfc_efx_mcdi_err(mcdi, + "MCDI proxy authorization failed (handle=%08x, result=%d)", + proxy_handle, mcdi->proxy_result); } } @@ -162,8 +178,9 @@ static void sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) { struct sfc_adapter *sa = (struct sfc_adapter *)arg; + struct sfc_efx_mcdi *mcdi = &sa->mcdi; - sfc_warn(sa, "MC %s", + sfc_efx_mcdi_warn(mcdi, "MC %s", (eme == EFX_MCDI_EXCEPTION_MC_REBOOT) ? "REBOOT" : (eme == EFX_MCDI_EXCEPTION_MC_BADASSERT) ? "BADASSERT" : "UNKNOWN"); @@ -173,7 +190,7 @@ sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) #define SFC_MCDI_LOG_BUF_SIZE 128 static size_t -sfc_efx_mcdi_do_log(const struct sfc_adapter *sa, +sfc_efx_mcdi_do_log(const struct sfc_efx_mcdi *mcdi, char *buffer, void *data, size_t data_size, size_t pfxsize, size_t position) { @@ -189,7 +206,7 @@ sfc_efx_mcdi_do_log(const struct sfc_adapter *sa, * at the end which is required by netlogdecode. */ buffer[position] = '\0'; - sfc_efx_log_mcdi(sa, "%s \\", buffer); + sfc_efx_log_mcdi(mcdi, "%s \\", buffer); /* Preserve prefix for the next log message */ position = pfxsize; } @@ -207,6 +224,7 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, void *data, size_t data_size) { struct sfc_adapter *sa = (struct sfc_adapter *)arg; + struct sfc_efx_mcdi *mcdi = &sa->mcdi; char buffer[SFC_MCDI_LOG_BUF_SIZE]; size_t pfxsize; size_t start; @@ -218,7 +236,7 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, * * To avoid wasting time, the actual level is examined in advance. */ - if (rte_log_get_level(sa->mcdi.logtype) < (int)SFC_EFX_LOG_LEVEL_MCDI) + if (rte_log_get_level(mcdi->logtype) < (int)SFC_EFX_LOG_LEVEL_MCDI) return; /* The format including prefix added by sfc_efx_log_mcdi() is the @@ -227,13 +245,13 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, pfxsize = snprintf(buffer, sizeof(buffer), "MCDI RPC %s:", type == EFX_LOG_MCDI_REQUEST ? "REQ" : type == EFX_LOG_MCDI_RESPONSE ? "RESP" : "???"); - start = sfc_efx_mcdi_do_log(sa, buffer, header, header_size, + start = sfc_efx_mcdi_do_log(mcdi, buffer, header, header_size, pfxsize, pfxsize); - start = sfc_efx_mcdi_do_log(sa, buffer, data, data_size, + start = sfc_efx_mcdi_do_log(mcdi, buffer, data, data_size, pfxsize, start); if (start != pfxsize) { buffer[start] = '\0'; - sfc_efx_log_mcdi(sa, "%s", buffer); + sfc_efx_log_mcdi(mcdi, "%s", buffer); } } @@ -248,30 +266,28 @@ sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) } static int -sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) +sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, + uint32_t logtype, const char *log_prefix) { size_t max_msg_size; efx_mcdi_transport_t *emtp; int rc; - sfc_log_init(sa, "entry"); - SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); rte_spinlock_init(&mcdi->lock); mcdi->state = SFC_EFX_MCDI_INITIALIZED; + mcdi->logtype = logtype; + mcdi->log_prefix = log_prefix; + max_msg_size = sizeof(uint32_t) + MCDI_CTL_SDU_LEN_MAX_V2; rc = sfc_dma_alloc(sa, "mcdi", 0, max_msg_size, sa->socket_id, &mcdi->mem); if (rc != 0) goto fail_dma_alloc; - mcdi->logtype = sfc_register_logtype(&sa->priv.shared->pci_addr, - SFC_LOGTYPE_MCDI_STR, - RTE_LOG_NOTICE); - emtp = &mcdi->transport; emtp->emt_context = sa; emtp->emt_dma_mem = &mcdi->mem; @@ -281,7 +297,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) emtp->emt_logger = sfc_efx_mcdi_logger; emtp->emt_ev_proxy_response = sfc_efx_mcdi_ev_proxy_response; - sfc_log_init(sa, "init MCDI"); + sfc_efx_mcdi_info(mcdi, "init MCDI"); rc = efx_mcdi_init(sa->nic, emtp); if (rc != 0) goto fail_mcdi_init; @@ -302,8 +318,6 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) { efx_mcdi_transport_t *emtp; - sfc_log_init(sa, "entry"); - emtp = &mcdi->transport; rte_spinlock_lock(&mcdi->lock); @@ -311,7 +325,7 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; - sfc_log_init(sa, "fini MCDI"); + sfc_efx_mcdi_info(mcdi, "fini MCDI"); efx_mcdi_fini(sa->nic); memset(emtp, 0, sizeof(*emtp)); @@ -323,11 +337,21 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) int sfc_mcdi_init(struct sfc_adapter *sa) { - return sfc_efx_mcdi_init(sa, &sa->mcdi); + uint32_t logtype; + + sfc_log_init(sa, "entry"); + + logtype = sfc_register_logtype(&sa->priv.shared->pci_addr, + SFC_LOGTYPE_MCDI_STR, + RTE_LOG_NOTICE); + + return sfc_efx_mcdi_init(sa, &sa->mcdi, logtype, + sa->priv.shared->log_prefix); } void sfc_mcdi_fini(struct sfc_adapter *sa) { + sfc_log_init(sa, "entry"); sfc_efx_mcdi_fini(sa, &sa->mcdi); } diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index 10f5bab666..0194825bfa 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -39,6 +39,7 @@ struct sfc_efx_mcdi { uint32_t logtype; uint32_t proxy_handle; efx_rc_t proxy_result; + const char *log_prefix; }; #ifdef __cplusplus From patchwork Thu Sep 17 06:34:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77995 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D5AAEA04B6; Thu, 17 Sep 2020 08:36:48 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 428641D578; Thu, 17 Sep 2020 08:35:38 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 47C271D543 for ; Thu, 17 Sep 2020 08:35:22 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B64D86006A for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from us4-mdac16-70.ut7.mdlocal (unknown [10.7.64.189]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B5AFC8009B for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 39AB8280053 for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id E07BC10005E for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCb1002503 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 6A8E61613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:37 +0100 Message-ID: <1600324483-23153-12-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-11.388300-8.000000-10 X-TMASE-MatchedRID: h7jIbmvFs4VTattrga832C2416nc3bQleouvej40T4gd0WOKRkwsh3Io zGa69omdrdoLblq9S5qas0rFUiAJUTtLCZHM0q2+LTHwnYOikQ3YuVu0X/rOkC4mS5ZcbgykHdp aAe/6URkgIEX6WzwOdHy8wrTvkWOE1u/Sx2voIm8zL6MySEJ0VhpxmKWTfsQI5ucVak1fUMG7im J4LbFoqRfb/g6/AVAtG+8CgnzENLtC4oGQR0QDTH9EwA0OW8QlE3EgF0+MVuCfJbh3pMo2kKPFj JEFr+olwXCBO/GKkVqOhzOa6g8KrZXab56lxlwcDwkFyw4VU4CgCbvlZFwA6dS5yfl5JZAhJjZF ot2mO34= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--11.388300-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324521-HME9egqgf2yM Subject: [dpdk-dev] [PATCH v2 11/17] net/sfc: avoid usage of NIC pointer from adapter context 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Prepare to avoid usage of the adapter context in common MCDI helpers. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 19 +++++++++++-------- drivers/net/sfc/sfc_mcdi.h | 1 + 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 5f6ad0a4aa..8f446e8bc8 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -75,6 +75,7 @@ sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) static void sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) { + struct sfc_efx_mcdi *mcdi = &sa->mcdi; efx_nic_t *enp; unsigned int delay_total; unsigned int delay_us; @@ -82,7 +83,7 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) delay_total = 0; delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MIN_US; - enp = sa->nic; + enp = mcdi->nic; do { boolean_t poll_completed; @@ -127,10 +128,10 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); - efx_mcdi_request_start(sa->nic, emrp, B_FALSE); + efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); sfc_efx_mcdi_poll(sa, B_FALSE); - if (efx_mcdi_get_proxy_handle(sa->nic, emrp, &proxy_handle) == 0) { + if (efx_mcdi_get_proxy_handle(mcdi->nic, emrp, &proxy_handle) == 0) { /* * Authorization is required for the MCDI request; * wait for an MCDI proxy response event to bring @@ -148,7 +149,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * Authorization succeeded; re-issue the original * request and poll for an ordinary MCDI response */ - efx_mcdi_request_start(sa->nic, emrp, B_FALSE); + efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); sfc_efx_mcdi_poll(sa, B_FALSE); } else { emrp->emr_rc = mcdi->proxy_result; @@ -267,7 +268,7 @@ sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) static int sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, - uint32_t logtype, const char *log_prefix) + uint32_t logtype, const char *log_prefix, efx_nic_t *nic) { size_t max_msg_size; efx_mcdi_transport_t *emtp; @@ -277,6 +278,8 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, rte_spinlock_init(&mcdi->lock); + mcdi->nic = nic; + mcdi->state = SFC_EFX_MCDI_INITIALIZED; mcdi->logtype = logtype; @@ -298,7 +301,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, emtp->emt_ev_proxy_response = sfc_efx_mcdi_ev_proxy_response; sfc_efx_mcdi_info(mcdi, "init MCDI"); - rc = efx_mcdi_init(sa->nic, emtp); + rc = efx_mcdi_init(mcdi->nic, emtp); if (rc != 0) goto fail_mcdi_init; @@ -326,7 +329,7 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; sfc_efx_mcdi_info(mcdi, "fini MCDI"); - efx_mcdi_fini(sa->nic); + efx_mcdi_fini(mcdi->nic); memset(emtp, 0, sizeof(*emtp)); rte_spinlock_unlock(&mcdi->lock); @@ -346,7 +349,7 @@ sfc_mcdi_init(struct sfc_adapter *sa) RTE_LOG_NOTICE); return sfc_efx_mcdi_init(sa, &sa->mcdi, logtype, - sa->priv.shared->log_prefix); + sa->priv.shared->log_prefix, sa->nic); } void diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index 0194825bfa..e2105364ad 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -33,6 +33,7 @@ enum sfc_efx_mcdi_state { struct sfc_efx_mcdi { rte_spinlock_t lock; + efx_nic_t *nic; efsys_mem_t mem; enum sfc_efx_mcdi_state state; efx_mcdi_transport_t transport; From patchwork Thu Sep 17 06:34:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77991 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2DD94A04B6; Thu, 17 Sep 2020 08:36:05 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0F8E31D561; Thu, 17 Sep 2020 08:35:33 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 72F361D535 for ; Thu, 17 Sep 2020 08:35:20 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.64]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 0020860070 for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from us4-mdac16-36.ut7.mdlocal (unknown [10.7.66.155]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id EF74F2009B for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 7A81E22004D for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 3613310005E for ; Thu, 17 Sep 2020 06:35:19 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZC6i002506 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 7752B1613A9 for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:38 +0100 Message-ID: <1600324483-23153-13-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-0.137400-8.000000-10 X-TMASE-MatchedRID: PPPqS2B+Ni0pk5K7iexxzC2416nc3bQleouvej40T4gd0WOKRkwsh3Io zGa69omdrdoLblq9S5o2rW8Pb51lrv8emqIlUjuV0MohG+IQ2sfy++SyyVe4t1VkJxysad/IeOb QA+fBlTa8WuXMAMHMHjpzQoT/n3/mNyl1nd9CIt0URSScn+QSXl1PyA7eE+Ph+gtHj7OwNO3ClX +2r3j3WC+of4vgxtzMb5XhMobMnGETr691g6nSWRp24KintwkLxgiCVINc87CsPGMacX2fm5LSs JKPozupjexyWJd6V8uETBIpmSWuHgAD0FqlZdom0b4rJ92tmtF/d7a9VsfzMGYfzNl+uie3Vcr2 04P67pw= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-0.137400-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324520-T25S1V1gnzBC Subject: [dpdk-dev] [PATCH v2 12/17] net/sfc: avoid panic in the case of MCDI timeout 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Implement dummy MCDI timeout handling which simply rejects further MCDI requests. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 15 +++++++++++++-- drivers/net/sfc/sfc_mcdi.h | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 8f446e8bc8..928a08c0a2 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -33,6 +33,9 @@ RTE_FMT_TAIL(__VA_ARGS__,))); \ } while (0) +#define sfc_efx_mcdi_crit(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_CRIT, __VA_ARGS__) + #define sfc_efx_mcdi_err(mcdi, ...) \ sfc_efx_mcdi_log(mcdi, RTE_LOG_ERR, __VA_ARGS__) @@ -55,7 +58,9 @@ sfc_efx_mcdi_timeout(struct sfc_adapter *sa) sfc_efx_mcdi_warn(mcdi, "MC TIMEOUT"); - sfc_panic(sa, "MCDI timeout handling is not implemented\n"); + mcdi->state = SFC_EFX_MCDI_DEAD; + sfc_efx_mcdi_crit(mcdi, + "MCDI timeout handling is not implemented - NIC is unusable"); } static inline boolean_t @@ -124,6 +129,11 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) struct sfc_efx_mcdi *mcdi = &sa->mcdi; uint32_t proxy_handle; + if (mcdi->state == SFC_EFX_MCDI_DEAD) { + emrp->emr_rc = ENOEXEC; + return; + } + rte_spinlock_lock(&mcdi->lock); SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); @@ -325,7 +335,8 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) rte_spinlock_lock(&mcdi->lock); - SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); + SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED || + mcdi->state == SFC_EFX_MCDI_DEAD); mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; sfc_efx_mcdi_info(mcdi, "fini MCDI"); diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index e2105364ad..b93b268e32 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -27,6 +27,7 @@ enum sfc_efx_mcdi_state { SFC_EFX_MCDI_INITIALIZED, SFC_EFX_MCDI_BUSY, SFC_EFX_MCDI_COMPLETED, + SFC_EFX_MCDI_DEAD, SFC_EFX_MCDI_NSTATES }; From patchwork Thu Sep 17 06:34:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77997 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 456A7A04B6; Thu, 17 Sep 2020 08:37:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 37F851D588; Thu, 17 Sep 2020 08:35:41 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 2289D1D548 for ; Thu, 17 Sep 2020 08:35:23 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 934DE60066 for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) Received: from us4-mdac16-70.ut7.mdlocal (unknown [10.7.64.189]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 8644D800A3 for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 169B328004D for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id ABAD810005E for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCK9002509 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 849241613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:39 +0100 Message-ID: <1600324483-23153-14-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-7.265700-8.000000-10 X-TMASE-MatchedRID: klLfDUJzcbG/kNGHVZrsls50DGuIExk9UXlp1FHYSPVwkdIrVt8X1dN+ VO8UR4MhfGzuoVn0Vs6PQi9XuOWoOLQHnhaRx4GgMy+jMkhCdFbYuVu0X/rOkPYENPLTaMhvlSY jj5D227bG42pGgsfFnI2Ow18fgOyZKjPlgWuJZGwk/b03uBR3ULpKkQnaF6lazdATtc2zn0DlbG AwGirFMOJRsev36MRgiiiUp2zjfThf7y77NDsmYp4CIKY/Hg3AGdQnQSTrKGPEQdG7H66TyMdRT 5TQAJnASWt0iRbOvZk/863Ch77M8LV3TVOy7ItOvVBQZC5rCkGeqD9WtJkSIw== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--7.265700-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324522-vj1Bzhi3Zt5P Subject: [dpdk-dev] [PATCH v2 13/17] net/sfc: add MCDI callbacks to allocate/free DMA memory 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Net driver should use rte_eth_dma_zone_reserve(), but it is ethdev specific API which is not available for vDPA. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 46 +++++++++++++++++++++++++++++++------- drivers/net/sfc/sfc_mcdi.h | 12 ++++++++++ 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 928a08c0a2..5077fcddd6 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -278,16 +278,22 @@ sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) static int sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, - uint32_t logtype, const char *log_prefix, efx_nic_t *nic) + uint32_t logtype, const char *log_prefix, efx_nic_t *nic, + const struct sfc_efx_mcdi_ops *ops, void *ops_cookie) { size_t max_msg_size; efx_mcdi_transport_t *emtp; int rc; + if (ops->dma_alloc == NULL || ops->dma_free == NULL) + return EINVAL; + SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); rte_spinlock_init(&mcdi->lock); + mcdi->ops = ops; + mcdi->ops_cookie = ops_cookie; mcdi->nic = nic; mcdi->state = SFC_EFX_MCDI_INITIALIZED; @@ -296,8 +302,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, mcdi->log_prefix = log_prefix; max_msg_size = sizeof(uint32_t) + MCDI_CTL_SDU_LEN_MAX_V2; - rc = sfc_dma_alloc(sa, "mcdi", 0, max_msg_size, sa->socket_id, - &mcdi->mem); + rc = ops->dma_alloc(ops_cookie, "mcdi", max_msg_size, &mcdi->mem); if (rc != 0) goto fail_dma_alloc; @@ -319,7 +324,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, fail_mcdi_init: memset(emtp, 0, sizeof(*emtp)); - sfc_dma_free(sa, &mcdi->mem); + ops->dma_free(ops_cookie, &mcdi->mem); fail_dma_alloc: mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; @@ -327,7 +332,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, } static void -sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) +sfc_efx_mcdi_fini(struct sfc_efx_mcdi *mcdi) { efx_mcdi_transport_t *emtp; @@ -345,9 +350,33 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) rte_spinlock_unlock(&mcdi->lock); - sfc_dma_free(sa, &mcdi->mem); + mcdi->ops->dma_free(mcdi->ops_cookie, &mcdi->mem); +} + +static sfc_efx_mcdi_dma_alloc_cb sfc_mcdi_dma_alloc; +static int +sfc_mcdi_dma_alloc(void *cookie, const char *name, size_t len, + efsys_mem_t *esmp) +{ + const struct sfc_adapter *sa = cookie; + + return sfc_dma_alloc(sa, name, 0, len, sa->socket_id, esmp); } +static sfc_efx_mcdi_dma_free_cb sfc_mcdi_dma_free; +static void +sfc_mcdi_dma_free(void *cookie, efsys_mem_t *esmp) +{ + const struct sfc_adapter *sa = cookie; + + sfc_dma_free(sa, esmp); +} + +static const struct sfc_efx_mcdi_ops sfc_mcdi_ops = { + .dma_alloc = sfc_mcdi_dma_alloc, + .dma_free = sfc_mcdi_dma_free, +}; + int sfc_mcdi_init(struct sfc_adapter *sa) { @@ -360,12 +389,13 @@ sfc_mcdi_init(struct sfc_adapter *sa) RTE_LOG_NOTICE); return sfc_efx_mcdi_init(sa, &sa->mcdi, logtype, - sa->priv.shared->log_prefix, sa->nic); + sa->priv.shared->log_prefix, sa->nic, + &sfc_mcdi_ops, sa); } void sfc_mcdi_fini(struct sfc_adapter *sa) { sfc_log_init(sa, "entry"); - sfc_efx_mcdi_fini(sa, &sa->mcdi); + sfc_efx_mcdi_fini(&sa->mcdi); } diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index b93b268e32..ef24a8bc67 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -32,8 +32,20 @@ enum sfc_efx_mcdi_state { SFC_EFX_MCDI_NSTATES }; +typedef int (sfc_efx_mcdi_dma_alloc_cb)(void *cookie, const char *name, + size_t len, efsys_mem_t *esmp); + +typedef void (sfc_efx_mcdi_dma_free_cb)(void *cookie, efsys_mem_t *esmp); + +struct sfc_efx_mcdi_ops { + sfc_efx_mcdi_dma_alloc_cb *dma_alloc; + sfc_efx_mcdi_dma_free_cb *dma_free; +}; + struct sfc_efx_mcdi { rte_spinlock_t lock; + const struct sfc_efx_mcdi_ops *ops; + void *ops_cookie; efx_nic_t *nic; efsys_mem_t mem; enum sfc_efx_mcdi_state state; From patchwork Thu Sep 17 06:34:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77996 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F1F41A04B6; Thu, 17 Sep 2020 08:36:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 913151D581; Thu, 17 Sep 2020 08:35:39 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 899731D51A for ; Thu, 17 Sep 2020 08:35:22 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 106EC60063 for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) Received: from us4-mdac16-66.ut7.mdlocal (unknown [10.7.64.78]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 0D57F2009A for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 94D591C0051 for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 4C21B10005E for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCaO002512 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 90FED1613A9 for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:40 +0100 Message-ID: <1600324483-23153-15-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-6.498100-8.000000-10 X-TMASE-MatchedRID: fo0Y+APoFtkkVMQcdgU2qS2416nc3bQleouvej40T4gd0WOKRkwsh3Io zGa69omdrdoLblq9S5otr+iyiysSKDzCn0Lg6DUs+CjwEqX1p7n54F/2i/DwjfYENPLTaMhv3xf zp7pithHjq8Vr7gTGbixPati2bMiYFUPnz5fE4uOeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8h+IC quNi0WJNBOAmY2z/6ZMog+FR5SfDBZVmWRTt7mqqoNmuMHFxc9ftwZ3X11IV0= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--6.498100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324522-mxI4QoDiVUCC Subject: [dpdk-dev] [PATCH v2 14/17] net/sfc: add MCDI callback to schedule restart 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" MC reboot handling is driver specific. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 15 +++++++++++++-- drivers/net/sfc/sfc_mcdi.h | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 5077fcddd6..73dbd8194b 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -195,7 +195,7 @@ sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) (eme == EFX_MCDI_EXCEPTION_MC_REBOOT) ? "REBOOT" : (eme == EFX_MCDI_EXCEPTION_MC_BADASSERT) ? "BADASSERT" : "UNKNOWN"); - sfc_schedule_restart(sa); + mcdi->ops->sched_restart(mcdi->ops_cookie); } #define SFC_MCDI_LOG_BUF_SIZE 128 @@ -285,7 +285,8 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, efx_mcdi_transport_t *emtp; int rc; - if (ops->dma_alloc == NULL || ops->dma_free == NULL) + if (ops->dma_alloc == NULL || ops->dma_free == NULL || + ops->sched_restart == NULL) return EINVAL; SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); @@ -372,9 +373,19 @@ sfc_mcdi_dma_free(void *cookie, efsys_mem_t *esmp) sfc_dma_free(sa, esmp); } +static sfc_efx_mcdi_sched_restart_cb sfc_mcdi_sched_restart; +static void +sfc_mcdi_sched_restart(void *cookie) +{ + struct sfc_adapter *sa = cookie; + + sfc_schedule_restart(sa); +} + static const struct sfc_efx_mcdi_ops sfc_mcdi_ops = { .dma_alloc = sfc_mcdi_dma_alloc, .dma_free = sfc_mcdi_dma_free, + .sched_restart = sfc_mcdi_sched_restart, }; int diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index ef24a8bc67..8f9b1991be 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -37,9 +37,12 @@ typedef int (sfc_efx_mcdi_dma_alloc_cb)(void *cookie, const char *name, typedef void (sfc_efx_mcdi_dma_free_cb)(void *cookie, efsys_mem_t *esmp); +typedef void (sfc_efx_mcdi_sched_restart_cb)(void *cookie); + struct sfc_efx_mcdi_ops { sfc_efx_mcdi_dma_alloc_cb *dma_alloc; sfc_efx_mcdi_dma_free_cb *dma_free; + sfc_efx_mcdi_sched_restart_cb *sched_restart; }; struct sfc_efx_mcdi { From patchwork Thu Sep 17 06:34:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 78003 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1B946A04B6; Thu, 17 Sep 2020 08:38:18 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6539E1D5D2; Thu, 17 Sep 2020 08:35:52 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 9D2131D519 for ; Thu, 17 Sep 2020 08:35:30 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 208346005E for ; Thu, 17 Sep 2020 06:35:30 +0000 (UTC) Received: from us4-mdac16-35.ut7.mdlocal (unknown [10.7.66.154]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 2006A2009A for ; Thu, 17 Sep 2020 06:35:30 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 2F4A01C0052 for ; Thu, 17 Sep 2020 06:35:24 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id DABA610005E for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCwX002515 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 9D8791613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:41 +0100 Message-ID: <1600324483-23153-16-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-4.214500-8.000000-10 X-TMASE-MatchedRID: eciAImCBKNA5s4xK97Sm/x23b+lJHvPAAp+UH372RZXjIxFSDv7HToWi qUsiuZWpnb6Z+uUpsD0Wsp6eJb7A26H2g9syPs88nFVnNmvv47tLXPA26IG0hNVTZaI6TuNoD2V MA3hbGfGBoPqFiWWY1ue40v4bMUWP++XBDev6r0wkOFAoKA9tAti5W7Rf+s6QnyW4d6TKNpCjxY yRBa/qJcFwgTvxipFajoczmuoPCq19MVeTat8blRfgvD9PwrWadJRZ1VPYUgjVyC1amZPFktCaL pDHUriZoBW7lRysbr+9VEqXstCDWlah0ebfizTiH70wGipsuds3I8DUyOoaeU+wJNKvG6HQ1PNk ozhRY3HUNR3AhwxI7LAXtf+fj2qblExlQIQeRG0= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--4.214500-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324524-hocAXOJuFA5t Subject: [dpdk-dev] [PATCH v2 15/17] net/sfc: add MCDI callback to poll management event 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Management event queue polling is required in the case of MCDI proxy authentication (client driver code). Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 14 ++++++++++++-- drivers/net/sfc/sfc_mcdi.h | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 73dbd8194b..fa9160f6d3 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -70,7 +70,7 @@ sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) mcdi->proxy_handle = 0; mcdi->proxy_result = ETIMEDOUT; - sfc_ev_mgmt_qpoll(sa); + mcdi->ops->mgmt_evq_poll(mcdi->ops_cookie); if (mcdi->proxy_result != ETIMEDOUT) return B_TRUE; @@ -286,7 +286,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, int rc; if (ops->dma_alloc == NULL || ops->dma_free == NULL || - ops->sched_restart == NULL) + ops->sched_restart == NULL || ops->mgmt_evq_poll == NULL) return EINVAL; SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); @@ -382,10 +382,20 @@ sfc_mcdi_sched_restart(void *cookie) sfc_schedule_restart(sa); } +static sfc_efx_mcdi_mgmt_evq_poll_cb sfc_mcdi_mgmt_evq_poll; +static void +sfc_mcdi_mgmt_evq_poll(void *cookie) +{ + struct sfc_adapter *sa = cookie; + + sfc_ev_mgmt_qpoll(sa); +} + static const struct sfc_efx_mcdi_ops sfc_mcdi_ops = { .dma_alloc = sfc_mcdi_dma_alloc, .dma_free = sfc_mcdi_dma_free, .sched_restart = sfc_mcdi_sched_restart, + .mgmt_evq_poll = sfc_mcdi_mgmt_evq_poll, }; int diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index 8f9b1991be..e3a637aeb7 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -39,10 +39,13 @@ typedef void (sfc_efx_mcdi_dma_free_cb)(void *cookie, efsys_mem_t *esmp); typedef void (sfc_efx_mcdi_sched_restart_cb)(void *cookie); +typedef void (sfc_efx_mcdi_mgmt_evq_poll_cb)(void *cookie); + struct sfc_efx_mcdi_ops { sfc_efx_mcdi_dma_alloc_cb *dma_alloc; sfc_efx_mcdi_dma_free_cb *dma_free; sfc_efx_mcdi_sched_restart_cb *sched_restart; + sfc_efx_mcdi_mgmt_evq_poll_cb *mgmt_evq_poll; }; struct sfc_efx_mcdi { From patchwork Thu Sep 17 06:34:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77999 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4BD82A04B6; Thu, 17 Sep 2020 08:37:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1E3C01D595; Thu, 17 Sep 2020 08:35:44 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id ED48E1D54A for ; Thu, 17 Sep 2020 08:35:23 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.64]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 763F860080 for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) Received: from us4-mdac16-72.ut7.mdlocal (unknown [10.7.64.191]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 6ED342009B for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id F19A7220056 for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id AC3F910006B for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCGI002518 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id AA1661613A9 for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:42 +0100 Message-ID: <1600324483-23153-17-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-12.951100-8.000000-10 X-TMASE-MatchedRID: 51SE6p2SBt+bX4K/DqV0NS2416nc3bQleouvej40T4gd0WOKRkwsh0Ac 6DyoS2rICNLuPteRDHcI+r1sul2OdnI/MxNRI7Uk/bV/VOhrmorgXnxE81iyseMjEVIO/sdOdr6 6ANUOe/73OF0UjQGruresUpDYXvDYuVKcazUH+Z1C4WIP7GtYLFBijjE0XjY+OF0RIPSotdNT/4 0CMa1mSBkeVHs6jcMzJijtN0Yu2hFeFCVeyol8eRSceev8ZtpPMHi1Ydy2WEhHZg0gWH5yUbuKY ngtsWipqNfMRWfjbpalVflGDTl0k9vJMiGALwMaiuSat/QiCL99LQinZ4QefPcjNeVeWlqY+gtH j7OwNO0f/PIv6AGqLC8xrR8gzvMWsi2j+X+GYPYDrV+OTVs4TxzJZFa6wEQp X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--12.951100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324523-bLKMpffr0xff Subject: [dpdk-dev] [PATCH v2 16/17] net/sfc: use MCDI control structure as libefx ops context 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Now MCDI helpers interface is independent from network driver and may be moved into common driver. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 47 +++++++++++++++----------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index fa9160f6d3..ff2bc14c5d 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -52,10 +52,8 @@ sfc_efx_mcdi_log(mcdi, SFC_EFX_LOG_LEVEL_MCDI, __VA_ARGS__) static void -sfc_efx_mcdi_timeout(struct sfc_adapter *sa) +sfc_efx_mcdi_timeout(struct sfc_efx_mcdi *mcdi) { - struct sfc_efx_mcdi *mcdi = &sa->mcdi; - sfc_efx_mcdi_warn(mcdi, "MC TIMEOUT"); mcdi->state = SFC_EFX_MCDI_DEAD; @@ -64,10 +62,8 @@ sfc_efx_mcdi_timeout(struct sfc_adapter *sa) } static inline boolean_t -sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) +sfc_efx_mcdi_proxy_event_available(struct sfc_efx_mcdi *mcdi) { - struct sfc_efx_mcdi *mcdi = &sa->mcdi; - mcdi->proxy_handle = 0; mcdi->proxy_result = ETIMEDOUT; mcdi->ops->mgmt_evq_poll(mcdi->ops_cookie); @@ -78,9 +74,8 @@ sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) } static void -sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) +sfc_efx_mcdi_poll(struct sfc_efx_mcdi *mcdi, boolean_t proxy) { - struct sfc_efx_mcdi *mcdi = &sa->mcdi; efx_nic_t *enp; unsigned int delay_total; unsigned int delay_us; @@ -93,8 +88,9 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) do { boolean_t poll_completed; - poll_completed = (proxy) ? sfc_efx_mcdi_proxy_event_available(sa) : - efx_mcdi_request_poll(enp); + poll_completed = (proxy) ? + sfc_efx_mcdi_proxy_event_available(mcdi) : + efx_mcdi_request_poll(enp); if (poll_completed) return; @@ -102,7 +98,7 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) if (!proxy) { aborted = efx_mcdi_request_abort(enp); SFC_ASSERT(aborted); - sfc_efx_mcdi_timeout(sa); + sfc_efx_mcdi_timeout(mcdi); } return; @@ -125,8 +121,7 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) static void sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; uint32_t proxy_handle; if (mcdi->state == SFC_EFX_MCDI_DEAD) { @@ -139,7 +134,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); - sfc_efx_mcdi_poll(sa, B_FALSE); + sfc_efx_mcdi_poll(mcdi, B_FALSE); if (efx_mcdi_get_proxy_handle(mcdi->nic, emrp, &proxy_handle) == 0) { /* @@ -148,7 +143,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * a non-zero proxy handle (should be the same as * the value obtained above) and operation status */ - sfc_efx_mcdi_poll(sa, B_TRUE); + sfc_efx_mcdi_poll(mcdi, B_TRUE); if ((mcdi->proxy_handle != 0) && (mcdi->proxy_handle != proxy_handle)) { @@ -160,7 +155,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * request and poll for an ordinary MCDI response */ efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); - sfc_efx_mcdi_poll(sa, B_FALSE); + sfc_efx_mcdi_poll(mcdi, B_FALSE); } else { emrp->emr_rc = mcdi->proxy_result; sfc_efx_mcdi_err(mcdi, @@ -175,10 +170,9 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) static void sfc_efx_mcdi_ev_cpl(void *arg) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi __rte_unused; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; - mcdi = &sa->mcdi; + RTE_SET_USED(mcdi); SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); /* MCDI is polled, completions are not expected */ @@ -188,8 +182,7 @@ sfc_efx_mcdi_ev_cpl(void *arg) static void sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; sfc_efx_mcdi_warn(mcdi, "MC %s", (eme == EFX_MCDI_EXCEPTION_MC_REBOOT) ? "REBOOT" : @@ -234,8 +227,7 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, void *header, size_t header_size, void *data, size_t data_size) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; char buffer[SFC_MCDI_LOG_BUF_SIZE]; size_t pfxsize; size_t start; @@ -269,15 +261,14 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, static void sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; mcdi->proxy_handle = handle; mcdi->proxy_result = result; } static int -sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, +sfc_efx_mcdi_init(struct sfc_efx_mcdi *mcdi, uint32_t logtype, const char *log_prefix, efx_nic_t *nic, const struct sfc_efx_mcdi_ops *ops, void *ops_cookie) { @@ -308,7 +299,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, goto fail_dma_alloc; emtp = &mcdi->transport; - emtp->emt_context = sa; + emtp->emt_context = mcdi; emtp->emt_dma_mem = &mcdi->mem; emtp->emt_execute = sfc_efx_mcdi_execute; emtp->emt_ev_cpl = sfc_efx_mcdi_ev_cpl; @@ -409,7 +400,7 @@ sfc_mcdi_init(struct sfc_adapter *sa) SFC_LOGTYPE_MCDI_STR, RTE_LOG_NOTICE); - return sfc_efx_mcdi_init(sa, &sa->mcdi, logtype, + return sfc_efx_mcdi_init(&sa->mcdi, logtype, sa->priv.shared->log_prefix, sa->nic, &sfc_mcdi_ops, sa); } From patchwork Thu Sep 17 06:34:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77998 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 13B72A04B6; Thu, 17 Sep 2020 08:37:14 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 890D81D58F; Thu, 17 Sep 2020 08:35:42 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id E21831D548 for ; Thu, 17 Sep 2020 08:35:23 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.64]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 6F3996005F for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) Received: from us4-mdac16-58.ut7.mdlocal (unknown [10.7.66.29]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 69B8C2009B for ; Thu, 17 Sep 2020 06:35:23 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 91D5522004F for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 2CFCA100077 for ; Thu, 17 Sep 2020 06:35:22 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCEl002521 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id B68461613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:43 +0100 Message-ID: <1600324483-23153-18-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-16.242400-8.000000-10 X-TMASE-MatchedRID: Ugas0VXX1YQOunQLDaXUBP3HILfxLV/9aeMaKzvXUpnRmpwtWlELp9nf JrUSEbFDMdqMWOXDAJTgLc5WU85ONq0iin8P0KjVT7O/YHJhINDVy4hHC3/gyLZk7gsuflVKNFZ RXtDJ5V5aBd09iw/dajNwW6iG8gXsPgzGD9WOF89zEyQF4j0rd9xxr0/GOHblY8r/ndGdDsVdQd iXP7u/J1K/W73AF74dQ6zwLjuCPL/L5124UhsN68ebIMlISwjbgcsVZH3dOCSMUViaYYbK3K7E8 e5xaoA/tJRCaLO6y7vbijXeuMPaG2iqvF73selK20204SCJw/rgXnxE81iyseMjEVIO/sdOdr66 ANUOe/73OF0UjQGrujIsEmLPbWXNEMMIOn8rAN6qDSBu0tUhr1gy2ozNthE2uM5RdaZDc5azH1Q OVV9gxpd5KdB2AFG1l/IkIH9I4lXJwT3yU+pMVpr5ykm9NtIc9dDTAcr9RLJD9iPiuXvzgTO+PB lvZU7Yno7iqZT/ZQZ4axceqdaWaJj8GDl2Z1qRkr0W/BDHWEXUrdux7cWNOxw0HKhKjTfpinTO+ YvPEYG6AAV7uVaGykU+cXkpeSCieTlU3gMkcoiwWQIt565822AnS5DC8C5DU5Eu1ZiHZSj7kZ4r w/lm4OJRsev36MRgA8uJWwTNo0IYB2fOueQzjxRFJJyf5BJe3QfwsVk0UbslCGssfkpInQ== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--16.242400-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324523-lPSLc0N1KMNc Subject: [dpdk-dev] [PATCH v2 17/17] net/sfc: move MCDI helpers to common driver 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" These helper will be reused by other libefx consumers, e.g. vDPA driver. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/common/sfc_efx/meson.build | 1 + .../sfc_efx/rte_common_sfc_efx_version.map | 3 + drivers/common/sfc_efx/sfc_efx_mcdi.c | 343 ++++++++++++++++++ .../sfc_efx/sfc_efx_mcdi.h} | 14 +- drivers/net/sfc/sfc.h | 3 +- drivers/net/sfc/sfc_mcdi.c | 333 +---------------- 6 files changed, 361 insertions(+), 336 deletions(-) create mode 100644 drivers/common/sfc_efx/sfc_efx_mcdi.c rename drivers/{net/sfc/sfc_mcdi.h => common/sfc_efx/sfc_efx_mcdi.h} (80%) diff --git a/drivers/common/sfc_efx/meson.build b/drivers/common/sfc_efx/meson.build index 8fab4df792..b7a0763a34 100644 --- a/drivers/common/sfc_efx/meson.build +++ b/drivers/common/sfc_efx/meson.build @@ -34,6 +34,7 @@ objs = [base_objs] sources = files( 'sfc_efx.c', + 'sfc_efx_mcdi.c', ) includes += include_directories('base') diff --git a/drivers/common/sfc_efx/rte_common_sfc_efx_version.map b/drivers/common/sfc_efx/rte_common_sfc_efx_version.map index fa297d251b..5e2a7ad919 100644 --- a/drivers/common/sfc_efx/rte_common_sfc_efx_version.map +++ b/drivers/common/sfc_efx/rte_common_sfc_efx_version.map @@ -178,5 +178,8 @@ INTERNAL { efx_txq_nbufs; efx_txq_size; + sfc_efx_mcdi_init; + sfc_efx_mcdi_fini; + local: *; }; diff --git a/drivers/common/sfc_efx/sfc_efx_mcdi.c b/drivers/common/sfc_efx/sfc_efx_mcdi.c new file mode 100644 index 0000000000..7eb565bbd6 --- /dev/null +++ b/drivers/common/sfc_efx/sfc_efx_mcdi.c @@ -0,0 +1,343 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2019-2020 Xilinx, Inc. + * Copyright(c) 2016-2019 Solarflare Communications Inc. + * + * This software was jointly developed between OKTET Labs (under contract + * for Solarflare) and Solarflare Communications, Inc. + */ + +#include + +#include "efx.h" +#include "efx_mcdi.h" +#include "efx_regs_mcdi.h" + +#include "sfc_efx_mcdi.h" +#include "sfc_efx_debug.h" + +#define SFC_EFX_MCDI_POLL_INTERVAL_MIN_US 10 /* 10us */ +#define SFC_EFX_MCDI_POLL_INTERVAL_MAX_US (US_PER_S / 10) /* 100ms */ +#define SFC_EFX_MCDI_WATCHDOG_INTERVAL_US (10 * US_PER_S) /* 10s */ + +#define sfc_efx_mcdi_log(mcdi, level, ...) \ + do { \ + const struct sfc_efx_mcdi *_mcdi = (mcdi); \ + \ + rte_log(level, _mcdi->logtype, \ + RTE_FMT("%s" RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \ + _mcdi->log_prefix, \ + RTE_FMT_TAIL(__VA_ARGS__,))); \ + } while (0) + +#define sfc_efx_mcdi_crit(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_CRIT, __VA_ARGS__) + +#define sfc_efx_mcdi_err(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_ERR, __VA_ARGS__) + +#define sfc_efx_mcdi_warn(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_WARNING, __VA_ARGS__) + +#define sfc_efx_mcdi_info(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, RTE_LOG_INFO, __VA_ARGS__) + +/** Level value used by MCDI log statements */ +#define SFC_EFX_LOG_LEVEL_MCDI RTE_LOG_INFO + +#define sfc_efx_log_mcdi(mcdi, ...) \ + sfc_efx_mcdi_log(mcdi, SFC_EFX_LOG_LEVEL_MCDI, __VA_ARGS__) + +static void +sfc_efx_mcdi_timeout(struct sfc_efx_mcdi *mcdi) +{ + sfc_efx_mcdi_warn(mcdi, "MC TIMEOUT"); + + sfc_efx_mcdi_crit(mcdi, "MCDI timeout handling is not implemented"); + sfc_efx_mcdi_crit(mcdi, "NIC is unusable"); + mcdi->state = SFC_EFX_MCDI_DEAD; +} + +static inline boolean_t +sfc_efx_mcdi_proxy_event_available(struct sfc_efx_mcdi *mcdi) +{ + mcdi->proxy_handle = 0; + mcdi->proxy_result = ETIMEDOUT; + mcdi->ops->mgmt_evq_poll(mcdi->ops_cookie); + if (mcdi->proxy_result != ETIMEDOUT) + return B_TRUE; + + return B_FALSE; +} + +static void +sfc_efx_mcdi_poll(struct sfc_efx_mcdi *mcdi, boolean_t proxy) +{ + efx_nic_t *enp; + unsigned int delay_total; + unsigned int delay_us; + boolean_t aborted __rte_unused; + + delay_total = 0; + delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MIN_US; + enp = mcdi->nic; + + do { + boolean_t poll_completed; + + poll_completed = (proxy) ? + sfc_efx_mcdi_proxy_event_available(mcdi) : + efx_mcdi_request_poll(enp); + if (poll_completed) + return; + + if (delay_total > SFC_EFX_MCDI_WATCHDOG_INTERVAL_US) { + if (!proxy) { + aborted = efx_mcdi_request_abort(enp); + SFC_EFX_ASSERT(aborted); + sfc_efx_mcdi_timeout(mcdi); + } + + return; + } + + rte_delay_us(delay_us); + + delay_total += delay_us; + + /* Exponentially back off the poll frequency */ + RTE_BUILD_BUG_ON(SFC_EFX_MCDI_POLL_INTERVAL_MAX_US > + UINT_MAX / 2); + delay_us *= 2; + if (delay_us > SFC_EFX_MCDI_POLL_INTERVAL_MAX_US) + delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MAX_US; + + } while (1); +} + +static void +sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) +{ + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; + uint32_t proxy_handle; + + if (mcdi->state == SFC_EFX_MCDI_DEAD) { + emrp->emr_rc = ENOEXEC; + return; + } + + rte_spinlock_lock(&mcdi->lock); + + SFC_EFX_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); + + efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); + sfc_efx_mcdi_poll(mcdi, B_FALSE); + + if (efx_mcdi_get_proxy_handle(mcdi->nic, emrp, &proxy_handle) == 0) { + /* + * Authorization is required for the MCDI request; + * wait for an MCDI proxy response event to bring + * a non-zero proxy handle (should be the same as + * the value obtained above) and operation status + */ + sfc_efx_mcdi_poll(mcdi, B_TRUE); + + if ((mcdi->proxy_handle != 0) && + (mcdi->proxy_handle != proxy_handle)) { + sfc_efx_mcdi_err(mcdi, "Unexpected MCDI proxy event"); + emrp->emr_rc = EFAULT; + } else if (mcdi->proxy_result == 0) { + /* + * Authorization succeeded; re-issue the original + * request and poll for an ordinary MCDI response + */ + efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); + sfc_efx_mcdi_poll(mcdi, B_FALSE); + } else { + emrp->emr_rc = mcdi->proxy_result; + sfc_efx_mcdi_err(mcdi, + "MCDI proxy authorization failed (handle=%08x, result=%d)", + proxy_handle, mcdi->proxy_result); + } + } + + rte_spinlock_unlock(&mcdi->lock); +} + +static void +sfc_efx_mcdi_ev_cpl(void *arg) +{ + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; + + RTE_SET_USED(mcdi); + SFC_EFX_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); + + /* MCDI is polled, completions are not expected */ + SFC_EFX_ASSERT(0); +} + +static void +sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) +{ + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; + + sfc_efx_mcdi_warn(mcdi, "MC %s", + (eme == EFX_MCDI_EXCEPTION_MC_REBOOT) ? "REBOOT" : + (eme == EFX_MCDI_EXCEPTION_MC_BADASSERT) ? "BADASSERT" : "UNKNOWN"); + + mcdi->ops->sched_restart(mcdi->ops_cookie); +} + +#define SFC_MCDI_LOG_BUF_SIZE 128 + +static size_t +sfc_efx_mcdi_do_log(const struct sfc_efx_mcdi *mcdi, + char *buffer, void *data, size_t data_size, + size_t pfxsize, size_t position) +{ + uint32_t *words = data; + /* Space separator plus 2 characters per byte */ + const size_t word_str_space = 1 + 2 * sizeof(*words); + size_t i; + + for (i = 0; i < data_size; i += sizeof(*words)) { + if (position + word_str_space >= + SFC_MCDI_LOG_BUF_SIZE) { + /* Flush at SFC_MCDI_LOG_BUF_SIZE with backslash + * at the end which is required by netlogdecode. + */ + buffer[position] = '\0'; + sfc_efx_log_mcdi(mcdi, "%s \\", buffer); + /* Preserve prefix for the next log message */ + position = pfxsize; + } + position += snprintf(buffer + position, + SFC_MCDI_LOG_BUF_SIZE - position, + " %08x", *words); + words++; + } + return position; +} + +static void +sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, + void *header, size_t header_size, + void *data, size_t data_size) +{ + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; + char buffer[SFC_MCDI_LOG_BUF_SIZE]; + size_t pfxsize; + size_t start; + + /* + * Unlike the other cases, MCDI logging implies more onerous work + * needed to produce a message. If the dynamic log level prevents + * the end result from being printed, the CPU time will be wasted. + * + * To avoid wasting time, the actual level is examined in advance. + */ + if (rte_log_get_level(mcdi->logtype) < (int)SFC_EFX_LOG_LEVEL_MCDI) + return; + + /* The format including prefix added by sfc_efx_log_mcdi() is the + * format consumed by the Solarflare netlogdecode tool. + */ + pfxsize = snprintf(buffer, sizeof(buffer), "MCDI RPC %s:", + type == EFX_LOG_MCDI_REQUEST ? "REQ" : + type == EFX_LOG_MCDI_RESPONSE ? "RESP" : "???"); + start = sfc_efx_mcdi_do_log(mcdi, buffer, header, header_size, + pfxsize, pfxsize); + start = sfc_efx_mcdi_do_log(mcdi, buffer, data, data_size, + pfxsize, start); + if (start != pfxsize) { + buffer[start] = '\0'; + sfc_efx_log_mcdi(mcdi, "%s", buffer); + } +} + +static void +sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) +{ + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; + + mcdi->proxy_handle = handle; + mcdi->proxy_result = result; +} + +int +sfc_efx_mcdi_init(struct sfc_efx_mcdi *mcdi, + uint32_t logtype, const char *log_prefix, efx_nic_t *nic, + const struct sfc_efx_mcdi_ops *ops, void *ops_cookie) +{ + size_t max_msg_size; + efx_mcdi_transport_t *emtp; + int rc; + + if (ops->dma_alloc == NULL || ops->dma_free == NULL || + ops->sched_restart == NULL || ops->mgmt_evq_poll == NULL) + return EINVAL; + + SFC_EFX_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); + + rte_spinlock_init(&mcdi->lock); + + mcdi->ops = ops; + mcdi->ops_cookie = ops_cookie; + mcdi->nic = nic; + + mcdi->state = SFC_EFX_MCDI_INITIALIZED; + + mcdi->logtype = logtype; + mcdi->log_prefix = log_prefix; + + max_msg_size = sizeof(uint32_t) + MCDI_CTL_SDU_LEN_MAX_V2; + rc = ops->dma_alloc(ops_cookie, "mcdi", max_msg_size, &mcdi->mem); + if (rc != 0) + goto fail_dma_alloc; + + emtp = &mcdi->transport; + emtp->emt_context = mcdi; + emtp->emt_dma_mem = &mcdi->mem; + emtp->emt_execute = sfc_efx_mcdi_execute; + emtp->emt_ev_cpl = sfc_efx_mcdi_ev_cpl; + emtp->emt_exception = sfc_efx_mcdi_exception; + emtp->emt_logger = sfc_efx_mcdi_logger; + emtp->emt_ev_proxy_response = sfc_efx_mcdi_ev_proxy_response; + + sfc_efx_mcdi_info(mcdi, "init MCDI"); + rc = efx_mcdi_init(mcdi->nic, emtp); + if (rc != 0) + goto fail_mcdi_init; + + return 0; + +fail_mcdi_init: + memset(emtp, 0, sizeof(*emtp)); + ops->dma_free(ops_cookie, &mcdi->mem); + +fail_dma_alloc: + mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; + return rc; +} + +void +sfc_efx_mcdi_fini(struct sfc_efx_mcdi *mcdi) +{ + efx_mcdi_transport_t *emtp; + + emtp = &mcdi->transport; + + rte_spinlock_lock(&mcdi->lock); + + SFC_EFX_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED || + mcdi->state == SFC_EFX_MCDI_DEAD); + mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; + + sfc_efx_mcdi_info(mcdi, "fini MCDI"); + efx_mcdi_fini(mcdi->nic); + memset(emtp, 0, sizeof(*emtp)); + + rte_spinlock_unlock(&mcdi->lock); + + mcdi->ops->dma_free(mcdi->ops_cookie, &mcdi->mem); +} diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/common/sfc_efx/sfc_efx_mcdi.h similarity index 80% rename from drivers/net/sfc/sfc_mcdi.h rename to drivers/common/sfc_efx/sfc_efx_mcdi.h index e3a637aeb7..d75d9a7cfd 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/common/sfc_efx/sfc_efx_mcdi.h @@ -7,8 +7,8 @@ * for Solarflare) and Solarflare Communications, Inc. */ -#ifndef _SFC_MCDI_H -#define _SFC_MCDI_H +#ifndef _SFC_EFX_MCDI_H +#define _SFC_EFX_MCDI_H #include @@ -62,8 +62,16 @@ struct sfc_efx_mcdi { const char *log_prefix; }; +__rte_internal +int sfc_efx_mcdi_init(struct sfc_efx_mcdi *mcdi, + uint32_t logtype, const char *log_prefix, + efx_nic_t *nic, + const struct sfc_efx_mcdi_ops *ops, void *ops_cookie); +__rte_internal +void sfc_efx_mcdi_fini(struct sfc_efx_mcdi *mcdi); + #ifdef __cplusplus } #endif -#endif /* _SFC_MCDI_H */ +#endif /* _SFC_EFX_MCDI_H */ diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index b20fecb4f8..fa7c79b80b 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -21,10 +21,11 @@ #include "efx.h" +#include "sfc_efx_mcdi.h" + #include "sfc_debug.h" #include "sfc_log.h" #include "sfc_filter.h" -#include "sfc_mcdi.h" #ifdef __cplusplus extern "C" { diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index ff2bc14c5d..644dd9c980 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -7,344 +7,13 @@ * for Solarflare) and Solarflare Communications, Inc. */ -#include +#include "sfc_efx_mcdi.h" -#include "efx.h" -#include "efx_mcdi.h" -#include "efx_regs_mcdi.h" - -#include "sfc_mcdi.h" #include "sfc.h" #include "sfc_debug.h" #include "sfc_log.h" #include "sfc_ev.h" -#define SFC_EFX_MCDI_POLL_INTERVAL_MIN_US 10 /* 10us */ -#define SFC_EFX_MCDI_POLL_INTERVAL_MAX_US (US_PER_S / 10) /* 100ms */ -#define SFC_EFX_MCDI_WATCHDOG_INTERVAL_US (10 * US_PER_S) /* 10s */ - -#define sfc_efx_mcdi_log(mcdi, level, ...) \ - do { \ - const struct sfc_efx_mcdi *_mcdi = (mcdi); \ - \ - rte_log(level, _mcdi->logtype, \ - RTE_FMT("%s" RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \ - _mcdi->log_prefix, \ - RTE_FMT_TAIL(__VA_ARGS__,))); \ - } while (0) - -#define sfc_efx_mcdi_crit(mcdi, ...) \ - sfc_efx_mcdi_log(mcdi, RTE_LOG_CRIT, __VA_ARGS__) - -#define sfc_efx_mcdi_err(mcdi, ...) \ - sfc_efx_mcdi_log(mcdi, RTE_LOG_ERR, __VA_ARGS__) - -#define sfc_efx_mcdi_warn(mcdi, ...) \ - sfc_efx_mcdi_log(mcdi, RTE_LOG_WARNING, __VA_ARGS__) - -#define sfc_efx_mcdi_info(mcdi, ...) \ - sfc_efx_mcdi_log(mcdi, RTE_LOG_INFO, __VA_ARGS__) - -/** Level value used by MCDI log statements */ -#define SFC_EFX_LOG_LEVEL_MCDI RTE_LOG_INFO - -#define sfc_efx_log_mcdi(mcdi, ...) \ - sfc_efx_mcdi_log(mcdi, SFC_EFX_LOG_LEVEL_MCDI, __VA_ARGS__) - -static void -sfc_efx_mcdi_timeout(struct sfc_efx_mcdi *mcdi) -{ - sfc_efx_mcdi_warn(mcdi, "MC TIMEOUT"); - - mcdi->state = SFC_EFX_MCDI_DEAD; - sfc_efx_mcdi_crit(mcdi, - "MCDI timeout handling is not implemented - NIC is unusable"); -} - -static inline boolean_t -sfc_efx_mcdi_proxy_event_available(struct sfc_efx_mcdi *mcdi) -{ - mcdi->proxy_handle = 0; - mcdi->proxy_result = ETIMEDOUT; - mcdi->ops->mgmt_evq_poll(mcdi->ops_cookie); - if (mcdi->proxy_result != ETIMEDOUT) - return B_TRUE; - - return B_FALSE; -} - -static void -sfc_efx_mcdi_poll(struct sfc_efx_mcdi *mcdi, boolean_t proxy) -{ - efx_nic_t *enp; - unsigned int delay_total; - unsigned int delay_us; - boolean_t aborted __rte_unused; - - delay_total = 0; - delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MIN_US; - enp = mcdi->nic; - - do { - boolean_t poll_completed; - - poll_completed = (proxy) ? - sfc_efx_mcdi_proxy_event_available(mcdi) : - efx_mcdi_request_poll(enp); - if (poll_completed) - return; - - if (delay_total > SFC_EFX_MCDI_WATCHDOG_INTERVAL_US) { - if (!proxy) { - aborted = efx_mcdi_request_abort(enp); - SFC_ASSERT(aborted); - sfc_efx_mcdi_timeout(mcdi); - } - - return; - } - - rte_delay_us(delay_us); - - delay_total += delay_us; - - /* Exponentially back off the poll frequency */ - RTE_BUILD_BUG_ON(SFC_EFX_MCDI_POLL_INTERVAL_MAX_US > - UINT_MAX / 2); - delay_us *= 2; - if (delay_us > SFC_EFX_MCDI_POLL_INTERVAL_MAX_US) - delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MAX_US; - - } while (1); -} - -static void -sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) -{ - struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; - uint32_t proxy_handle; - - if (mcdi->state == SFC_EFX_MCDI_DEAD) { - emrp->emr_rc = ENOEXEC; - return; - } - - rte_spinlock_lock(&mcdi->lock); - - SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); - - efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); - sfc_efx_mcdi_poll(mcdi, B_FALSE); - - if (efx_mcdi_get_proxy_handle(mcdi->nic, emrp, &proxy_handle) == 0) { - /* - * Authorization is required for the MCDI request; - * wait for an MCDI proxy response event to bring - * a non-zero proxy handle (should be the same as - * the value obtained above) and operation status - */ - sfc_efx_mcdi_poll(mcdi, B_TRUE); - - if ((mcdi->proxy_handle != 0) && - (mcdi->proxy_handle != proxy_handle)) { - sfc_efx_mcdi_err(mcdi, "Unexpected MCDI proxy event"); - emrp->emr_rc = EFAULT; - } else if (mcdi->proxy_result == 0) { - /* - * Authorization succeeded; re-issue the original - * request and poll for an ordinary MCDI response - */ - efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); - sfc_efx_mcdi_poll(mcdi, B_FALSE); - } else { - emrp->emr_rc = mcdi->proxy_result; - sfc_efx_mcdi_err(mcdi, - "MCDI proxy authorization failed (handle=%08x, result=%d)", - proxy_handle, mcdi->proxy_result); - } - } - - rte_spinlock_unlock(&mcdi->lock); -} - -static void -sfc_efx_mcdi_ev_cpl(void *arg) -{ - struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; - - RTE_SET_USED(mcdi); - SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); - - /* MCDI is polled, completions are not expected */ - SFC_ASSERT(0); -} - -static void -sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) -{ - struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; - - sfc_efx_mcdi_warn(mcdi, "MC %s", - (eme == EFX_MCDI_EXCEPTION_MC_REBOOT) ? "REBOOT" : - (eme == EFX_MCDI_EXCEPTION_MC_BADASSERT) ? "BADASSERT" : "UNKNOWN"); - - mcdi->ops->sched_restart(mcdi->ops_cookie); -} - -#define SFC_MCDI_LOG_BUF_SIZE 128 - -static size_t -sfc_efx_mcdi_do_log(const struct sfc_efx_mcdi *mcdi, - char *buffer, void *data, size_t data_size, - size_t pfxsize, size_t position) -{ - uint32_t *words = data; - /* Space separator plus 2 characters per byte */ - const size_t word_str_space = 1 + 2 * sizeof(*words); - size_t i; - - for (i = 0; i < data_size; i += sizeof(*words)) { - if (position + word_str_space >= - SFC_MCDI_LOG_BUF_SIZE) { - /* Flush at SFC_MCDI_LOG_BUF_SIZE with backslash - * at the end which is required by netlogdecode. - */ - buffer[position] = '\0'; - sfc_efx_log_mcdi(mcdi, "%s \\", buffer); - /* Preserve prefix for the next log message */ - position = pfxsize; - } - position += snprintf(buffer + position, - SFC_MCDI_LOG_BUF_SIZE - position, - " %08x", *words); - words++; - } - return position; -} - -static void -sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, - void *header, size_t header_size, - void *data, size_t data_size) -{ - struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; - char buffer[SFC_MCDI_LOG_BUF_SIZE]; - size_t pfxsize; - size_t start; - - /* - * Unlike the other cases, MCDI logging implies more onerous work - * needed to produce a message. If the dynamic log level prevents - * the end result from being printed, the CPU time will be wasted. - * - * To avoid wasting time, the actual level is examined in advance. - */ - if (rte_log_get_level(mcdi->logtype) < (int)SFC_EFX_LOG_LEVEL_MCDI) - return; - - /* The format including prefix added by sfc_efx_log_mcdi() is the - * format consumed by the Solarflare netlogdecode tool. - */ - pfxsize = snprintf(buffer, sizeof(buffer), "MCDI RPC %s:", - type == EFX_LOG_MCDI_REQUEST ? "REQ" : - type == EFX_LOG_MCDI_RESPONSE ? "RESP" : "???"); - start = sfc_efx_mcdi_do_log(mcdi, buffer, header, header_size, - pfxsize, pfxsize); - start = sfc_efx_mcdi_do_log(mcdi, buffer, data, data_size, - pfxsize, start); - if (start != pfxsize) { - buffer[start] = '\0'; - sfc_efx_log_mcdi(mcdi, "%s", buffer); - } -} - -static void -sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) -{ - struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; - - mcdi->proxy_handle = handle; - mcdi->proxy_result = result; -} - -static int -sfc_efx_mcdi_init(struct sfc_efx_mcdi *mcdi, - uint32_t logtype, const char *log_prefix, efx_nic_t *nic, - const struct sfc_efx_mcdi_ops *ops, void *ops_cookie) -{ - size_t max_msg_size; - efx_mcdi_transport_t *emtp; - int rc; - - if (ops->dma_alloc == NULL || ops->dma_free == NULL || - ops->sched_restart == NULL || ops->mgmt_evq_poll == NULL) - return EINVAL; - - SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_UNINITIALIZED); - - rte_spinlock_init(&mcdi->lock); - - mcdi->ops = ops; - mcdi->ops_cookie = ops_cookie; - mcdi->nic = nic; - - mcdi->state = SFC_EFX_MCDI_INITIALIZED; - - mcdi->logtype = logtype; - mcdi->log_prefix = log_prefix; - - max_msg_size = sizeof(uint32_t) + MCDI_CTL_SDU_LEN_MAX_V2; - rc = ops->dma_alloc(ops_cookie, "mcdi", max_msg_size, &mcdi->mem); - if (rc != 0) - goto fail_dma_alloc; - - emtp = &mcdi->transport; - emtp->emt_context = mcdi; - emtp->emt_dma_mem = &mcdi->mem; - emtp->emt_execute = sfc_efx_mcdi_execute; - emtp->emt_ev_cpl = sfc_efx_mcdi_ev_cpl; - emtp->emt_exception = sfc_efx_mcdi_exception; - emtp->emt_logger = sfc_efx_mcdi_logger; - emtp->emt_ev_proxy_response = sfc_efx_mcdi_ev_proxy_response; - - sfc_efx_mcdi_info(mcdi, "init MCDI"); - rc = efx_mcdi_init(mcdi->nic, emtp); - if (rc != 0) - goto fail_mcdi_init; - - return 0; - -fail_mcdi_init: - memset(emtp, 0, sizeof(*emtp)); - ops->dma_free(ops_cookie, &mcdi->mem); - -fail_dma_alloc: - mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; - return rc; -} - -static void -sfc_efx_mcdi_fini(struct sfc_efx_mcdi *mcdi) -{ - efx_mcdi_transport_t *emtp; - - emtp = &mcdi->transport; - - rte_spinlock_lock(&mcdi->lock); - - SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED || - mcdi->state == SFC_EFX_MCDI_DEAD); - mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; - - sfc_efx_mcdi_info(mcdi, "fini MCDI"); - efx_mcdi_fini(mcdi->nic); - memset(emtp, 0, sizeof(*emtp)); - - rte_spinlock_unlock(&mcdi->lock); - - mcdi->ops->dma_free(mcdi->ops_cookie, &mcdi->mem); -} - static sfc_efx_mcdi_dma_alloc_cb sfc_mcdi_dma_alloc; static int sfc_mcdi_dma_alloc(void *cookie, const char *name, size_t len,