On Mon, Feb 08, 2021 at 01:37:03PM +0200, Nikolay Aleksandrov wrote: > Hi Vladimir, > I think this patch potentially breaks some use cases. There are a few > problems, I'll > start with the more serious one: before the ports would have a set of flags > that were > always set when joining, now due to how nbp_flags_change() handles flag > setting some might > not be set which would immediately change behaviour w.r.t software fwding. > I'll use your > example of BR_BCAST_FLOOD: a lot of drivers will return an error for it and > any broadcast > towards these ports will be dropped, we have mixed environments with software > ports that > sometimes have traffic (e.g. decapped ARP requests) software forwarded which > will stop working.
Yes, you're right. The only solution I can think of is to add a "bool ignore_errors" to nbp_flags_change, set to true from new_nbp and del_nbp, and to false from the netlink code. > The other lesser issue is with the style below, I mean these three calls for > each flag are > just ugly and look weird as you've also noted, since these APIs are internal > can we do better? Doing better would mean allowing nbp_flags_change() to have a bit mask with potentially more brport flags set, and to call br_switchdev_set_port_flag in a for_each_set_bit() loop?