[PATCH v6] ip_frag: add IPv4 fragment copy packet API

Konstantin Ananyev konstantin.v.ananyev at yandex.ru
Sun Aug 7 13:49:11 CEST 2022


> 
> At 2022-07-25 23:42:06, "Stephen Hemminger" <stephen at networkplumber.org> wrote:
>>On Sun, 24 Jul 2022 16:10:03 +0800
>>Huichao Cai <chcchc88 at 163.com> wrote:
>>
>>> +
>>> +	/*
>>> +	 * Formal parameter checking.
>>> +	 */
>>> +	if (unlikely(pkt_in == NULL) || unlikely(pkts_out == NULL) ||
>>> +	    unlikely(nb_pkts_out == 0) || unlikely(pool_direct == NULL) ||
>>> +	    unlikely(mtu_size < RTE_ETHER_MIN_MTU))
>>> +		return -EINVAL;
>>> +
>>> +	in_hdr = rte_pktmbuf_mtod(pkt_in, struct rte_ipv4_hdr *);
>>> +	header_len = (in_hdr->version_ihl & RTE_IPV4_HDR_IHL_MASK) *
>>> +	    RTE_IPV4_IHL_MULTIPLIER;
>>> +
>>> +	/* Check IP header length */
>>> +	if (unlikely(pkt_in->data_len < header_len) ||
>>> +	    unlikely(mtu_size < header_len))
>>> +		return -EINVAL;
>>> +
>>
>>My suspicions are all this input parameter checking probably costs more
>  >than any performance gain of having a non-segmented fast path.

I think checks are not that expensive.
My guess - actual copying will be the main cycles eater here.
Though if percentage of packets that need to be fragmented is tiny,
might be it is still worth it.
Though yes, I still think better would be not to use MBUF_FAST_FREE at 
all, but we are where we are.


> These checks are consistent with the rte_ipv4_fragment_packet function.
> I think these have been tested for performance.If these checks do affect 
> performance,
> perhaps the legitimacy of the variable is better guaranteed by the caller



More information about the dev mailing list