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

Function ff_veth_input

lib/ff_dpdk_if.c:1419–1460  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1417}
1418
1419static void
1420ff_veth_input(const struct ff_dpdk_if_context *ctx, struct rte_mbuf *pkt)
1421{
1422 uint8_t rx_csum = ctx->hw_features.rx_csum;
1423 if (rx_csum) {
1424 if (pkt->ol_flags & (RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD)) {
1425 rte_pktmbuf_free(pkt);
1426 return;
1427 }
1428 }
1429
1430 void *data = rte_pktmbuf_mtod(pkt, void*);
1431 uint16_t len = rte_pktmbuf_data_len(pkt);
1432
1433 void *hdr = ff_mbuf_gethdr(pkt, pkt->pkt_len, data, len, rx_csum);
1434 if (hdr == NULL) {
1435 rte_pktmbuf_free(pkt);
1436 return;
1437 }
1438
1439 if (pkt->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) {
1440 ff_mbuf_set_vlan_info(hdr, pkt->vlan_tci);
1441 }
1442
1443 struct rte_mbuf *pn = pkt->next;
1444 void *prev = hdr;
1445 while(pn != NULL) {
1446 data = rte_pktmbuf_mtod(pn, void*);
1447 len = rte_pktmbuf_data_len(pn);
1448
1449 void *mb = ff_mbuf_get(prev, pn, data, len);
1450 if (mb == NULL) {
1451 ff_mbuf_free(hdr);
1452 rte_pktmbuf_free(pkt);
1453 return;
1454 }
1455 pn = pn->next;
1456 prev = mb;
1457 }
1458
1459 ff_veth_process_packet(ctx->ifp, hdr);
1460}
1461
1462static enum FilterReturn
1463protocol_filter(const void *data, uint16_t len)

Callers 1

ff_dpdk_if.cFile · 0.85

Calls 6

rte_pktmbuf_freeFunction · 0.85
ff_mbuf_gethdrFunction · 0.85
ff_mbuf_set_vlan_infoFunction · 0.85
ff_mbuf_getFunction · 0.85
ff_mbuf_freeFunction · 0.85
ff_veth_process_packetFunction · 0.85

Tested by

no test coverage detected