From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 166E8C2D0DB for ; Wed, 22 Jan 2020 19:30:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D236424656 for ; Wed, 22 Jan 2020 19:30:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="t4jCpDlB" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728799AbgAVTaH (ORCPT ); Wed, 22 Jan 2020 14:30:07 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:51078 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725928AbgAVTaH (ORCPT ); Wed, 22 Jan 2020 14:30:07 -0500 Received: by mail-wm1-f68.google.com with SMTP id a5so313341wmb.0 for ; Wed, 22 Jan 2020 11:30:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mvFRnSrf67ClR83ylxljFfQ386JoN2njVtxNW9SXi5M=; b=t4jCpDlBUGoa59/8FWRAOkj1GIwFOjlmY9DmhzWrx+Xtl2+DZvm7IVkJVySqO3SrzJ O3EdqmB8M+6T6J9eEft8gFhLaRutTPu0pryqMFuB4psDgj+Q+0UH+2qFsVfBxPPL4g7M 7aJOVpHaPBeUIPrzEqsK3CI20arAkjuMX8QkuQulQLpYu2mQ5zM6xjNbGtMxe0jhZ2Tm anioLdD0kuWrSZiMSjOqbN0UlE5wWHfFSmaboQbD9mI5HIUfEWZfpsaGe9DOiW6F3ODz zMubHifYxfibg272GOhASN73hPudD0sxh2SkolJd7YFegoiNdB9EbX3omGkW4sAbqBAJ 1LUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mvFRnSrf67ClR83ylxljFfQ386JoN2njVtxNW9SXi5M=; b=k9SpcCPkcZ5wSLkdUKLsq7QdiBXK1nX0W6r9W+U/2A60bgXcyYI8uogi1947E4YXoV HeyM3A+CHFlfORFiDqYO58mDyTvlY6h+rRSmPbSTLsW1TgRIFDFFIZ833Pim15Z+g317 /tOwp+YkU8y4somM3sFI2bzrjhXLrKlvoOHakf8Z8qGz/iQ+1nZFqYGqoWwmZ5w8u3BN Ea2KO/nsmYE1/xxFy6P3a1/OKLqu4W4A+OwBs82VGbBpz6jvKlvscx5hYpDesJTHXrJj jRVH1tT6Rr1V99J1pItrcV7bOVITFrBLQuKypXpBGP38jqFf+wHtppyH9PoL+cih5iu7 VIsA== X-Gm-Message-State: APjAAAWAEBCvN+iX1dYckLKXB+pYAP8eymMXeTA7kFmKeKdaSs1xBL7/ nNttCxV/H1i/R9ILQ3FX1Cf1SUvKjfmJP9I0jh4= X-Google-Smtp-Source: APXvYqzfETl7ITn1SL34jVBPgub3rhT3C10cCb2qEoK/QZ+PyStxBG/s0tQM9d/yt7bVsDFUWqhDvV0EiI7/c5cxpI0= X-Received: by 2002:a05:600c:244:: with SMTP id 4mr4677968wmj.40.1579721405289; Wed, 22 Jan 2020 11:30:05 -0800 (PST) MIME-Version: 1.0 References: <1579612911-24497-1-git-send-email-sunil.kovvuri@gmail.com> <1579612911-24497-5-git-send-email-sunil.kovvuri@gmail.com> <20200121080058.42b0c473@cakuba> In-Reply-To: <20200121080058.42b0c473@cakuba> From: Sunil Kovvuri Date: Thu, 23 Jan 2020 00:59:54 +0530 Message-ID: Subject: Re: [PATCH v4 04/17] octeontx2-pf: Initialize and config queues To: Jakub Kicinski Cc: Linux Netdev List , "David S. Miller" , Michal Kubecek , Sunil Goutham , Geetha sowjanya Content-Type: text/plain; charset="UTF-8" Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Tue, Jan 21, 2020 at 9:31 PM Jakub Kicinski wrote: > > On Tue, 21 Jan 2020 18:51:38 +0530, sunil.kovvuri@gmail.com wrote: > > +dma_addr_t otx2_alloc_rbuf(struct otx2_nic *pfvf, struct otx2_pool *pool, > > + gfp_t gfp) > > +{ > > + dma_addr_t iova; > > + > > + /* Check if request can be accommodated in previous allocated page */ > > + if (pool->page && > > + ((pool->page_offset + pool->rbsize) <= PAGE_SIZE)) { > > + pool->pageref++; > > + goto ret; > > + } > > + > > + otx2_get_page(pool); > > + > > + /* Allocate a new page */ > > + pool->page = alloc_pages(gfp | __GFP_COMP | __GFP_NOWARN, > > + pool->rbpage_order); > > + if (unlikely(!pool->page)) > > + return -ENOMEM; > > + > > + pool->page_offset = 0; > > +ret: > > + iova = (u64)otx2_dma_map_page(pfvf, pool->page, pool->page_offset, > > + pool->rbsize, DMA_FROM_DEVICE); > > + if (!iova) { > > + if (!pool->page_offset) > > + __free_pages(pool->page, pool->rbpage_order); > > + pool->page = NULL; > > + return -ENOMEM; > > + } > > + pool->page_offset += pool->rbsize; > > + return iova; > > +} > > You don't seem to be doing any page recycling if I'm reading this right. > Can't you use the standard in-kernel page frag allocator > (netdev_alloc_frag/napi_alloc_frag)? netdev_alloc_frag() is costly. eg: it does updates to page's refcount per frag allocation. Thanks, Sunil.