From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140044.outbound.protection.outlook.com [40.107.14.44]) by dpdk.org (Postfix) with ESMTP id 9987A1BB52 for ; Fri, 11 Jan 2019 12:58:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dO7nx71akAxyn2bzrLrctMYV0YIqmzSGytZ5WiAisE8=; b=jXcWBWJnRd0KgkJrNinvSK9MRfc5pr8xmE5NY+2Smo794EONBTth2nrAxT+QqqvOuAYZDxVSGpQmHpM8mMUkleur2nW4DGhgGBzMxvd5TNRxqIvKPSTpH6dd5Hg0IhEDucGb3zVrLyFAD0m0LImrlrItxHFjaUYaR680JtdetyM= Received: from VI1PR04MB4688.eurprd04.prod.outlook.com (20.177.56.80) by VI1PR04MB2109.eurprd04.prod.outlook.com (10.166.43.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.14; Fri, 11 Jan 2019 11:58:47 +0000 Received: from VI1PR04MB4688.eurprd04.prod.outlook.com ([fe80::b1eb:7e7e:7b90:7b4]) by VI1PR04MB4688.eurprd04.prod.outlook.com ([fe80::b1eb:7e7e:7b90:7b4%4]) with mapi id 15.20.1516.016; Fri, 11 Jan 2019 11:58:47 +0000 From: Shreyansh Jain To: "dev@dpdk.org" CC: "ferruh.yigit@intel.com" , Shreyansh Jain Thread-Topic: [PATCH v2 17/20] mempool/dpaa2: support saving context of buffer pool Thread-Index: AQHUqaUCol6eH5Vv50u/I7y/G4pg4g== Date: Fri, 11 Jan 2019 11:58:47 +0000 Message-ID: <20190111115712.6482-18-shreyansh.jain@nxp.com> References: <20181227062233.30781-1-hemant.agrawal@nxp.com> <20190111115712.6482-1-shreyansh.jain@nxp.com> In-Reply-To: <20190111115712.6482-1-shreyansh.jain@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [14.143.254.130] x-mailer: git-send-email 2.17.1 x-clientproxiedby: TY2PR01CA0030.jpnprd01.prod.outlook.com (2603:1096:404:ce::18) To VI1PR04MB4688.eurprd04.prod.outlook.com (2603:10a6:803:71::16) authentication-results: spf=none (sender IP is ) smtp.mailfrom=shreyansh.jain@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB2109; 6:XH5Cj1ciCWdzVMa2fzApdd9i66MBKm0NotBi8vdNWneNkC/8JYz/6AV8CDiG0SJc4E0k6BCDla8Vll7hRgrt2RjvdLTzvOFibHy+swbNFmFDYboHasniBCbj9Hl5IKrmjzYRlgCFrO1wmNkoE4e1hTKz8C/b9ZdQgc0x0GaxdT26DACjouW3PuuXKOCBmhj6ZMpymg3JoJjWyZuo52RzQ4raBEooM6MBAvYTQYdCifmPB8hbNGrQbnVMgbsNMkpS+sNNrQ20LBt933jxDCiHVhbtu3S07J70QqiK0Cd1UD4pTDFKip6OGedSdHpjvEiHO9gZ8eDsd6/Gf1MPVCR52XzUksYqvG4DF4Xp8pps3u9hyeuo5TzJQqjKlnQZtzechAn5hT8cs7I931kQjZYP8jLGpmKJv0pB3eEQEJUtLxj9bpJzCV3Mcl2t4OG+nDrwc8vMCbfc4Pg91LaBjmMnQw==; 5:55XqTfekzEBXWmgJ9Q6imVjjFI08D2yUDLHKyGdrQrZIKxCD2iwg+/QoiszgvdvSv3llL0Pdb/wmrIBZHk0knF4ckj0ksXBANMFRUaEXrv2XfOGIVFdGlzgVo9+TC9De9CA5mB2nQ3GuBRqoeZJwiMlDzU5vqMEZta9Lq5LRDMM5NrfD+g5MsoyG7shPFwjNqF8Y9PDQH2qnq8ZVXO1x/g==; 7:clr4e6F+CuSE9H/30y8jkVg9bNEb4IAG7OVLrawWTw8K2pg5FnSL5YkUzk0pn7FK9ULz7uul8drAYUqXDbFAyTvz7C8/yVH3/4l/U2jBQKSJNu//5Emkvui0PIJ/dkmBao51Cwdwynof94xMMtDTug== x-ms-office365-filtering-correlation-id: 61c7e7ad-9fd8-4a6e-117c-08d677bc2468 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB2109; x-ms-traffictypediagnostic: VI1PR04MB2109: x-microsoft-antispam-prvs: x-forefront-prvs: 09144DB0F7 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(136003)(396003)(376002)(39860400002)(189003)(199004)(99286004)(2501003)(78486014)(6512007)(26005)(316002)(68736007)(186003)(25786009)(36756003)(478600001)(305945005)(14454004)(71200400001)(6916009)(6486002)(71190400001)(2351001)(6436002)(81156014)(81166006)(1730700003)(52116002)(53936002)(76176011)(1076003)(14444005)(256004)(105586002)(8936002)(476003)(54906003)(5640700003)(7736002)(2616005)(106356001)(50226002)(3846002)(6116002)(55236004)(386003)(2906002)(6506007)(11346002)(102836004)(86362001)(446003)(486006)(97736004)(44832011)(5660300001)(8676002)(4326008)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB2109; H:VI1PR04MB4688.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: R1izIwQ4BtoEx1FU6xdwRetisrhA3Xz8dSol7GAtQ4DbGbFvwYtvU5XlVCeRzprxHEnarPs3cYZRsoE8AeKRAkezFodMRaQ28sf8We8HlJZEQDBlSLwgzu8cyCHuirpshWmBmuYgtPMG14Sbh6tyt/1SC3db/NMZIeULR5AeEzZdrcvV+ctw1LsP9bAPvvHTYmN747j1cTPISTFqn6YgH/SIt9IgGwAuogn9qt96QqHn92XxrN6ptOWytmbTmw21BrmHx26HxlIE4G74TdMFk1XtTR6nENygbyWQkVcn9J6T1w1+GEqb6yW3bSRuHrHYRxjCTjvK8McTJLeBSfiCiTtR3ogrzOfQ1hYCc6jdfnD/gaTJP3rkeZxhl4gYrgpdFJmxYWdaIDVtsl03hrJ7UcQ1ehLoaY/pQVV+hOo7sJQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61c7e7ad-9fd8-4a6e-117c-08d677bc2468 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jan 2019 11:58:44.4844 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB2109 Subject: [dpdk-dev] [PATCH v2 17/20] mempool/dpaa2: support saving context of buffer pool 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: Fri, 11 Jan 2019 11:58:48 -0000 Initial design was to have the buffer pool per process where a global static array stores the bpids. But, in case of secondary processes, this would not allow the I/O threads to translate the bpid in Rx'd packets. This patch moves the array to a global area (rte_malloc) and in case of Rx thread not containing a valid reference to the array, reference is build using the handle avaialble in the dpaa2_queue. Signed-off-by: Shreyansh Jain --- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 1 + drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 12 +++++++++++- drivers/mempool/dpaa2/dpaa2_hw_mempool.h | 2 +- drivers/net/dpaa2/dpaa2_ethdev.c | 1 + drivers/net/dpaa2/dpaa2_rxtx.c | 5 +++++ 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/po= rtal/dpaa2_hw_pvt.h index efbeebef9..20c606dbe 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -141,6 +141,7 @@ struct dpaa2_queue { }; struct rte_event ev; dpaa2_queue_cb_dqrr_t *cb; + struct dpaa2_bp_info *bp_array; }; =20 struct swp_active_dqs { diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpa= a2/dpaa2_hw_mempool.c index 790cded80..335eae40e 100644 --- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c +++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c @@ -32,7 +32,7 @@ =20 #include =20 -struct dpaa2_bp_info rte_dpaa2_bpid_info[MAX_BPID]; +struct dpaa2_bp_info *rte_dpaa2_bpid_info; static struct dpaa2_bp_list *h_bp_list; =20 /* Dynamic logging identified for mempool */ @@ -50,6 +50,16 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp) =20 avail_dpbp =3D dpaa2_alloc_dpbp_dev(); =20 + if (rte_dpaa2_bpid_info =3D=3D NULL) { + rte_dpaa2_bpid_info =3D (struct dpaa2_bp_info *)rte_malloc(NULL, + sizeof(struct dpaa2_bp_info) * MAX_BPID, + RTE_CACHE_LINE_SIZE); + if (rte_dpaa2_bpid_info =3D=3D NULL) + return -ENOMEM; + memset(rte_dpaa2_bpid_info, 0, + sizeof(struct dpaa2_bp_info) * MAX_BPID); + } + if (!avail_dpbp) { DPAA2_MEMPOOL_ERR("DPAA2 pool not available!"); return -ENOENT; diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.h b/drivers/mempool/dpa= a2/dpaa2_hw_mempool.h index 4d3468746..93694616e 100644 --- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.h +++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.h @@ -59,7 +59,7 @@ struct dpaa2_bp_info { #define mempool_to_bpinfo(mp) ((struct dpaa2_bp_info *)(mp)->pool_data) #define mempool_to_bpid(mp) ((mempool_to_bpinfo(mp))->bpid) =20 -extern struct dpaa2_bp_info rte_dpaa2_bpid_info[MAX_BPID]; +extern struct dpaa2_bp_info *rte_dpaa2_bpid_info; =20 int rte_dpaa2_mbuf_alloc_bulk(struct rte_mempool *pool, void **obj_table, unsigned int count); diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_eth= dev.c index 861fbcd90..3a20158da 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -485,6 +485,7 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev, } dpaa2_q =3D (struct dpaa2_queue *)priv->rx_vq[rx_queue_id]; dpaa2_q->mb_pool =3D mb_pool; /**< mbuf pool to populate RX ring. */ + dpaa2_q->bp_array =3D rte_dpaa2_bpid_info; =20 /*Get the flow id from given VQ id*/ flow_id =3D rx_queue_id % priv->nb_rx_queues; diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.= c index 816ea00fd..6e2e8abd7 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -518,6 +518,11 @@ dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **b= ufs, uint16_t nb_pkts) return 0; } } + + if (unlikely(!rte_dpaa2_bpid_info && + rte_eal_process_type() =3D=3D RTE_PROC_SECONDARY)) + rte_dpaa2_bpid_info =3D dpaa2_q->bp_array; + swp =3D DPAA2_PER_LCORE_ETHRX_PORTAL; pull_size =3D (nb_pkts > dpaa2_dqrr_size) ? dpaa2_dqrr_size : nb_pkts; if (unlikely(!q_storage->active_dqs)) { --=20 2.17.1