All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Laatz <kevin.laatz@intel.com>
To: netdev@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net,
	bjorn.topel@intel.com, magnus.karlsson@intel.com
Cc: bpf@vger.kernel.com, intel-wired-lan@lists.osuosl.org,
	bruce.richardson@intel.com, ciara.loftus@intel.com,
	Kevin Laatz <kevin.laatz@intel.com>
Subject: [PATCH 03/11] xdp: add offset param to zero_copy_allocator
Date: Thu, 20 Jun 2019 08:39:16 +0000	[thread overview]
Message-ID: <20190620083924.1996-4-kevin.laatz@intel.com> (raw)
In-Reply-To: <20190620083924.1996-1-kevin.laatz@intel.com>

This patch adds an offset parameter for zero_copy_allocator.

This change is required for the unaligned chunk mode which will come later
in this patch set. The offset parameter is required for calculating the
original handle in unaligned mode since we can't easily mask back to it
like in the aligned case.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 include/net/xdp.h |  3 ++-
 net/core/xdp.c    | 11 ++++++-----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/net/xdp.h b/include/net/xdp.h
index 0f25b3675c5c..ea801fd2bf98 100644
--- a/include/net/xdp.h
+++ b/include/net/xdp.h
@@ -53,7 +53,8 @@ struct xdp_mem_info {
 struct page_pool;
 
 struct zero_copy_allocator {
-	void (*free)(struct zero_copy_allocator *zca, unsigned long handle);
+	void (*free)(struct zero_copy_allocator *zca, unsigned long handle,
+			off_t off);
 };
 
 struct xdp_rxq_info {
diff --git a/net/core/xdp.c b/net/core/xdp.c
index 4b2b194f4f1f..a77a7162d213 100644
--- a/net/core/xdp.c
+++ b/net/core/xdp.c
@@ -322,7 +322,7 @@ EXPORT_SYMBOL_GPL(xdp_rxq_info_reg_mem_model);
  * of xdp_frames/pages in those cases.
  */
 static void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct,
-			 unsigned long handle)
+			 unsigned long handle, off_t off)
 {
 	struct xdp_mem_allocator *xa;
 	struct page *page;
@@ -353,7 +353,7 @@ static void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct,
 		rcu_read_lock();
 		/* mem->id is valid, checked in xdp_rxq_info_reg_mem_model() */
 		xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params);
-		xa->zc_alloc->free(xa->zc_alloc, handle);
+		xa->zc_alloc->free(xa->zc_alloc, handle, off);
 		rcu_read_unlock();
 	default:
 		/* Not possible, checked in xdp_rxq_info_reg_mem_model() */
@@ -363,19 +363,20 @@ static void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct,
 
 void xdp_return_frame(struct xdp_frame *xdpf)
 {
-	__xdp_return(xdpf->data, &xdpf->mem, false, 0);
+	__xdp_return(xdpf->data, &xdpf->mem, false, 0, 0);
 }
 EXPORT_SYMBOL_GPL(xdp_return_frame);
 
 void xdp_return_frame_rx_napi(struct xdp_frame *xdpf)
 {
-	__xdp_return(xdpf->data, &xdpf->mem, true, 0);
+	__xdp_return(xdpf->data, &xdpf->mem, true, 0, 0);
 }
 EXPORT_SYMBOL_GPL(xdp_return_frame_rx_napi);
 
 void xdp_return_buff(struct xdp_buff *xdp)
 {
-	__xdp_return(xdp->data, &xdp->rxq->mem, true, xdp->handle);
+	__xdp_return(xdp->data, &xdp->rxq->mem, true, xdp->handle,
+			xdp->data - xdp->data_hard_start);
 }
 EXPORT_SYMBOL_GPL(xdp_return_buff);
 
-- 
2.17.1


WARNING: multiple messages have this Message-ID (diff)
From: Kevin Laatz <kevin.laatz@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH 03/11] xdp: add offset param to zero_copy_allocator
Date: Thu, 20 Jun 2019 08:39:16 +0000	[thread overview]
Message-ID: <20190620083924.1996-4-kevin.laatz@intel.com> (raw)
In-Reply-To: <20190620083924.1996-1-kevin.laatz@intel.com>

This patch adds an offset parameter for zero_copy_allocator.

This change is required for the unaligned chunk mode which will come later
in this patch set. The offset parameter is required for calculating the
original handle in unaligned mode since we can't easily mask back to it
like in the aligned case.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 include/net/xdp.h |  3 ++-
 net/core/xdp.c    | 11 ++++++-----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/net/xdp.h b/include/net/xdp.h
index 0f25b3675c5c..ea801fd2bf98 100644
--- a/include/net/xdp.h
+++ b/include/net/xdp.h
@@ -53,7 +53,8 @@ struct xdp_mem_info {
 struct page_pool;
 
 struct zero_copy_allocator {
-	void (*free)(struct zero_copy_allocator *zca, unsigned long handle);
+	void (*free)(struct zero_copy_allocator *zca, unsigned long handle,
+			off_t off);
 };
 
 struct xdp_rxq_info {
diff --git a/net/core/xdp.c b/net/core/xdp.c
index 4b2b194f4f1f..a77a7162d213 100644
--- a/net/core/xdp.c
+++ b/net/core/xdp.c
@@ -322,7 +322,7 @@ EXPORT_SYMBOL_GPL(xdp_rxq_info_reg_mem_model);
  * of xdp_frames/pages in those cases.
  */
 static void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct,
-			 unsigned long handle)
+			 unsigned long handle, off_t off)
 {
 	struct xdp_mem_allocator *xa;
 	struct page *page;
@@ -353,7 +353,7 @@ static void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct,
 		rcu_read_lock();
 		/* mem->id is valid, checked in xdp_rxq_info_reg_mem_model() */
 		xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params);
-		xa->zc_alloc->free(xa->zc_alloc, handle);
+		xa->zc_alloc->free(xa->zc_alloc, handle, off);
 		rcu_read_unlock();
 	default:
 		/* Not possible, checked in xdp_rxq_info_reg_mem_model() */
@@ -363,19 +363,20 @@ static void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct,
 
 void xdp_return_frame(struct xdp_frame *xdpf)
 {
-	__xdp_return(xdpf->data, &xdpf->mem, false, 0);
+	__xdp_return(xdpf->data, &xdpf->mem, false, 0, 0);
 }
 EXPORT_SYMBOL_GPL(xdp_return_frame);
 
 void xdp_return_frame_rx_napi(struct xdp_frame *xdpf)
 {
-	__xdp_return(xdpf->data, &xdpf->mem, true, 0);
+	__xdp_return(xdpf->data, &xdpf->mem, true, 0, 0);
 }
 EXPORT_SYMBOL_GPL(xdp_return_frame_rx_napi);
 
 void xdp_return_buff(struct xdp_buff *xdp)
 {
-	__xdp_return(xdp->data, &xdp->rxq->mem, true, xdp->handle);
+	__xdp_return(xdp->data, &xdp->rxq->mem, true, xdp->handle,
+			xdp->data - xdp->data_hard_start);
 }
 EXPORT_SYMBOL_GPL(xdp_return_buff);
 
-- 
2.17.1


  parent reply	other threads:[~2019-06-20 16:53 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-20  8:39 [PATCH 00/11] XDP unaligned chunk placement support Kevin Laatz
2019-06-20  8:39 ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 02/11] ixgbe: " Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` Kevin Laatz [this message]
2019-06-20  8:39   ` [Intel-wired-lan] [PATCH 03/11] xdp: add offset param to zero_copy_allocator Kevin Laatz
2019-06-20  8:39 ` [PATCH 04/11] i40e: add offset to zca_free Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 05/11] ixgbe: " Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 06/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 07/11] libbpf: add flags to umem config Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-20  8:39 ` [PATCH 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-06-20  8:39   ` [Intel-wired-lan] " Kevin Laatz
2019-06-24 15:38 ` [PATCH 00/11] XDP unaligned chunk placement support Björn Töpel
2019-06-24 15:38   ` [Intel-wired-lan] " =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-25 13:12   ` Laatz, Kevin
2019-06-25 13:12     ` [Intel-wired-lan] " Laatz, Kevin
2019-06-25 18:44 ` Jonathan Lemon
2019-06-25 18:44   ` [Intel-wired-lan] " Jonathan Lemon
2019-06-27 11:14   ` Laatz, Kevin
2019-06-27 11:14     ` [Intel-wired-lan] " Laatz, Kevin
2019-06-27 21:25     ` Jakub Kicinski
2019-06-27 21:25       ` [Intel-wired-lan] " Jakub Kicinski
2019-06-28 16:19       ` Laatz, Kevin
2019-06-28 16:19         ` [Intel-wired-lan] " Laatz, Kevin
2019-06-28 16:51         ` Björn Töpel
2019-06-28 16:51           ` [Intel-wired-lan] " =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-28 20:08           ` Jakub Kicinski
2019-06-28 20:08             ` [Intel-wired-lan] " Jakub Kicinski
2019-06-28 20:25         ` Jakub Kicinski
2019-06-28 20:25           ` [Intel-wired-lan] " Jakub Kicinski
2019-06-28 20:29         ` Jonathan Lemon
2019-06-28 20:29           ` [Intel-wired-lan] " Jonathan Lemon
2019-07-01 14:44           ` Laatz, Kevin
2019-07-01 21:20             ` Jakub Kicinski
2019-07-01 21:20               ` [Intel-wired-lan] " Jakub Kicinski
2019-07-02  9:27               ` Richardson, Bruce
2019-07-02  9:27                 ` [Intel-wired-lan] " Richardson, Bruce
2019-07-02 16:33                 ` Jonathan Lemon
2019-07-02 16:33                   ` [Intel-wired-lan] " Jonathan Lemon
2019-07-01 14:58           ` Laatz, Kevin
2019-07-01 14:58             ` [Intel-wired-lan] " Laatz, Kevin
2019-06-20  9:09 Kevin Laatz
2019-06-20  9:09 ` [PATCH 03/11] xdp: add offset param to zero_copy_allocator Kevin Laatz
2019-06-24 14:31   ` Björn Töpel
2019-06-24 19:23   ` Jakub Kicinski
2019-06-25 13:14     ` Laatz, Kevin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190620083924.1996-4-kevin.laatz@intel.com \
    --to=kevin.laatz@intel.com \
    --cc=ast@kernel.org \
    --cc=bjorn.topel@intel.com \
    --cc=bpf@vger.kernel.com \
    --cc=bruce.richardson@intel.com \
    --cc=ciara.loftus@intel.com \
    --cc=daniel@iogearbox.net \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=magnus.karlsson@intel.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.