Module Name: src
Committed By: riastradh
Date: Fri Dec 31 00:57:12 UTC 2021
Modified Files:
src/doc: TODO.smpnet
Log Message:
doc: Update TODO.smpnet to reflect invention of ETHER_F_ALLMULTI.
To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/doc/TODO.smpnet
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/doc/TODO.smpnet
diff -u src/doc/TODO.smpnet:1.44 src/doc/TODO.smpnet:1.45
--- src/doc/TODO.smpnet:1.44 Mon Aug 9 19:24:33 2021
+++ src/doc/TODO.smpnet Fri Dec 31 00:57:12 2021
@@ -1,4 +1,4 @@
-$NetBSD: TODO.smpnet,v 1.44 2021/08/09 19:24:33 andvar Exp $
+$NetBSD: TODO.smpnet,v 1.45 2021/12/31 00:57:12 riastradh Exp $
MP-safe components
==================
@@ -261,14 +261,10 @@ avoid performance degradation by lock co
IFF_UP and IFF_OACTIVE flags of if_flags are checked on packet processing. If
you make a driver MP-safe you must remove such checks.
-IFF_ALLMULTI can be set/unset via if_mcast_op. To protect updates of the flag,
-we had added IFNET_LOCK around if_mcast_op. However that was not a good
-approach because if_mcast_op is typically called in the middle of a call path
-and holding IFNET_LOCK such places is problematic. Actually a deadlock is
-observed. Probably we should remove IFNET_LOCK and manage IFF_ALLMULTI
-somewhere other than if_flags, for example ethercom or driver itself (or a
-common driver framework once it appears). Such a change is feasible because
-IFF_ALLMULTI is only set/unset by a driver and not accessed from any common
-components such as network protocols.
+Drivers should not touch IFF_ALLMULTI. They are tempted to do so when updating
+hardware multicast filters on SIOCADDMULTI/SIOCDELMULTI. Instead, they should
+use the ETHER_F_ALLMULTI bit in struct ethercom::ec_flags, under ETHER_LOCK.
+ether_ioctl takes care of presenting IFF_ALLMULTI according to the current state
+of ETHER_F_ALLMULTI when queried with SIOCGIFFLAGS.
Also IFF_PROMISC is checked in ether_input and we should get rid of it somehow.