diff options
| author | David S. Miller <davem@davemloft.net> | 2016-07-05 12:06:31 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-07-05 12:06:31 -0400 |
| commit | 684a95c064fc63e48c9936fe3d9dfd5ed1ea3b95 (patch) | |
| tree | ba05255580a6015aedcaeaff05ba70d8413cdc5d /include | |
| parent | 9046a745e29aa4c7e4f1dda3a50199dbe62fc9e8 (diff) | |
| parent | 0b2361d9d946558c90f0ae8b21725022bea9f2cb (diff) | |
Merge branch 'mlxsw-ipv4-unicast-routing'
Jiri Pirko says:
====================
mlxsw: Implement IPV4 unicast routing
This patchset enables IPv4 unicast routing in the Mellanox Spectrum ASIC
switch driver. This builds upon the work that was done by a couple of
previous patchsets.
Patches 1,2,6 add a couple of dependencies outside the driver. Namely, the
ability to propagate ndo_neigh_construct()/destroy() through stacked devices and
a notification whenever DELAY_PROBE_TIME changes. When propagated down, the
ndos allow drivers to add and remove neighbour entries from their private
neighbour table. The DELAY_PROBE_TIME notification gives drivers the ability to
correctly configure their polling interval for neighbour activity, so that
active neighbour won't be marked as STALE.
Patches 3-5,7-8 add the neighbour offloading infrastructure, where patch 7 uses
the DELAY_PROBE_TIME notification in order to correctly configure the device's
polling interval. Patch 8 finally programs neighbours to the device's table
based on NEIGH_UPDATE notifications, so that directly connected routes can
be used.
Patches 9-16 build upon the previous patches and extend the router with
remote routes (nexthop) support.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/netdevice.h | 10 | ||||
| -rw-r--r-- | include/net/netevent.h | 1 |
2 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 0c6ee2c5099f..49736a31acaa 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -1209,8 +1209,10 @@ struct net_device_ops { | |||
| 1209 | netdev_features_t features); | 1209 | netdev_features_t features); |
| 1210 | int (*ndo_set_features)(struct net_device *dev, | 1210 | int (*ndo_set_features)(struct net_device *dev, |
| 1211 | netdev_features_t features); | 1211 | netdev_features_t features); |
| 1212 | int (*ndo_neigh_construct)(struct neighbour *n); | 1212 | int (*ndo_neigh_construct)(struct net_device *dev, |
| 1213 | void (*ndo_neigh_destroy)(struct neighbour *n); | 1213 | struct neighbour *n); |
| 1214 | void (*ndo_neigh_destroy)(struct net_device *dev, | ||
| 1215 | struct neighbour *n); | ||
| 1214 | 1216 | ||
| 1215 | int (*ndo_fdb_add)(struct ndmsg *ndm, | 1217 | int (*ndo_fdb_add)(struct ndmsg *ndm, |
| 1216 | struct nlattr *tb[], | 1218 | struct nlattr *tb[], |
| @@ -3843,6 +3845,10 @@ void *netdev_lower_dev_get_private(struct net_device *dev, | |||
| 3843 | struct net_device *lower_dev); | 3845 | struct net_device *lower_dev); |
| 3844 | void netdev_lower_state_changed(struct net_device *lower_dev, | 3846 | void netdev_lower_state_changed(struct net_device *lower_dev, |
| 3845 | void *lower_state_info); | 3847 | void *lower_state_info); |
| 3848 | int netdev_default_l2upper_neigh_construct(struct net_device *dev, | ||
| 3849 | struct neighbour *n); | ||
| 3850 | void netdev_default_l2upper_neigh_destroy(struct net_device *dev, | ||
| 3851 | struct neighbour *n); | ||
| 3846 | 3852 | ||
| 3847 | /* RSS keys are 40 or 52 bytes long */ | 3853 | /* RSS keys are 40 or 52 bytes long */ |
| 3848 | #define NETDEV_RSS_KEY_LEN 52 | 3854 | #define NETDEV_RSS_KEY_LEN 52 |
diff --git a/include/net/netevent.h b/include/net/netevent.h index d8bbb38584b6..f440df172b56 100644 --- a/include/net/netevent.h +++ b/include/net/netevent.h | |||
| @@ -24,6 +24,7 @@ struct netevent_redirect { | |||
| 24 | enum netevent_notif_type { | 24 | enum netevent_notif_type { |
| 25 | NETEVENT_NEIGH_UPDATE = 1, /* arg is struct neighbour ptr */ | 25 | NETEVENT_NEIGH_UPDATE = 1, /* arg is struct neighbour ptr */ |
| 26 | NETEVENT_REDIRECT, /* arg is struct netevent_redirect ptr */ | 26 | NETEVENT_REDIRECT, /* arg is struct netevent_redirect ptr */ |
| 27 | NETEVENT_DELAY_PROBE_TIME_UPDATE, /* arg is struct neigh_parms ptr */ | ||
| 27 | }; | 28 | }; |
| 28 | 29 | ||
| 29 | int register_netevent_notifier(struct notifier_block *nb); | 30 | int register_netevent_notifier(struct notifier_block *nb); |
