From: Nikolay Aleksandrov <nikolay@xxxxxxxxxxxxxxxxxxx> Date: Tue, 29 Oct 2019 13:45:52 +0200 > We'd like to have a well-defined behaviour when changing fdb flags. The > problem is that we've added new fields which are changed from all > contexts without any locking. We are aware of the bit test/change races > and these are fine (we can remove them later), but it is considered > undefined behaviour to change bitfields from multiple threads and also > on some architectures that can result in unexpected results, > specifically when all fields between the changed ones are also > bitfields. The conversion to bitops shows the intent clearly and > makes them use functions with well-defined behaviour in such cases. > There is no overhead for the fast-path, the bit changing functions are > used only in special cases when learning and in the slow path. > In addition this conversion allows us to simplify fdb flag handling and > avoid bugs for future bits (e.g. a forgetting to clear the new bit when > allocating a new fdb). All bridge selftests passed, also tried all of the > converted bits manually in a VM. Series applied, thanks.