MCPcopy Create free account
hub / github.com/F-Stack/f-stack / test_mbuf_linearize

Function test_mbuf_linearize

dpdk/app/test/test_mbuf.c:1248–1338  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1246#endif /* !RTE_EXEC_ENV_WINDOWS */
1247
1248static int
1249test_mbuf_linearize(struct rte_mempool *pktmbuf_pool, int pkt_len,
1250 int nb_segs)
1251{
1252
1253 struct rte_mbuf *m = NULL, *mbuf = NULL;
1254 uint8_t *data;
1255 int data_len = 0;
1256 int remain;
1257 int seg, seg_len;
1258 int i;
1259
1260 if (pkt_len < 1) {
1261 printf("Packet size must be 1 or more (is %d)\n", pkt_len);
1262 return -1;
1263 }
1264
1265 if (nb_segs < 1) {
1266 printf("Number of segments must be 1 or more (is %d)\n",
1267 nb_segs);
1268 return -1;
1269 }
1270
1271 seg_len = pkt_len / nb_segs;
1272 if (seg_len == 0)
1273 seg_len = 1;
1274
1275 remain = pkt_len;
1276
1277 /* Create chained mbuf_src and fill it generated data */
1278 for (seg = 0; remain > 0; seg++) {
1279
1280 m = rte_pktmbuf_alloc(pktmbuf_pool);
1281 if (m == NULL) {
1282 printf("Cannot create segment for source mbuf");
1283 goto fail;
1284 }
1285
1286 /* Make sure if tailroom is zeroed */
1287 memset(rte_pktmbuf_mtod(m, uint8_t *), 0,
1288 rte_pktmbuf_tailroom(m));
1289
1290 data_len = remain;
1291 if (data_len > seg_len)
1292 data_len = seg_len;
1293
1294 data = (uint8_t *)rte_pktmbuf_append(m, data_len);
1295 if (data == NULL) {
1296 printf("Cannot append %d bytes to the mbuf\n",
1297 data_len);
1298 goto fail;
1299 }
1300
1301 for (i = 0; i < data_len; i++)
1302 data[i] = (seg * seg_len + i) % 0x0ff;
1303
1304 if (seg == 0)
1305 mbuf = m;

Callers 1

Calls 7

rte_pktmbuf_allocFunction · 0.85
rte_pktmbuf_appendFunction · 0.85
rte_pktmbuf_chainFunction · 0.85
rte_pktmbuf_linearizeFunction · 0.85
rte_pktmbuf_freeFunction · 0.85
printfFunction · 0.50

Tested by

no test coverage detected