aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-07-05 12:06:31 -0400
committerDavid S. Miller <davem@davemloft.net>2016-07-05 12:06:31 -0400
commit684a95c064fc63e48c9936fe3d9dfd5ed1ea3b95 (patch)
treeba05255580a6015aedcaeaff05ba70d8413cdc5d /include
parent9046a745e29aa4c7e4f1dda3a50199dbe62fc9e8 (diff)
parent0b2361d9d946558c90f0ae8b21725022bea9f2cb (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.h10
-rw-r--r--include/net/netevent.h1
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);
3844void netdev_lower_state_changed(struct net_device *lower_dev, 3846void netdev_lower_state_changed(struct net_device *lower_dev,
3845 void *lower_state_info); 3847 void *lower_state_info);
3848int netdev_default_l2upper_neigh_construct(struct net_device *dev,
3849 struct neighbour *n);
3850void 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 {
24enum netevent_notif_type { 24enum 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
29int register_netevent_notifier(struct notifier_block *nb); 30int register_netevent_notifier(struct notifier_block *nb);