From patchwork Wed Nov 29 17:25:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 134703 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1E88243403; Wed, 29 Nov 2023 18:31:42 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 46F6642E5E; Wed, 29 Nov 2023 18:31:37 +0100 (CET) Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by mails.dpdk.org (Postfix) with ESMTP id E69D2409FA for ; Wed, 29 Nov 2023 18:31:35 +0100 (CET) Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-6cb55001124so883997b3a.0 for ; Wed, 29 Nov 2023 09:31:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1701279094; x=1701883894; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/I36y5OdvRzH2d2wWWZtQ4f8zYV6uL/WhtMkfcQ3MtE=; b=c51zWGY8mnjmI6XxO0/4NnPGmzQkw6RQyq+Th5OBow5/7pU3xtpq3d8094PnfHmHz+ xcJ4EmkoMstGImUZKl8/NaKaKVnwQIC5WW0iLaeWy2EUdAo98i2z6PPYRASJWWXLy2RQ +EKBVDsgNN8W3s12byXzjv1OOL/n2+IMEXKybELDUoRu0lk1Aaq24qOuobbXRQLlYANR 3KJSXdv6hAedmi6hgiLUNMmmelaNAuX35zDCVgYSONWBBLlsp2CRvyacJti2tP0Q1Ohb 7LDi598leClxB5ms2CLI2imeyEqVAs2xD1Qs29PRME5pvKqiZj0F+us78u1XZTCnFOUv feAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701279094; x=1701883894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/I36y5OdvRzH2d2wWWZtQ4f8zYV6uL/WhtMkfcQ3MtE=; b=r1iEWSKdJJJQkBI8DJroakPmXCkiExrvEnyk0ZWLznZDSU787TBqAU2BX4zu2fmFA9 NDHEbf7eqgFBZeFd8oBsKGY7ejFlO5MJ+7n2cxmtCsxBZAcFuRvQpeDStovq7+XSoAVq 4FARNkoUmINuVPj7uKMqVQu7sjWaBZNoM1b9kjArAmsp5+hNExw2wfk1HyMe5bmd5eoi E0kMWPPL+fqkOnrXSUbzpf0QVKkWVX9jcKzgdciCkW1CxZSEqhcuj6GUDLmv4zgb/vSR YiDpdiu7cmEpRigYRNq0I4B4VfG9L72Ygaaigfw1uZsELvqUtqYbMzAZDddadnGwi+rv q/VA== X-Gm-Message-State: AOJu0YyriBOMvD17CnQ3sfww0FEszcAg9C98OpIyetw3dQ6AkctCzbqi Ft3WEfznRpvW3rrC4MxyDR3rPU6DMMIuiwtPSc8= X-Google-Smtp-Source: AGHT+IFgaBj0zoB7myFjL6bJzh2d2CGfQ5ELNKe1tcO5SLnig+umG4Jg6jdHH6qzNSHslHAcRMK1nQ== X-Received: by 2002:a05:6a20:3944:b0:18b:b858:17a5 with SMTP id r4-20020a056a20394400b0018bb85817a5mr25387543pzg.28.1701279094395; Wed, 29 Nov 2023 09:31:34 -0800 (PST) Received: from hermes.local (204-195-123-141.wavecable.com. [204.195.123.141]) by smtp.gmail.com with ESMTPSA id y42-20020a056a0003aa00b006baa1cf561dsm10950435pfs.0.2023.11.29.09.31.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 09:31:33 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Andrew Rybchenko , =?utf-8?q?Morten_Br=C3=B8?= =?utf-8?q?rup?= , Steven Webster , Matt Peters Subject: [PATCH v5 01/19] mbuf: replace term sanity check Date: Wed, 29 Nov 2023 09:25:55 -0800 Message-ID: <20231129173122.126895-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231129173122.126895-1-stephen@networkplumber.org> References: <20230802232550.125487-1-stephen@networkplumber.org> <20231129173122.126895-1-stephen@networkplumber.org> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Replace rte_mbuf_sanity_check() with rte_mbuf_verify() to match the similar macro RTE_VERIFY() in rte_debug.h The term sanity check is on the Tier 2 list of words that should be replaced. Note: the rte_mbuf_verify() function is added without the experimental tag since it is intended as direct replacement for old function name. Signed-off-by: Stephen Hemminger Acked-by: Andrew Rybchenko Acked-by: Morten Brørup --- app/test/test_mbuf.c | 28 +++++------ doc/guides/prog_guide/mbuf_lib.rst | 4 +- doc/guides/rel_notes/deprecation.rst | 3 ++ drivers/net/avp/avp_ethdev.c | 18 +++---- drivers/net/sfc/sfc_ef100_rx.c | 6 +-- drivers/net/sfc/sfc_ef10_essb_rx.c | 4 +- drivers/net/sfc/sfc_ef10_rx.c | 4 +- drivers/net/sfc/sfc_rx.c | 2 +- examples/ipv4_multicast/main.c | 2 +- lib/mbuf/rte_mbuf.c | 23 +++++---- lib/mbuf/rte_mbuf.h | 71 +++++++++++++++------------- lib/mbuf/version.map | 1 + 12 files changed, 90 insertions(+), 76 deletions(-) diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index d7393df7eb5d..261c6e5d71e9 100644 --- a/app/test/test_mbuf.c +++ b/app/test/test_mbuf.c @@ -261,8 +261,8 @@ test_one_pktmbuf(struct rte_mempool *pktmbuf_pool) GOTO_FAIL("Buffer should be continuous"); memset(hdr, 0x55, MBUF_TEST_HDR2_LEN); - rte_mbuf_sanity_check(m, 1); - rte_mbuf_sanity_check(m, 0); + rte_mbuf_verify(m, 1); + rte_mbuf_verify(m, 0); rte_pktmbuf_dump(stdout, m, 0); /* this prepend should fail */ @@ -1161,7 +1161,7 @@ test_refcnt_mbuf(void) #ifdef RTE_EXEC_ENV_WINDOWS static int -test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool) +test_failing_mbuf_verify(struct rte_mempool *pktmbuf_pool) { RTE_SET_USED(pktmbuf_pool); return TEST_SKIPPED; @@ -1180,12 +1180,12 @@ mbuf_check_pass(struct rte_mbuf *buf) } static int -test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool) +test_failing_mbuf_verify(struct rte_mempool *pktmbuf_pool) { struct rte_mbuf *buf; struct rte_mbuf badbuf; - printf("Checking rte_mbuf_sanity_check for failure conditions\n"); + printf("Checking rte_mbuf_verify for failure conditions\n"); /* get a good mbuf to use to make copies */ buf = rte_pktmbuf_alloc(pktmbuf_pool); @@ -1707,7 +1707,7 @@ test_mbuf_validate_tx_offload(const char *test_name, GOTO_FAIL("%s: mbuf allocation failed!\n", __func__); if (rte_pktmbuf_pkt_len(m) != 0) GOTO_FAIL("%s: Bad packet length\n", __func__); - rte_mbuf_sanity_check(m, 0); + rte_mbuf_verify(m, 0); m->ol_flags = ol_flags; m->tso_segsz = segsize; ret = rte_validate_tx_offload(m); @@ -1914,7 +1914,7 @@ test_pktmbuf_read(struct rte_mempool *pktmbuf_pool) GOTO_FAIL("%s: mbuf allocation failed!\n", __func__); if (rte_pktmbuf_pkt_len(m) != 0) GOTO_FAIL("%s: Bad packet length\n", __func__); - rte_mbuf_sanity_check(m, 0); + rte_mbuf_verify(m, 0); data = rte_pktmbuf_append(m, MBUF_TEST_DATA_LEN2); if (data == NULL) @@ -1963,7 +1963,7 @@ test_pktmbuf_read_from_offset(struct rte_mempool *pktmbuf_pool) if (rte_pktmbuf_pkt_len(m) != 0) GOTO_FAIL("%s: Bad packet length\n", __func__); - rte_mbuf_sanity_check(m, 0); + rte_mbuf_verify(m, 0); /* prepend an ethernet header */ hdr = (struct ether_hdr *)rte_pktmbuf_prepend(m, hdr_len); @@ -2108,7 +2108,7 @@ create_packet(struct rte_mempool *pktmbuf_pool, GOTO_FAIL("%s: mbuf allocation failed!\n", __func__); if (rte_pktmbuf_pkt_len(pkt_seg) != 0) GOTO_FAIL("%s: Bad packet length\n", __func__); - rte_mbuf_sanity_check(pkt_seg, 0); + rte_mbuf_verify(pkt_seg, 0); /* Add header only for the first segment */ if (test_data->flags == MBUF_HEADER && seg == 0) { hdr_len = sizeof(struct rte_ether_hdr); @@ -2320,7 +2320,7 @@ test_pktmbuf_ext_shinfo_init_helper(struct rte_mempool *pktmbuf_pool) GOTO_FAIL("%s: mbuf allocation failed!\n", __func__); if (rte_pktmbuf_pkt_len(m) != 0) GOTO_FAIL("%s: Bad packet length\n", __func__); - rte_mbuf_sanity_check(m, 0); + rte_mbuf_verify(m, 0); ext_buf_addr = rte_malloc("External buffer", buf_len, RTE_CACHE_LINE_SIZE); @@ -2484,8 +2484,8 @@ test_pktmbuf_ext_pinned_buffer(struct rte_mempool *std_pool) GOTO_FAIL("%s: test_pktmbuf_copy(pinned) failed\n", __func__); - if (test_failing_mbuf_sanity_check(pinned_pool) < 0) - GOTO_FAIL("%s: test_failing_mbuf_sanity_check(pinned)" + if (test_failing_mbuf_verify(pinned_pool) < 0) + GOTO_FAIL("%s: test_failing_mbuf_verify(pinned)" " failed\n", __func__); if (test_mbuf_linearize_check(pinned_pool) < 0) @@ -2859,8 +2859,8 @@ test_mbuf(void) goto err; } - if (test_failing_mbuf_sanity_check(pktmbuf_pool) < 0) { - printf("test_failing_mbuf_sanity_check() failed\n"); + if (test_failing_mbuf_verify(pktmbuf_pool) < 0) { + printf("test_failing_mbuf_verify() failed\n"); goto err; } diff --git a/doc/guides/prog_guide/mbuf_lib.rst b/doc/guides/prog_guide/mbuf_lib.rst index 049357c75563..0accb51a98c7 100644 --- a/doc/guides/prog_guide/mbuf_lib.rst +++ b/doc/guides/prog_guide/mbuf_lib.rst @@ -266,8 +266,8 @@ can be found in several of the sample applications, for example, the IPv4 Multic Debug ----- -In debug mode, the functions of the mbuf library perform sanity checks before any operation (such as, buffer corruption, -bad type, and so on). +In debug mode, the functions of the mbuf library perform consistency checks +before any operation (such as, buffer corruption, bad type, and so on). Use Cases --------- diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 81b93515cbd9..1e1544b5b644 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -146,3 +146,6 @@ Deprecation Notices will be deprecated and subsequently removed in DPDK 24.11 release. Before this, the new port library API (functions rte_swx_port_*) will gradually transition from experimental to stable status. + +* mbuf: The function ``rte_mbuf_sanity_check`` is deprecated. + Use the new function ``rte_mbuf_verify`` instead. diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c index 53d9e38c939b..ae76fad84948 100644 --- a/drivers/net/avp/avp_ethdev.c +++ b/drivers/net/avp/avp_ethdev.c @@ -1231,7 +1231,7 @@ _avp_mac_filter(struct avp_dev *avp, struct rte_mbuf *m) #ifdef RTE_LIBRTE_AVP_DEBUG_BUFFERS static inline void -__avp_dev_buffer_sanity_check(struct avp_dev *avp, struct rte_avp_desc *buf) +__avp_dev_buffer_check(struct avp_dev *avp, struct rte_avp_desc *buf) { struct rte_avp_desc *first_buf; struct rte_avp_desc *pkt_buf; @@ -1272,12 +1272,12 @@ __avp_dev_buffer_sanity_check(struct avp_dev *avp, struct rte_avp_desc *buf) first_buf->pkt_len, pkt_len); } -#define avp_dev_buffer_sanity_check(a, b) \ - __avp_dev_buffer_sanity_check((a), (b)) +#define avp_dev_buffer_check(a, b) \ + __avp_dev_buffer_check((a), (b)) #else /* RTE_LIBRTE_AVP_DEBUG_BUFFERS */ -#define avp_dev_buffer_sanity_check(a, b) do {} while (0) +#define avp_dev_buffer_check(a, b) do {} while (0) #endif @@ -1302,7 +1302,7 @@ avp_dev_copy_from_buffers(struct avp_dev *avp, void *pkt_data; unsigned int i; - avp_dev_buffer_sanity_check(avp, buf); + avp_dev_buffer_check(avp, buf); /* setup the first source buffer */ pkt_buf = avp_dev_translate_buffer(avp, buf); @@ -1370,7 +1370,7 @@ avp_dev_copy_from_buffers(struct avp_dev *avp, rte_pktmbuf_pkt_len(m) = total_length; m->vlan_tci = vlan_tci; - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); return m; } @@ -1614,7 +1614,7 @@ avp_dev_copy_to_buffers(struct avp_dev *avp, char *pkt_data; unsigned int i; - __rte_mbuf_sanity_check(mbuf, 1); + __rte_mbuf_verify(mbuf, 1); m = mbuf; src_offset = 0; @@ -1680,7 +1680,7 @@ avp_dev_copy_to_buffers(struct avp_dev *avp, first_buf->vlan_tci = mbuf->vlan_tci; } - avp_dev_buffer_sanity_check(avp, buffers[0]); + avp_dev_buffer_check(avp, buffers[0]); return total_length; } @@ -1798,7 +1798,7 @@ avp_xmit_scattered_pkts(void *tx_queue, #ifdef RTE_LIBRTE_AVP_DEBUG_BUFFERS for (i = 0; i < nb_pkts; i++) - avp_dev_buffer_sanity_check(avp, tx_bufs[i]); + avp_dev_buffer_check(avp, tx_bufs[i]); #endif /* send the packets */ diff --git a/drivers/net/sfc/sfc_ef100_rx.c b/drivers/net/sfc/sfc_ef100_rx.c index 2677003da326..8199b56f2740 100644 --- a/drivers/net/sfc/sfc_ef100_rx.c +++ b/drivers/net/sfc/sfc_ef100_rx.c @@ -179,7 +179,7 @@ sfc_ef100_rx_qrefill(struct sfc_ef100_rxq *rxq) struct sfc_ef100_rx_sw_desc *rxd; rte_iova_t dma_addr; - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); dma_addr = rte_mbuf_data_iova_default(m); if (rxq->flags & SFC_EF100_RXQ_NIC_DMA_MAP) { @@ -551,7 +551,7 @@ sfc_ef100_rx_process_ready_pkts(struct sfc_ef100_rxq *rxq, rxq->ready_pkts--; pkt = sfc_ef100_rx_next_mbuf(rxq); - __rte_mbuf_raw_sanity_check(pkt); + __rte_mbuf_raw_verify(pkt); RTE_BUILD_BUG_ON(sizeof(pkt->rearm_data[0]) != sizeof(rxq->rearm_data)); @@ -575,7 +575,7 @@ sfc_ef100_rx_process_ready_pkts(struct sfc_ef100_rxq *rxq, struct rte_mbuf *seg; seg = sfc_ef100_rx_next_mbuf(rxq); - __rte_mbuf_raw_sanity_check(seg); + __rte_mbuf_raw_verify(seg); seg->data_off = RTE_PKTMBUF_HEADROOM; diff --git a/drivers/net/sfc/sfc_ef10_essb_rx.c b/drivers/net/sfc/sfc_ef10_essb_rx.c index 78bd430363b1..74647e2792b1 100644 --- a/drivers/net/sfc/sfc_ef10_essb_rx.c +++ b/drivers/net/sfc/sfc_ef10_essb_rx.c @@ -125,7 +125,7 @@ sfc_ef10_essb_next_mbuf(const struct sfc_ef10_essb_rxq *rxq, struct rte_mbuf *m; m = (struct rte_mbuf *)((uintptr_t)mbuf + rxq->buf_stride); - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); return m; } @@ -136,7 +136,7 @@ sfc_ef10_essb_mbuf_by_index(const struct sfc_ef10_essb_rxq *rxq, struct rte_mbuf *m; m = (struct rte_mbuf *)((uintptr_t)mbuf + idx * rxq->buf_stride); - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); return m; } diff --git a/drivers/net/sfc/sfc_ef10_rx.c b/drivers/net/sfc/sfc_ef10_rx.c index 30a320d0791c..72b03b3bba7a 100644 --- a/drivers/net/sfc/sfc_ef10_rx.c +++ b/drivers/net/sfc/sfc_ef10_rx.c @@ -148,7 +148,7 @@ sfc_ef10_rx_qrefill(struct sfc_ef10_rxq *rxq) struct sfc_ef10_rx_sw_desc *rxd; rte_iova_t phys_addr; - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); SFC_ASSERT((id & ~ptr_mask) == 0); rxd = &rxq->sw_ring[id]; @@ -297,7 +297,7 @@ sfc_ef10_rx_process_event(struct sfc_ef10_rxq *rxq, efx_qword_t rx_ev, rxd = &rxq->sw_ring[pending++ & ptr_mask]; m = rxd->mbuf; - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); m->data_off = RTE_PKTMBUF_HEADROOM; rte_pktmbuf_data_len(m) = seg_len; diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c index 1dde2c111001..645c8643d1c1 100644 --- a/drivers/net/sfc/sfc_rx.c +++ b/drivers/net/sfc/sfc_rx.c @@ -120,7 +120,7 @@ sfc_efx_rx_qrefill(struct sfc_efx_rxq *rxq) ++i, id = (id + 1) & rxq->ptr_mask) { m = objs[i]; - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); rxd = &rxq->sw_desc[id]; rxd->mbuf = m; diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c index 6d0a8501eff5..f39658f4e249 100644 --- a/examples/ipv4_multicast/main.c +++ b/examples/ipv4_multicast/main.c @@ -258,7 +258,7 @@ mcast_out_pkt(struct rte_mbuf *pkt, int use_clone) hdr->pkt_len = (uint16_t)(hdr->data_len + pkt->pkt_len); hdr->nb_segs = pkt->nb_segs + 1; - __rte_mbuf_sanity_check(hdr, 1); + __rte_mbuf_verify(hdr, 1); return hdr; } /* >8 End of mcast_out_kt. */ diff --git a/lib/mbuf/rte_mbuf.c b/lib/mbuf/rte_mbuf.c index 686e797c80c4..91cb2f84f6a1 100644 --- a/lib/mbuf/rte_mbuf.c +++ b/lib/mbuf/rte_mbuf.c @@ -363,9 +363,9 @@ rte_pktmbuf_pool_create_extbuf(const char *name, unsigned int n, return mp; } -/* do some sanity checks on a mbuf: panic if it fails */ +/* do some checks on a mbuf: panic if it fails */ void -rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header) +rte_mbuf_verify(const struct rte_mbuf *m, int is_header) { const char *reason; @@ -373,6 +373,13 @@ rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header) rte_panic("%s\n", reason); } +/* For ABI compatibility, to be removed in next release */ +void +rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header) +{ + rte_mbuf_verify(m, is_header); +} + int rte_mbuf_check(const struct rte_mbuf *m, int is_header, const char **reason) { @@ -492,7 +499,7 @@ void rte_pktmbuf_free_bulk(struct rte_mbuf **mbufs, unsigned int count) if (unlikely(m == NULL)) continue; - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); do { m_next = m->next; @@ -542,7 +549,7 @@ rte_pktmbuf_clone(struct rte_mbuf *md, struct rte_mempool *mp) return NULL; } - __rte_mbuf_sanity_check(mc, 1); + __rte_mbuf_verify(mc, 1); return mc; } @@ -592,7 +599,7 @@ rte_pktmbuf_copy(const struct rte_mbuf *m, struct rte_mempool *mp, struct rte_mbuf *mc, *m_last, **prev; /* garbage in check */ - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); /* check for request to copy at offset past end of mbuf */ if (unlikely(off >= m->pkt_len)) @@ -656,7 +663,7 @@ rte_pktmbuf_copy(const struct rte_mbuf *m, struct rte_mempool *mp, } /* garbage out check */ - __rte_mbuf_sanity_check(mc, 1); + __rte_mbuf_verify(mc, 1); return mc; } @@ -667,7 +674,7 @@ rte_pktmbuf_dump(FILE *f, const struct rte_mbuf *m, unsigned dump_len) unsigned int len; unsigned int nb_segs; - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); fprintf(f, "dump mbuf at %p, iova=%#" PRIx64 ", buf_len=%u\n", m, rte_mbuf_iova_get(m), m->buf_len); @@ -685,7 +692,7 @@ rte_pktmbuf_dump(FILE *f, const struct rte_mbuf *m, unsigned dump_len) nb_segs = m->nb_segs; while (m && nb_segs != 0) { - __rte_mbuf_sanity_check(m, 0); + __rte_mbuf_verify(m, 0); fprintf(f, " segment at %p, data=%p, len=%u, off=%u, refcnt=%u\n", m, rte_pktmbuf_mtod(m, void *), diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h index 286b32b788a5..380663a0893b 100644 --- a/lib/mbuf/rte_mbuf.h +++ b/lib/mbuf/rte_mbuf.h @@ -339,13 +339,13 @@ rte_pktmbuf_priv_flags(struct rte_mempool *mp) #ifdef RTE_LIBRTE_MBUF_DEBUG -/** check mbuf type in debug mode */ -#define __rte_mbuf_sanity_check(m, is_h) rte_mbuf_sanity_check(m, is_h) +/** do mbuf type in debug mode */ +#define __rte_mbuf_verify(m, is_h) rte_mbuf_verify(m, is_h) #else /* RTE_LIBRTE_MBUF_DEBUG */ -/** check mbuf type in debug mode */ -#define __rte_mbuf_sanity_check(m, is_h) do { } while (0) +/** ignore mbuf checks if not in debug mode */ +#define __rte_mbuf_verify(m, is_h) do { } while (0) #endif /* RTE_LIBRTE_MBUF_DEBUG */ @@ -514,10 +514,9 @@ rte_mbuf_ext_refcnt_update(struct rte_mbuf_ext_shared_info *shinfo, /** - * Sanity checks on an mbuf. + * Check that the mbuf is valid and panic if corrupted. * - * Check the consistency of the given mbuf. The function will cause a - * panic if corruption is detected. + * Acts assertion that mbuf is consistent. If not it calls rte_panic(). * * @param m * The mbuf to be checked. @@ -526,13 +525,17 @@ rte_mbuf_ext_refcnt_update(struct rte_mbuf_ext_shared_info *shinfo, * of a packet (in this case, some fields like nb_segs are not checked) */ void +rte_mbuf_verify(const struct rte_mbuf *m, int is_header); + +/* Older deprecated name for rte_mbuf_verify() */ +void __rte_deprecated rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header); /** - * Sanity checks on a mbuf. + * Do consistency checks on a mbuf. * - * Almost like rte_mbuf_sanity_check(), but this function gives the reason - * if corruption is detected rather than panic. + * Check the consistency of the given mbuf and if not valid + * return the reason. * * @param m * The mbuf to be checked. @@ -551,7 +554,7 @@ int rte_mbuf_check(const struct rte_mbuf *m, int is_header, const char **reason); /** - * Sanity checks on a reinitialized mbuf in debug mode. + * Do checks on a reinitialized mbuf in debug mode. * * Check the consistency of the given reinitialized mbuf. * The function will cause a panic if corruption is detected. @@ -563,16 +566,16 @@ int rte_mbuf_check(const struct rte_mbuf *m, int is_header, * The mbuf to be checked. */ static __rte_always_inline void -__rte_mbuf_raw_sanity_check(__rte_unused const struct rte_mbuf *m) +__rte_mbuf_raw_verify(__rte_unused const struct rte_mbuf *m) { RTE_ASSERT(rte_mbuf_refcnt_read(m) == 1); RTE_ASSERT(m->next == NULL); RTE_ASSERT(m->nb_segs == 1); - __rte_mbuf_sanity_check(m, 0); + __rte_mbuf_verify(m, 0); } /** For backwards compatibility. */ -#define MBUF_RAW_ALLOC_CHECK(m) __rte_mbuf_raw_sanity_check(m) +#define MBUF_RAW_ALLOC_CHECK(m) __rte_mbuf_raw_verify(m) /** * Allocate an uninitialized mbuf from mempool *mp*. @@ -599,7 +602,7 @@ static inline struct rte_mbuf *rte_mbuf_raw_alloc(struct rte_mempool *mp) if (rte_mempool_get(mp, (void **)&m) < 0) return NULL; - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); return m; } @@ -622,7 +625,7 @@ rte_mbuf_raw_free(struct rte_mbuf *m) { RTE_ASSERT(!RTE_MBUF_CLONED(m) && (!RTE_MBUF_HAS_EXTBUF(m) || RTE_MBUF_HAS_PINNED_EXTBUF(m))); - __rte_mbuf_raw_sanity_check(m); + __rte_mbuf_raw_verify(m); rte_mempool_put(m->pool, m); } @@ -885,7 +888,7 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m) rte_pktmbuf_reset_headroom(m); m->data_len = 0; - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); } /** @@ -941,22 +944,22 @@ static inline int rte_pktmbuf_alloc_bulk(struct rte_mempool *pool, switch (count % 4) { case 0: while (idx != count) { - __rte_mbuf_raw_sanity_check(mbufs[idx]); + __rte_mbuf_raw_verify(mbufs[idx]); rte_pktmbuf_reset(mbufs[idx]); idx++; /* fall-through */ case 3: - __rte_mbuf_raw_sanity_check(mbufs[idx]); + __rte_mbuf_raw_verify(mbufs[idx]); rte_pktmbuf_reset(mbufs[idx]); idx++; /* fall-through */ case 2: - __rte_mbuf_raw_sanity_check(mbufs[idx]); + __rte_mbuf_raw_verify(mbufs[idx]); rte_pktmbuf_reset(mbufs[idx]); idx++; /* fall-through */ case 1: - __rte_mbuf_raw_sanity_check(mbufs[idx]); + __rte_mbuf_raw_verify(mbufs[idx]); rte_pktmbuf_reset(mbufs[idx]); idx++; /* fall-through */ @@ -1184,8 +1187,8 @@ static inline void rte_pktmbuf_attach(struct rte_mbuf *mi, struct rte_mbuf *m) mi->pkt_len = mi->data_len; mi->nb_segs = 1; - __rte_mbuf_sanity_check(mi, 1); - __rte_mbuf_sanity_check(m, 0); + __rte_mbuf_verify(mi, 1); + __rte_mbuf_verify(m, 0); } /** @@ -1340,7 +1343,7 @@ static inline int __rte_pktmbuf_pinned_extbuf_decref(struct rte_mbuf *m) static __rte_always_inline struct rte_mbuf * rte_pktmbuf_prefree_seg(struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, 0); + __rte_mbuf_verify(m, 0); if (likely(rte_mbuf_refcnt_read(m) == 1)) { @@ -1411,7 +1414,7 @@ static inline void rte_pktmbuf_free(struct rte_mbuf *m) struct rte_mbuf *m_next; if (m != NULL) - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); while (m != NULL) { m_next = m->next; @@ -1492,7 +1495,7 @@ rte_pktmbuf_copy(const struct rte_mbuf *m, struct rte_mempool *mp, */ static inline void rte_pktmbuf_refcnt_update(struct rte_mbuf *m, int16_t v) { - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); do { rte_mbuf_refcnt_update(m, v); @@ -1509,7 +1512,7 @@ static inline void rte_pktmbuf_refcnt_update(struct rte_mbuf *m, int16_t v) */ static inline uint16_t rte_pktmbuf_headroom(const struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, 0); + __rte_mbuf_verify(m, 0); return m->data_off; } @@ -1523,7 +1526,7 @@ static inline uint16_t rte_pktmbuf_headroom(const struct rte_mbuf *m) */ static inline uint16_t rte_pktmbuf_tailroom(const struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, 0); + __rte_mbuf_verify(m, 0); return (uint16_t)(m->buf_len - rte_pktmbuf_headroom(m) - m->data_len); } @@ -1538,7 +1541,7 @@ static inline uint16_t rte_pktmbuf_tailroom(const struct rte_mbuf *m) */ static inline struct rte_mbuf *rte_pktmbuf_lastseg(struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); while (m->next != NULL) m = m->next; return m; @@ -1582,7 +1585,7 @@ static inline struct rte_mbuf *rte_pktmbuf_lastseg(struct rte_mbuf *m) static inline char *rte_pktmbuf_prepend(struct rte_mbuf *m, uint16_t len) { - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); if (unlikely(len > rte_pktmbuf_headroom(m))) return NULL; @@ -1617,7 +1620,7 @@ static inline char *rte_pktmbuf_append(struct rte_mbuf *m, uint16_t len) void *tail; struct rte_mbuf *m_last; - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); m_last = rte_pktmbuf_lastseg(m); if (unlikely(len > rte_pktmbuf_tailroom(m_last))) @@ -1645,7 +1648,7 @@ static inline char *rte_pktmbuf_append(struct rte_mbuf *m, uint16_t len) */ static inline char *rte_pktmbuf_adj(struct rte_mbuf *m, uint16_t len) { - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); if (unlikely(len > m->data_len)) return NULL; @@ -1677,7 +1680,7 @@ static inline int rte_pktmbuf_trim(struct rte_mbuf *m, uint16_t len) { struct rte_mbuf *m_last; - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); m_last = rte_pktmbuf_lastseg(m); if (unlikely(len > m_last->data_len)) @@ -1699,7 +1702,7 @@ static inline int rte_pktmbuf_trim(struct rte_mbuf *m, uint16_t len) */ static inline int rte_pktmbuf_is_contiguous(const struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, 1); + __rte_mbuf_verify(m, 1); return m->nb_segs == 1; } diff --git a/lib/mbuf/version.map b/lib/mbuf/version.map index daa65e2bbdb2..c85370e430b2 100644 --- a/lib/mbuf/version.map +++ b/lib/mbuf/version.map @@ -31,6 +31,7 @@ DPDK_24 { rte_mbuf_set_platform_mempool_ops; rte_mbuf_set_user_mempool_ops; rte_mbuf_user_mempool_ops; + rte_mbuf_verify; rte_pktmbuf_clone; rte_pktmbuf_copy; rte_pktmbuf_dump;