On Thu, Sep 12, 2019 at 9:16 PM Willem de Bruijn <willemdebruijn.ker...@gmail.com> wrote: > > From: Willem de Bruijn <will...@google.com> > > UDP reuseport groups can hold a mix unconnected and connected sockets. > Ensure that connections only receive all traffic to their 4-tuple. > > Fast reuseport returns on the first reuseport match on the assumption > that all matches are equal. Only if connections are present, return to > the previous behavior of scoring all sockets. > > Record if connections are present and if so (1) treat such connected > sockets as an independent match from the group, (2) only return > 2-tuple matches from reuseport and (3) do not return on the first > 2-tuple reuseport match to allow for a higher scoring match later. > > New field has_conns is set without locks. No other fields in the > bitmap are modified at runtime and the field is only ever set > unconditionally, so an RMW cannot miss a change. > > Fixes: e32ea7e74727 ("soreuseport: fast reuseport UDP socket selection") > Link: > http://lkml.kernel.org/r/ca+futsfrp09ajnyrt04ss6qj22viioewawmlawx0psk8-pg...@mail.gmail.com > Signed-off-by: Willem de Bruijn <will...@google.com>
Slick, no additional cost for the BPF case and just a single branch for the unconnected udp, tcp listener case! Acked-by: Craig Gallek <kr...@google.com>