From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [67.231.154.164]) by dpdk.org (Postfix) with ESMTP id E263F1B57F for ; Thu, 7 Feb 2019 17:30:38 +0100 (CET) X-Virus-Scanned: Proofpoint Essentials engine Received: from webmail.solarflare.com (webmail.solarflare.com [12.187.104.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us3.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTPS id 7E87EB80075 for ; Thu, 7 Feb 2019 16:30:37 +0000 (UTC) Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 7 Feb 2019 08:30:32 -0800 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4 via Frontend Transport; Thu, 7 Feb 2019 08:30:31 -0800 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 x17GUUnj015384 for ; Thu, 7 Feb 2019 16:30:30 GMT Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id BB2791613EB for ; Thu, 7 Feb 2019 16:30:30 +0000 (GMT) From: Andrew Rybchenko To: Date: Thu, 7 Feb 2019 16:29:38 +0000 Message-ID: <1549556983-10896-34-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1549556983-10896-1-git-send-email-arybchenko@solarflare.com> References: <1549556983-10896-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.5.1010-24412.006 X-TM-AS-Result: No-0.140100-4.000000-10 X-TMASE-MatchedRID: i/wEjRUPNdw2jeY+Udg/IgwfhKwa9GwDQ95F2IiVUkT1gF7PCEF9bq+2 huD95gk5u0Xb2K9EUeEChJtz8OKIP294Ipa1otxo7spMO3HwKCAP4vBWNr0zgd9zZd3pUn7K4uC BSJiRjIf5jzE0lPZnstpI+ulG5dSKDHHjZ4qctumiAZ3zAhQYglXXZO0BkB2ngceRYfiTlXajxY yRBa/qJcFwgTvxipFajoczmuoPCq2v1cc1cDoUL5JqKcEd9Wglyllwc4azrmtNOrSw47Ef62j0o 4Hb+PtcNTIe0sQVttaosxCAi2CExxBN88sXyKPWkuuBEWTahJk3I8DUyOoaeU+wJNKvG6HQ1PNk ozhRY3HUNR3AhwxI7HVCg90b4a/8 X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--0.140100-4.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.5.1010-24412.006 X-MDID: 1549557038-XBf7zYIu6gQV Subject: [dpdk-dev] [PATCH 33/38] net/sfc/base: pass Rx buffer size to RxQ init if supported X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Feb 2019 16:30:39 -0000 Riverhead requires Rx buffer size to be specified in INIT_RXQ. If the parameter is not supported (e.g. on EF10 family adapters), zero must be used on INIT_RXQ. Signed-off-by: Andrew Rybchenko --- drivers/net/sfc/base/ef10_nic.c | 10 ++++++++++ drivers/net/sfc/base/ef10_rx.c | 15 ++++++++++----- drivers/net/sfc/base/efx.h | 1 + 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/drivers/net/sfc/base/ef10_nic.c b/drivers/net/sfc/base/ef10_nic.c index 39ca53f03..6ba2fe3b9 100644 --- a/drivers/net/sfc/base/ef10_nic.c +++ b/drivers/net/sfc/base/ef10_nic.c @@ -1205,6 +1205,16 @@ ef10_get_datapath_caps( else encp->enc_no_cont_ev_mode_supported = B_FALSE; + /* + * Check if buffer size may and must be specified on INIT_RXQ. + * It may be always specified to efx_rx_qcreate(), but will be + * just kept libefx internal if MCDI does not support it. + */ + if (CAP_FLAGS2(req, INIT_RXQ_WITH_BUFFER_SIZE)) + encp->enc_init_rxq_with_buffer_size = B_TRUE; + else + encp->enc_init_rxq_with_buffer_size = B_FALSE; + /* * Check if firmware-verified NVRAM updates must be used. * diff --git a/drivers/net/sfc/base/ef10_rx.c b/drivers/net/sfc/base/ef10_rx.c index 5cb7da99b..c060d2e4d 100644 --- a/drivers/net/sfc/base/ef10_rx.c +++ b/drivers/net/sfc/base/ef10_rx.c @@ -21,6 +21,7 @@ efx_mcdi_init_rxq( __in efsys_mem_t *esmp, __in boolean_t disable_scatter, __in boolean_t want_inner_classes, + __in uint32_t buf_size, __in uint32_t ps_bufsize, __in uint32_t es_bufs_per_desc, __in uint32_t es_max_dma_len, @@ -29,8 +30,8 @@ efx_mcdi_init_rxq( { efx_nic_cfg_t *encp = &(enp->en_nic_cfg); efx_mcdi_req_t req; - EFX_MCDI_DECLARE_BUF(payload, MC_CMD_INIT_RXQ_V3_IN_LEN, - MC_CMD_INIT_RXQ_V3_OUT_LEN); + EFX_MCDI_DECLARE_BUF(payload, MC_CMD_INIT_RXQ_V4_IN_LEN, + MC_CMD_INIT_RXQ_V4_OUT_LEN); int npages = efx_rxq_nbufs(enp, ndescs); int i; efx_qword_t *dma_addr; @@ -84,9 +85,9 @@ efx_mcdi_init_rxq( req.emr_cmd = MC_CMD_INIT_RXQ; req.emr_in_buf = payload; - req.emr_in_length = MC_CMD_INIT_RXQ_V3_IN_LEN; + req.emr_in_length = MC_CMD_INIT_RXQ_V4_IN_LEN; req.emr_out_buf = payload; - req.emr_out_length = MC_CMD_INIT_RXQ_V3_OUT_LEN; + req.emr_out_length = MC_CMD_INIT_RXQ_V4_OUT_LEN; MCDI_IN_SET_DWORD(req, INIT_RXQ_EXT_IN_SIZE, ndescs); MCDI_IN_SET_DWORD(req, INIT_RXQ_EXT_IN_TARGET_EVQ, eep->ee_index); @@ -120,6 +121,10 @@ efx_mcdi_init_rxq( hol_block_timeout); } + if (encp->enc_init_rxq_with_buffer_size) + MCDI_IN_SET_DWORD(req, INIT_RXQ_V4_IN_BUFFER_SIZE_BYTES, + buf_size); + dma_addr = MCDI_IN2(req, efx_qword_t, INIT_RXQ_IN_DMA_ADDR); addr = EFSYS_MEM_ADDR(esmp); @@ -1140,7 +1145,7 @@ ef10_rx_qcreate( want_inner_classes = B_FALSE; if ((rc = efx_mcdi_init_rxq(enp, ndescs, eep, label, index, - esmp, disable_scatter, want_inner_classes, + esmp, disable_scatter, want_inner_classes, erp->er_buf_size, ps_buf_size, es_bufs_per_desc, es_max_dma_len, es_buf_stride, hol_block_timeout)) != 0) goto fail12; diff --git a/drivers/net/sfc/base/efx.h b/drivers/net/sfc/base/efx.h index 35f896750..2cd2c36c3 100644 --- a/drivers/net/sfc/base/efx.h +++ b/drivers/net/sfc/base/efx.h @@ -1371,6 +1371,7 @@ typedef struct efx_nic_cfg_s { boolean_t enc_enhanced_set_mac_supported; boolean_t enc_init_evq_v2_supported; boolean_t enc_no_cont_ev_mode_supported; + boolean_t enc_init_rxq_with_buffer_size; boolean_t enc_rx_packed_stream_supported; boolean_t enc_rx_var_packed_stream_supported; boolean_t enc_rx_es_super_buffer_supported; -- 2.17.1