]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: netmem: remove NET_IOV_MAX from net_iov_type enum
authorBobby Eshleman <bobbyeshleman@meta.com>
Fri, 24 Oct 2025 18:02:56 +0000 (11:02 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 29 Oct 2025 00:41:46 +0000 (17:41 -0700)
Remove the NET_IOV_MAX workaround from the net_iov_type enum. This entry
was previously added to force the enum size to unsigned long to satisfy
the NET_IOV_ASSERT_OFFSET static assertions.

After commit f3d85c9ee510 ("netmem: introduce struct netmem_desc
mirroring struct page") this approach became unnecessary by placing the
net_iov_type after the netmem_desc. Placing the net_iov_type after
netmem_desc results in the net_iov_type size having no effect on the
position or layout of the fields that mirror the struct page.

The layout before this patch:

struct net_iov {
union {
struct netmem_desc desc;                 /*     0    48 */
struct {
long unsigned int _flags;        /*     0     8 */
long unsigned int pp_magic;      /*     8     8 */
struct page_pool * pp;           /*    16     8 */
long unsigned int _pp_mapping_pad; /*    24     8 */
long unsigned int dma_addr;      /*    32     8 */
atomic_long_t pp_ref_count;      /*    40     8 */
};                                       /*     0    48 */
};                                               /*     0    48 */
struct net_iov_area *      owner;                /*    48     8 */
enum net_iov_type          type;                 /*    56     8 */

/* size: 64, cachelines: 1, members: 3 */
};

The layout after this patch:

struct net_iov {
union {
struct netmem_desc desc;                 /*     0    48 */
struct {
long unsigned int _flags;        /*     0     8 */
long unsigned int pp_magic;      /*     8     8 */
struct page_pool * pp;           /*    16     8 */
long unsigned int _pp_mapping_pad; /*    24     8 */
long unsigned int dma_addr;      /*    32     8 */
atomic_long_t pp_ref_count;      /*    40     8 */
};                                       /*     0    48 */
};                                               /*     0    48 */
struct net_iov_area *      owner;                /*    48     8 */
enum net_iov_type          type;                 /*    56     4 */

/* size: 64, cachelines: 1, members: 3 */
/* padding: 4 */
};

Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>
Reviewed-by: Mina Almasry <almasrymina@google.com>
Link: https://patch.msgid.link/20251024-b4-devmem-remove-niov-max-v1-1-ba72c68bc869@meta.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/netmem.h

index 651e2c62d1dde2a6960c05c9e09c379943a4accd..9e10f4ac50c3d4381d2404c3b079366dfc08bab7 100644 (file)
@@ -68,10 +68,6 @@ DECLARE_STATIC_KEY_FALSE(page_pool_mem_providers);
 enum net_iov_type {
        NET_IOV_DMABUF,
        NET_IOV_IOURING,
-
-       /* Force size to unsigned long to make the NET_IOV_ASSERTS below pass.
-        */
-       NET_IOV_MAX = ULONG_MAX
 };
 
 /* A memory descriptor representing abstract networking I/O vectors,