From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Rybchenko Subject: [PATCH 17/23] net/sfc: support flow marks in equal stride super-buffer Rx Date: Thu, 19 Apr 2018 12:37:00 +0100 Message-ID: <1524137826-5675-18-git-send-email-arybchenko@solarflare.com> References: <1524137826-5675-1-git-send-email-arybchenko@solarflare.com> Mime-Version: 1.0 Content-Type: text/plain To: 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 C866DAAD4 for ; Thu, 19 Apr 2018 13:37:30 +0200 (CEST) Received: from webmail.solarflare.com (webmail.solarflare.com [12.187.104.26]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1-us4.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTPS id AE08FB40068 for ; Thu, 19 Apr 2018 11:37:29 +0000 (UTC) Received: from uklogin.uk.solarflarecom.com (uklogin.uk.solarflarecom.com [10.17.10.10]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id w3JBb97K000725 for ; Thu, 19 Apr 2018 12:37:09 +0100 Received: from uklogin.uk.solarflarecom.com (localhost.localdomain [127.0.0.1]) by uklogin.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id w3JBb9nE005732 for ; Thu, 19 Apr 2018 12:37:09 +0100 In-Reply-To: <1524137826-5675-1-git-send-email-arybchenko@solarflare.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Equal stride super-buffer Rx mode allows to mark packets in HW using filters. Process the data on datapath and advertise corresponding features to allow flow API support to implement it. Signed-off-by: Andrew Rybchenko --- drivers/net/sfc/sfc_dp_rx.h | 2 ++ drivers/net/sfc/sfc_ef10_essb_rx.c | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/net/sfc/sfc_dp_rx.h b/drivers/net/sfc/sfc_dp_rx.h index cb745e6..83faad1 100644 --- a/drivers/net/sfc/sfc_dp_rx.h +++ b/drivers/net/sfc/sfc_dp_rx.h @@ -193,6 +193,8 @@ struct sfc_dp_rx { #define SFC_DP_RX_FEAT_SCATTER 0x1 #define SFC_DP_RX_FEAT_MULTI_PROCESS 0x2 #define SFC_DP_RX_FEAT_TUNNELS 0x4 +#define SFC_DP_RX_FEAT_FLOW_FLAG 0x8 +#define SFC_DP_RX_FEAT_FLOW_MARK 0x10 sfc_dp_rx_get_dev_info_t *get_dev_info; sfc_dp_rx_pool_ops_supported_t *pool_ops_supported; sfc_dp_rx_qsize_up_rings_t *qsize_up_rings; diff --git a/drivers/net/sfc/sfc_ef10_essb_rx.c b/drivers/net/sfc/sfc_ef10_essb_rx.c index 8dd4396..f051f3c 100644 --- a/drivers/net/sfc/sfc_ef10_essb_rx.c +++ b/drivers/net/sfc/sfc_ef10_essb_rx.c @@ -316,12 +316,21 @@ sfc_ef10_essb_rx_get_pending(struct sfc_ef10_essb_rxq *rxq, m->ol_flags |= (PKT_RX_RSS_HASH * !!EFX_TEST_QWORD_BIT(*qwordp, - ES_EZ_ESSB_RX_PREFIX_HASH_VALID_LBN)); + ES_EZ_ESSB_RX_PREFIX_HASH_VALID_LBN)) | + (PKT_RX_FDIR_ID * + !!EFX_TEST_QWORD_BIT(*qwordp, + ES_EZ_ESSB_RX_PREFIX_MARK_VALID_LBN)) | + (PKT_RX_FDIR * + !!EFX_TEST_QWORD_BIT(*qwordp, + ES_EZ_ESSB_RX_PREFIX_MATCH_FLAG_LBN)); /* EFX_QWORD_FIELD converts little-endian to CPU */ m->hash.rss = EFX_QWORD_FIELD(*qwordp, ES_EZ_ESSB_RX_PREFIX_HASH); + m->hash.fdir.hi = + EFX_QWORD_FIELD(*qwordp, + ES_EZ_ESSB_RX_PREFIX_MARK); m = sfc_ef10_essb_next_mbuf(rxq, m); } while (todo_bufs-- > 0); @@ -640,7 +649,8 @@ struct sfc_dp_rx sfc_ef10_essb_rx = { .hw_fw_caps = SFC_DP_HW_FW_CAP_EF10 | SFC_DP_HW_FW_CAP_RX_ES_SUPER_BUFFER, }, - .features = 0, + .features = SFC_DP_RX_FEAT_FLOW_FLAG | + SFC_DP_RX_FEAT_FLOW_MARK, .get_dev_info = sfc_ef10_essb_rx_get_dev_info, .pool_ops_supported = sfc_ef10_essb_rx_pool_ops_supported, .qsize_up_rings = sfc_ef10_essb_rx_qsize_up_rings, -- 2.7.4