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

Function iavf_init_proto_xtr

dpdk/drivers/net/iavf/iavf_ethdev.c:2355–2434  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2353}
2354
2355static void
2356iavf_init_proto_xtr(struct rte_eth_dev *dev)
2357{
2358 struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
2359 struct iavf_adapter *ad =
2360 IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
2361 const struct iavf_proto_xtr_ol *xtr_ol;
2362 bool proto_xtr_enable = false;
2363 int offset;
2364 uint16_t i;
2365
2366 vf->proto_xtr = rte_zmalloc("vf proto xtr",
2367 vf->vsi_res->num_queue_pairs, 0);
2368 if (unlikely(!(vf->proto_xtr))) {
2369 PMD_DRV_LOG(ERR, "no memory for setting up proto_xtr's table");
2370 return;
2371 }
2372
2373 for (i = 0; i < vf->vsi_res->num_queue_pairs; i++) {
2374 vf->proto_xtr[i] = ad->devargs.proto_xtr[i] !=
2375 IAVF_PROTO_XTR_NONE ?
2376 ad->devargs.proto_xtr[i] :
2377 ad->devargs.proto_xtr_dflt;
2378
2379 if (vf->proto_xtr[i] != IAVF_PROTO_XTR_NONE) {
2380 uint8_t type = vf->proto_xtr[i];
2381
2382 iavf_proto_xtr_params[type].required = true;
2383 proto_xtr_enable = true;
2384 }
2385 }
2386
2387 if (likely(!proto_xtr_enable))
2388 return;
2389
2390 offset = rte_mbuf_dynfield_register(&iavf_proto_xtr_metadata_param);
2391 if (unlikely(offset == -1)) {
2392 PMD_DRV_LOG(ERR,
2393 "failed to extract protocol metadata, error %d",
2394 -rte_errno);
2395 return;
2396 }
2397
2398 PMD_DRV_LOG(DEBUG,
2399 "proto_xtr metadata offset in mbuf is : %d",
2400 offset);
2401 rte_pmd_ifd_dynfield_proto_xtr_metadata_offs = offset;
2402
2403 for (i = 0; i < RTE_DIM(iavf_proto_xtr_params); i++) {
2404 xtr_ol = &iavf_proto_xtr_params[i];
2405
2406 uint8_t rxdid = iavf_proto_xtr_type_to_rxdid((uint8_t)i);
2407
2408 if (!xtr_ol->required)
2409 continue;
2410
2411 if (!(vf->supported_rxdid & BIT(rxdid))) {
2412 PMD_DRV_LOG(ERR,

Callers 1

iavf_init_vfFunction · 0.85

Calls 4

rte_zmallocFunction · 0.85

Tested by

no test coverage detected