linux/Documentation/networking
Vladimir Oltean b117e1e8a8 net: dsa: delete dsa_legacy_fdb_add and dsa_legacy_fdb_del
We want to add reference counting for FDB entries in cross-chip
topologies, and in order for that to have any chance of working and not
be unbalanced (leading to entries which are never deleted), we need to
ensure that higher layers are sane, because if they aren't, it's garbage
in, garbage out.

For example, if we add a bridge FDB entry twice, the bridge properly
errors out:

$ bridge fdb add dev swp0 00:01:02:03:04:07 master static
$ bridge fdb add dev swp0 00:01:02:03:04:07 master static
RTNETLINK answers: File exists

However, the same thing cannot be said about the bridge bypass
operations:

$ bridge fdb add dev swp0 00:01:02:03:04:07
$ bridge fdb add dev swp0 00:01:02:03:04:07
$ bridge fdb add dev swp0 00:01:02:03:04:07
$ bridge fdb add dev swp0 00:01:02:03:04:07
$ echo $?
0

But one 'bridge fdb del' is enough to remove the entry, no matter how
many times it was added.

The bridge bypass operations are impossible to maintain in these
circumstances and lack of support for reference counting the cross-chip
notifiers is holding us back from making further progress, so just drop
support for them. The only way left for users to install static bridge
FDB entries is the proper one, using the "master static" flags.

With this change, rtnl_fdb_add() falls back to calling
ndo_dflt_fdb_add() which uses the duplicate-exclusive variant of
dev_uc_add(): dev_uc_add_excl(). Because DSA does not (yet) declare
IFF_UNICAST_FLT, this results in us going to promiscuous mode:

$ bridge fdb add dev swp0 00:01:02:03:04:05
[   28.206743] device swp0 entered promiscuous mode
$ bridge fdb add dev swp0 00:01:02:03:04:05
RTNETLINK answers: File exists

So even if it does not completely fail, there is at least some indication
that it is behaving differently from before, and closer to user space
expectations, I would argue (the lack of a "local|static" specifier
defaults to "local", or "host-only", so dev_uc_add() is a reasonable
default implementation). If the generic implementation of .ndo_fdb_add
provided by Vlad Yasevich is a proof of anything, it only proves that
the implementation provided by DSA was always wrong, by not looking at
"ndm->ndm_state & NUD_NOARP" (the "static" flag which means that the FDB
entry points outwards) and "ndm->ndm_state & NUD_PERMANENT" (the "local"
flag which means that the FDB entry points towards the host). It all
used to mean the same thing to DSA.

Update the documentation so that the users are not confused about what's
going on.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-06-29 10:46:23 -07:00
..
caif tty_port: drop last traces of low_latency 2021-01-07 16:17:32 +01:00
device_drivers gve: Update GVE documentation to describe DQO 2021-06-24 12:47:37 -07:00
devlink documentation: networking: devlink: fix prestera.rst formatting that causes build warnings 2021-06-17 11:22:46 -07:00
dsa net: dsa: delete dsa_legacy_fdb_add and dsa_legacy_fdb_del 2021-06-29 10:46:23 -07:00
mac80211_hwsim
6lowpan.rst
6pack.rst
af_xdp.rst docs, af_xdp: Consistent indentation in examples 2021-06-23 09:54:40 +02:00
alias.rst
arcnet-hardware.rst docs: networking: arcnet-hardware.rst: don't duplicate chapter names 2020-05-01 12:24:43 -07:00
arcnet.rst Documentation: networking: arcnet: drop doubled word 2020-07-04 17:46:21 -07:00
atm.rst
ax25.rst Documentation: networking: ax25: drop doubled word 2020-07-04 17:46:21 -07:00
bareudp.rst Documentation: bareudp: Corrected description of bareudp module. 2020-07-28 17:53:03 -07:00
batman-adv.rst batman-adv: Fix typos and grammar in documentation 2020-06-26 10:36:30 +02:00
bonding.rst docs: networking: bonding.rst Fix a typo in bonding.rst 2021-03-01 13:53:21 -08:00
bridge.rst
can_ucan_protocol.rst Documentation: networking: can_ucan_protocol: drop doubled words 2020-07-04 17:46:21 -07:00
can.rst can: add a note that RECV_OWN_MSGS frames are subject to filtering 2021-04-24 14:36:51 +02:00
cdc_mbim.rst
checksum-offloads.rst
dccp.rst net: dccp: Add SIOCOUTQ IOCTL support (send buffer fill) 2020-07-22 17:00:37 -07:00
dctcp.rst
decnet.rst
dns_resolver.rst
driver.rst
eql.rst
ethtool-netlink.rst ethtool: Document behavior when module EEPROM bank attribute is omitted 2021-06-22 10:40:54 -07:00
failover.rst
fib_trie.rst
filter.rst bpf, docs: Fix literal block for example code 2021-04-27 17:31:09 +02:00
gen_stats.rst
generic_netlink.rst
generic-hdlc.rst
gtp.rst
ieee802154.rst docs: net: ieee802154.rst: fix C expressions 2020-10-15 07:49:41 +02:00
ila.rst
index.rst Documentation: net: Document resilient next-hop groups 2021-03-29 13:51:38 -07:00
ip_dynaddr.rst
ip-sysctl.rst sctp: send the next probe immediately once the last one is acked 2021-06-24 12:58:03 -07:00
ipddp.rst
ipsec.rst
ipv6.rst
ipvlan.rst
ipvs-sysctl.rst Documentation: networking: ipvs-sysctl: drop doubled word 2020-07-04 17:46:21 -07:00
j1939.rst can: j1939: add tables for the CAN identifier and its fields 2020-11-20 09:43:29 +01:00
kapi.rst wimax: move out to staging 2020-10-29 19:27:45 +01:00
kcm.rst
l2tp.rst docs: networking: add tracepoint info to l2tp.rst 2020-08-22 12:44:37 -07:00
lapb-module.rst
mac80211-auth-assoc-deauth.txt
mac80211-injection.rst doc: networking: wireless: fix wiki website url 2020-06-08 10:05:53 +02:00
mpls-sysctl.rst
mptcp-sysctl.rst mptcp: add sysctl allow_join_initial_addr_port 2021-06-22 14:36:01 -07:00
msg_zerocopy.rst
multiqueue.rst
net_dim.rst
net_failover.rst
netconsole.rst
netdev-FAQ.rst docs: networking: drop special stable handling 2021-03-03 08:49:08 -08:00
netdev-features.rst net: hsr: add offloading support 2021-02-11 13:24:44 -08:00
netdevices.rst docs: net: explain struct net_device lifetime 2021-01-08 19:27:41 -08:00
netfilter-sysctl.rst
netif-msg.rst
nexthop-group-resilient.rst Documentation: net: Document resilient next-hop groups 2021-03-29 13:51:38 -07:00
nf_conntrack-sysctl.rst docs: networking: Update connection tracking offload sysctl parameters 2021-06-19 00:00:17 +02:00
nf_flowtable.rst docs: nf_flowtable: fix compilation and warnings 2021-03-25 17:42:02 -07:00
nfc.rst
openvswitch.rst
operstates.rst
packet_mmap.rst docs: networking: packet_mmap: fix old config reference 2021-01-04 13:21:46 -08:00
page_pool.rst net: page_pool: Add page_pool_put_page_bulk() to page_pool.rst 2020-11-24 14:56:54 -08:00
phonet.rst
phy.rst net: phy: Add 25G BASE-R interface mode 2021-06-12 13:08:57 -07:00
pktgen.rst
plip.rst
ppp_generic.rst docs: update ppp_generic.rst to document new ioctls 2020-12-10 13:57:36 -08:00
proc_net_tcp.rst
radiotap-headers.rst
rds.rst
regulatory.rst doc: networking: wireless: fix wiki website url 2020-06-08 10:05:53 +02:00
rxrpc.rst Documentation: networking: rxrpc: drop doubled word 2020-07-04 17:46:21 -07:00
scaling.rst docs: networking: update XPS to account for netif_set_xps_queue 2020-10-13 16:21:54 -07:00
sctp.rst docs: networking: convert sctp.txt to ReST 2020-04-30 12:56:38 -07:00
secid.rst docs: networking: convert secid.txt to ReST 2020-04-30 12:56:38 -07:00
seg6-sysctl.rst doc: move seg6_flowlabel to seg6-sysctl.rst 2021-04-14 13:13:15 -07:00
segmentation-offloads.rst
sfp-phylink.rst net: mdio: Remove of_phy_attach() 2021-02-17 13:17:49 -08:00
snmp_counter.rst net-next: docs: Fix typos in snmp_counter.rst 2021-01-05 17:07:38 -08:00
statistics.rst docs: networking: extend the statistics documentation 2021-04-16 16:59:20 -07:00
strparser.rst docs: networking: convert strparser.txt to ReST 2020-04-30 12:56:38 -07:00
switchdev.rst Documentation: networking: switchdev: add missing "and" word 2021-03-17 12:34:34 -07:00
sysfs-tagging.rst Documentation: better locations for sysfs-pci, sysfs-tagging 2020-10-09 09:33:23 -06:00
tc-actions-env-rules.rst docs: networking: convert tc-actions-env-rules.txt to ReST 2020-04-30 12:56:38 -07:00
tcp-thin.rst docs: networking: convert tcp-thin.txt to ReST 2020-04-30 12:56:38 -07:00
team.rst docs: networking: convert team.txt to ReST 2020-04-30 12:56:38 -07:00
timestamping.rst docs: networking: timestamping: update for DSA switches 2021-04-27 14:10:15 -07:00
tipc.rst net/tipc: add TIPC chapter to networking Documentation 2020-12-01 15:38:39 -08:00
tls-offload-layers.svg
tls-offload-reorder-bad.svg
tls-offload-reorder-good.svg
tls-offload.rst net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled 2021-01-19 15:58:05 -08:00
tls.rst
tproxy.rst docs: networking: convert tproxy.txt to ReST 2020-04-30 12:56:38 -07:00
tuntap.rst docs: networking: convert tuntap.txt to ReST 2020-05-01 12:24:40 -07:00
udplite.rst docs: networking: convert udplite.txt to ReST 2020-05-01 12:24:40 -07:00
vrf.rst docs: networking: convert vrf.txt to ReST 2020-05-01 12:24:40 -07:00
vxlan.rst docs: vxlan: add info about device features 2020-09-28 12:50:12 -07:00
x25-iface.rst net: x25: Queue received packets in the drivers instead of per-CPU queues 2021-04-05 11:42:12 -07:00
x25.rst net: x25: Remove unimplemented X.25-over-LLC code stubs 2020-12-12 17:15:33 -08:00
xfrm_device.rst docs: networking: Fix a typo 2021-03-20 19:02:42 -07:00
xfrm_proc.rst docs: networking: convert xfrm_proc.txt to ReST 2020-05-01 12:24:40 -07:00
xfrm_sync.rst docs: networking: convert xfrm_sync.txt to ReST 2020-05-01 12:24:41 -07:00
xfrm_sysctl.rst docs: networking: convert xfrm_sysctl.txt to ReST 2020-05-01 12:24:41 -07:00