On Nov 23, Dumitru Ceara wrote:
> On 11/23/22 15:26, Lorenzo Bianconi wrote:
> >>>>> /* Called with in the pinctrl_handler thread context. */
> >>>>> static int
> >>>>> pinctrl_handle_buffered_packets(struct dp_packet *pkt_in,
> >>>>> const struct match *md, bool is_arp)
> >>>>> OVS_REQUIRES(pinctrl_mutex)
> >>>>> {
> >>>>> - struct buffered_packets *bp;
> >>>>> - struct dp_packet *clone;
> >>>>> - struct in6_addr addr;
> >>>>> -
> >>>>> - if (is_arp) {
> >>>>> - addr = in6_addr_mapped_ipv4(htonl(md->flow.regs[0]));
> >>>>> - } else {
> >>>>> - ovs_be128 ip6 = hton128(flow_get_xxreg(&md->flow, 0));
> >>>>> - memcpy(&addr, &ip6, sizeof addr);
> >>>>> - }
> >>>>> -
> >>>>> - uint32_t hash = hash_bytes(&addr, sizeof addr, 0);
> >>>>> - bp = pinctrl_find_buffered_packets(&addr, hash);
> >>>>> + uint64_t dp_key = ntohll(md->flow.metadata);
> >>>>> + uint64_t oport_key = md->flow.regs[MFF_LOG_OUTPORT - MFF_REG0];
> >>>>> + uint32_t hash = pinctrl_buffer_apcket_hash(dp_key, oport_key);
> >>>>> + struct buffered_packets *bp
> >>>>> + = pinctrl_find_buffered_packets(dp_key, oport_key, hash);
> >>>>> if (!bp) {
> >>>>> if (hmap_count(&buffered_packets_map) >= 1000) {
> >> Before your patch we would hit this hard coded limit if there were 1000
> >> next hops for which we were bufferring packets.
> >>
> >> Now, with your change, we will hit his limit only if there are 1000
> >> ports for which we are bufferring packets. This seems very unlikely and
> >> I wonder if this will ever happen in practice. Do we need to change its
> >> value? Also, let's add a define for it somewhere to make it a bit less
> >> "magic".
> > ack. I would prefer to be a bit more conservative and keep the condition.
> > What is the right value to use up to you? 😄
> >
>
> Well, if you want to keep the exact same condition you'd have to count
> how many individual next hops we're buffering packets for. Is that an
> option?
I am fine to just keep a condition that limits the max size of
buffered_packets_map, but if you think that is really not important we can drop
it.
Regards,
Lorenzo
>
> Thanks,
> Dumitru
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev