/* * Copyright (C) 2014 Renesas Electronics Corporation * Copyright 2013 Ideas On Board SPRL * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #ifndef __DT_BINDINGS_CLOCK_R8A7794_H__ #define __DT_BINDINGS_CLOCK_R8A7794_H__ /* CPG */ #define R8A7794_CLK_MAIN 0 #define R8A7794_CLK_PLL0 1 #define R8A7794_CLK_PLL1 2 #define R8A7794_CLK_PLL3 3 #define R8A7794_CLK_LB 4 #define R8A7794_CLK_QSPI 5 #define R8A7794_CLK_SDH 6 #define R8A7794_CLK_SD0 7 #define R8A7794_CLK_RCAN 8 /* MSTP0 */ #define R8A7794_CLK_MSIOF0 0 /* MSTP1 */ #define R8A7794_CLK_VCP0 1 #define R8A7794_CLK_VPC0 3 #define R8A7794_CLK_TMU1 11 #define R8A7794_CLK_3DG 12 #define R8A7794_CLK_2DDMAC 15 #define R8A7794_CLK_FDP1_0 19 #define R8A7794_CLK_TMU3 21 #define R8A7794_CLK_TMU2 22 #define R8A7794_CLK_CMT0 24 #define R8A7794_CLK_TMU0 25 #define R8A7794_CLK_VSP1_DU0 28 #define R8A7794_CLK_VSP1_S 31 /* MSTP2 */ #define R8A7794_CLK_SCIFA2 2 #define R8A7794_CLK_SCIFA1 3 #define R8A7794_CLK_SCIFA0 4 #define R8A7794_CLK_MSIOF2 5 #define R8A7794_CLK_SCIFB0 6 #define R8A7794_CLK_SCIFB1 7 #define R8A7794_CLK_MSIOF1 8 #define R8A7794_CLK_SCIFB2 16 #define R8A7794_CLK_SYS_DMAC1 18 #define R8A7794_CLK_SYS_DMAC0 19 /* MSTP3 */ #define R8A7794_CLK_SDHI2 11 #define R8A7794_CLK_SDHI1 12 #define R8A7794_CLK_SDHI0 14 #define R8A7794_CLK_MMCIF0 15 #define R8A7794_CLK_IIC0 18 #define R8A7794_CLK_IIC1 23 #define R8A7794_CLK_CMT1 29 #define R8A7794_CLK_USBDMAC0 30 #define R8A7794_CLK_USBDMAC1 31 /* MSTP4 */ #define R8A7794_CLK_IRQC 7 /* MSTP5 */ #define R8A7794_CLK_AUDIO_DMAC0 2 #define R8A7794_CLK_PWM 23 /* MSTP7 */ #define R8A7794_CLK_EHCI 3 #define R8A7794_CLK_HSUSB 4 #define R8A7794_CLK_HSCIF2 13 #define R8A7794_CLK_SCIF5 14 #define R8A7794_CLK_SCIF4 15 #define R8A7794_CLK_HSCIF1 16 #define R8A7794_CLK_HSCIF0 17 #define R8A7794_CLK_SCIF3 18 #define R8A7794_CLK_SCIF2 19 #define R8A7794_CLK_SCIF1 20 #define R8A7794_CLK_SCIF0 21 #define R8A7794_CLK_DU0 24 /* MSTP8 */ #define R8A7794_CLK_VIN1 10 #define R8A7794_CLK_VIN0 11 #define R8A7794_CLK_ETHERAVB 12 #define R8A7794_CLK_ETHER 13 /* MSTP9 */ #define R8A7794_CLK_GPIO6 5 #define R8A7794_CLK_GPIO5 7 #define R8A7794_CLK_GPIO4 8 #define R8A7794_CLK_GPIO3 9 #define R8A7794_CLK_GPIO2 10 #define R8A7794_CLK_GPIO1 11 #define R8A7794_CLK_GPIO0 12 #define R8A7794_CLK_RCAN1 15 #define R8A7794_CLK_RCAN0 16 #define R8A7794_CLK_QSPI_MOD 17 #define R8A7794_CLK_I2C5 25 #define R8A7794_CLK_I2C4 27 #define R8A7794_CLK_I2C3 28 #define R8A7794_CLK_I2C2 29 #define R8A7794_CLK_I2C1 30 #define R8A7794_CLK_I2C0 31 /* MSTP10 */ #define R8A7794_CLK_SSI_ALL 5 #define R8A7794_CLK_SSI9 6 #define R8A7794_CLK_SSI8 7 #define R8A7794_CLK_SSI7 8 #define R8A7794_CLK_SSI6 9 #define R8A7794_CLK_SSI5 10 #define R8A7794_CLK_SSI4 11 #define R8A7794_CLK_SSI3 12 #define R8A7794_CLK_SSI2 13 #define R8A7794_CLK_SSI1 14 #define R8A7794_CLK_SSI0 15 #define R8A7794_CLK_SCU_ALL 17 #define R8A7794_CLK_SCU_DVC1 18 #define R8A7794_CLK_SCU_DVC0 19 #define R8A7794_CLK_SCU_CTU1_MIX1 20 #define R8A7794_CLK_SCU_CTU0_MIX0 21 #define R8A7794_CLK_SCU_SRC6 25 #define R8A7794_CLK_SCU_SRC5 26 #define R8A7794_CLK_SCU_SRC4 27 #define R8A7794_CLK_SCU_SRC3 28 #define R8A7794_CLK_SCU_SRC2 29 #define R8A7794_CLK_SCU_SRC1 30 /* MSTP11 */ #define R8A7794_CLK_SCIFA3 6 #define R8A7794_CLK_SCIFA4 7 #define R8A7794_CLK_SCIFA5 8 #endif /* __DT_BINDINGS_CLOCK_R8A7794_H__ */ option value='40'>40space:mode:
authorDavid S. Miller <davem@davemloft.net>2017-02-04 19:58:15 -0500
committerDavid S. Miller <davem@davemloft.net>2017-02-04 19:58:15 -0500
commit3976001c9db0354a0bcbd77e324fdf1bc04e110f (patch)
tree5e2e9be5223153c8b367c66ad4d01ae821591a9c /include/net
parent4d6308aac3258ecad8444811a16951a919adc131 (diff)
parent7d4d5065ecb0cea9c5815d5e0df5fb586c5ee9b5 (diff)
Merge branch 'ipv6-Improve-user-experience-with-multipath-routes'
David Ahern says: ==================== net: ipv6: Improve user experience with multipath routes This series closes a couple of gaps between IPv4 and IPv6 with respect to multipath routes: 1. IPv4 allows all nexthops of multipath routes to be deleted using just the prefix and length; IPv6 only deletes the first nexthop for the route if only the prefix and length are given. 2. IPv4 returns multipath routes encoded in the RTA_MULTIPATH attribute. IPv6 returns a series of routes with the same prefix and length - one for each nexthop. This happens for both dumps and notifications. IPv6 does accept RTA_MULTIPATH encoded routes, but installs them as a series of routes. Patch 1 addresses the first item by allowing IPv6 multipath routes to be deleted using just the prefix and length. Patch 2 addresses the second allowing IPv6 multipath routes to be returned encoded in the RTA_MULTIPATH. Patches 3 and 4 upate the RTM_{NEW,DEL}ROUTE notifications to generate 1 notification with RTA_MULTIPATH where applicable. Patch 5 prints IPv6 addresses in compressed format when showing route replace errors. This was noticed testing REPLACE failures. The end result for multipath routes: 1. Dump - RTA_MULTIPATH used for multipath routes $ ip -6 ro ls vrf red 2001:db8:1::/120 dev eth1 proto kernel metric 256 pref medium 2001:db8:2::/120 dev eth2 proto kernel metric 256 pref medium 2001:db8:200::/120 metric 1024 nexthop via 2001:db8:1::2 dev eth1 weight 1 nexthop via 2001:db8:2::2 dev eth2 weight 1 ... 2. Route Add - one notification with RTA_MULTIPATH attribute $ ip -6 ro add vrf red 2001:db8:200::/120 nexthop via 2001:db8:1::2 nexthop via 2001:db8:2::2 $ ip mon route 2001:db8:200::/120 table red metric 1024 nexthop via 2001:db8:1::2 dev eth1 weight 1 nexthop via 2001:db8:2::2 dev eth2 weight 1 2. Route Replace - one notification with RTA_MULTIPATH attribute $ ip -6 ro replace vrf red 2001:db8:200::/120 nexthop via 2001:db8:1::16 nexthop via 2001:db8:2::16 $ ip mon route Replaced 2001:db8:200::/120 table red metric 1024 nexthop via 2001:db8:1::16 dev eth1 weight 1 nexthop via 2001:db8:2::16 dev eth2 weight 1 - on a failure after the insertion of the first nexthop (which means the original route has been replaced in the FIB), a notification is sent with the successful nexthops and then the nexthops are deleted with one notification per hop. This is consistent with how it works today except the successful additions are coalesced into 1 notification. 3. Route Delete - delete of entire multipath route using prefix/length only 1 notification is generated: $ ip -6 ro del vrf red 2001:db8:200::/120 $ ip mon route Deleted 2001:db8:200::/120 table red metric 1024 nexthop via 2001:db8:1::16 dev eth1 weight 1 nexthop via 2001:db8:2::16 dev eth2 weight 1 - if a delete request contains nexthops one notification is generated per nexthop deleted. This is unavoidable since IPv6 alllows a single nexthop to be deleted within a multipath route 4. Route Appends - IPv6 allows nexthops to be appended to an existing route. In this case one notification is sent for the new route with the append flag set. $ ip -6 ro append vrf red 2001:db8:200::/120 nexthop via 2001:db8:2::20 nexthop via 2001:db8:1::20 $ ip mon route Append 2001:db8:200::/120 table red metric 1024 nexthop via 2001:db8:1::2 dev eth1 weight 1 nexthop via 2001:db8:2::2 dev eth2 weight 1 nexthop via 2001:db8:2::20 dev eth2 weight 1 nexthop via 2001:db8:1::20 dev eth1 weight 1 - on failure of an append, a notification is sent with the route containing all of the nexthops successfully added, and it is followed by delete notifications as the hops are removed returning the route to its prior state. This is consistent with how it works today except the successful additions are coalesced into 1 notification. Addresses some of the inconsistencies also noted by Roopa at netdev0.1: https://www.netdev01.org/docs/prabhu-linux_ipv4_ipv6_inconsistencies_talk_slides.pdf v4 - changed series to do encoding in 1 patch and updating notificatons in separate patches to make it easier to review and understand - 1 notification for delete when using prefix/length; 1 notification for append - handle delete of a single nexthop without RTA_MULTIPATH in delete request - upated commit messages and cover letter v3 - removed the need for a user API to opt-in to change. Requiring an API just shifts the difference from same API with different behavior to different API to achieve equivalent behavior - route notifications changed to use RTA_MULTIPATH for add and replace - upated commit messages and cover letter v2 - fixed locking in patch 1 as noted by DaveM - changed user API for patch 2 to require an rtmsg with RTM_F_ALL_NEXTHOPS set in rtm_flags - revamped explanation of patch 2 and cover letter ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/ip6_fib.h4
-rw-r--r--include/net/netlink.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h