Commit fd41b0ea authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller

doc: update switchdev L3 section

This is to reflect the change of FIB offload infrastructure from
switchdev objects to FIB notifier.
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Reviewed-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 347e3b28
...@@ -314,30 +314,29 @@ the kernel, with the device doing the FIB lookup and forwarding. The device ...@@ -314,30 +314,29 @@ the kernel, with the device doing the FIB lookup and forwarding. The device
does a longest prefix match (LPM) on FIB entries matching route prefix and does a longest prefix match (LPM) on FIB entries matching route prefix and
forwards the packet to the matching FIB entry's nexthop(s) egress ports. forwards the packet to the matching FIB entry's nexthop(s) egress ports.
To program the device, the driver implements support for To program the device, the driver has to register a FIB notifier handler
SWITCHDEV_OBJ_IPV[4|6]_FIB object using switchdev_port_obj_xxx ops. using register_fib_notifier. The following events are available:
switchdev_port_obj_add is used for both adding a new FIB entry to the device, FIB_EVENT_ENTRY_ADD: used for both adding a new FIB entry to the device,
or modifying an existing entry on the device. or modifying an existing entry on the device.
FIB_EVENT_ENTRY_DEL: used for removing a FIB entry
FIB_EVENT_RULE_ADD, FIB_EVENT_RULE_DEL: used to propagate FIB rule changes
XXX: Currently, only SWITCHDEV_OBJ_ID_IPV4_FIB objects are supported. FIB_EVENT_ENTRY_ADD and FIB_EVENT_ENTRY_DEL events pass:
SWITCHDEV_OBJ_ID_IPV4_FIB object passes: struct fib_entry_notifier_info {
struct fib_notifier_info info; /* must be first */
struct switchdev_obj_ipv4_fib { /* IPV4_FIB */
u32 dst; u32 dst;
int dst_len; int dst_len;
struct fib_info *fi; struct fib_info *fi;
u8 tos; u8 tos;
u8 type; u8 type;
u32 nlflags;
u32 tb_id; u32 tb_id;
} ipv4_fib; u32 nlflags;
};
to add/modify/delete IPv4 dst/dest_len prefix on table tb_id. The *fi to add/modify/delete IPv4 dst/dest_len prefix on table tb_id. The *fi
structure holds details on the route and route's nexthops. *dev is one of the structure holds details on the route and route's nexthops. *dev is one of the
port netdevs mentioned in the routes next hop list. If the output port netdevs port netdevs mentioned in the route's next hop list.
referenced in the route's nexthop list don't all have the same switch ID, the
driver is not called to add/modify/delete the FIB entry.
Routes offloaded to the device are labeled with "offload" in the ip route Routes offloaded to the device are labeled with "offload" in the ip route
listing: listing:
...@@ -355,6 +354,8 @@ listing: ...@@ -355,6 +354,8 @@ listing:
12.0.0.4 via 11.0.0.9 dev sw1p2 proto zebra metric 20 offload 12.0.0.4 via 11.0.0.9 dev sw1p2 proto zebra metric 20 offload
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.15 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.15
The "offload" flag is set in case at least one device offloads the FIB entry.
XXX: add/mod/del IPv6 FIB API XXX: add/mod/del IPv6 FIB API
Nexthop Resolution Nexthop Resolution
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment