aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/rocker
diff options
context:
space:
mode:
authorScott Feldman <sfeldma@gmail.com>2015-05-10 09:48:06 -0700
committerDavid S. Miller <davem@davemloft.net>2015-05-12 18:43:55 -0400
commit58c2cb16b116d7feace621bd6b647bbabacfa225 (patch)
tree01dba341543ad33607c95eee011fded948a755e0 /drivers/net/ethernet/rocker
parentswitchdev: cut over to new switchdev_port_bridge_getlink (diff)
downloadlinux-dev-58c2cb16b116d7feace621bd6b647bbabacfa225.tar.xz
linux-dev-58c2cb16b116d7feace621bd6b647bbabacfa225.zip
switchdev: convert fib_ipv4_add/del over to switchdev_port_obj_add/del
The IPv4 FIB ops convert nicely to the switchdev objs and we're left with only four switchdev ops: port get/set and port add/del. Other objs will follow, such as FDB. So go ahead and convert IPv4 FIB over to switchdev obj for consistency, anticipating more objs to come. Signed-off-by: Scott Feldman <sfeldma@gmail.com> Acked-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/rocker')
-rw-r--r--drivers/net/ethernet/rocker/rocker.c41
1 files changed, 14 insertions, 27 deletions
diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
index 56ee316db1a1..1c906504cfe2 100644
--- a/drivers/net/ethernet/rocker/rocker.c
+++ b/drivers/net/ethernet/rocker/rocker.c
@@ -4449,6 +4449,7 @@ static int rocker_port_obj_add(struct net_device *dev,
struct switchdev_obj *obj)
{
struct rocker_port *rocker_port = netdev_priv(dev);
+ struct switchdev_obj_ipv4_fib *fib4;
int err = 0;
switch (obj->trans) {
@@ -4467,6 +4468,12 @@ static int rocker_port_obj_add(struct net_device *dev,
err = rocker_port_vlans_add(rocker_port, obj->trans,
&obj->vlan);
break;
+ case SWITCHDEV_OBJ_IPV4_FIB:
+ fib4 = &obj->ipv4_fib;
+ err = rocker_port_fib_ipv4(rocker_port, obj->trans,
+ fib4->dst, fib4->dst_len,
+ fib4->fi, fib4->tb_id, 0);
+ break;
default:
err = -EOPNOTSUPP;
break;
@@ -4508,12 +4515,19 @@ static int rocker_port_obj_del(struct net_device *dev,
struct switchdev_obj *obj)
{
struct rocker_port *rocker_port = netdev_priv(dev);
+ struct switchdev_obj_ipv4_fib *fib4;
int err = 0;
switch (obj->id) {
case SWITCHDEV_OBJ_PORT_VLAN:
err = rocker_port_vlans_del(rocker_port, &obj->vlan);
break;
+ case SWITCHDEV_OBJ_IPV4_FIB:
+ fib4 = &obj->ipv4_fib;
+ err = rocker_port_fib_ipv4(rocker_port, SWITCHDEV_TRANS_NONE,
+ fib4->dst, fib4->dst_len, fib4->fi,
+ fib4->tb_id, ROCKER_OP_FLAG_REMOVE);
+ break;
default:
err = -EOPNOTSUPP;
break;
@@ -4522,38 +4536,11 @@ static int rocker_port_obj_del(struct net_device *dev,
return err;
}
-static int rocker_port_switchdev_fib_ipv4_add(struct net_device *dev,
- __be32 dst, int dst_len,
- struct fib_info *fi,
- u8 tos, u8 type,
- u32 nlflags, u32 tb_id)
-{
- struct rocker_port *rocker_port = netdev_priv(dev);
- int flags = 0;
-
- return rocker_port_fib_ipv4(rocker_port, SWITCHDEV_TRANS_NONE,
- dst, dst_len, fi, tb_id, flags);
-}
-
-static int rocker_port_switchdev_fib_ipv4_del(struct net_device *dev,
- __be32 dst, int dst_len,
- struct fib_info *fi,
- u8 tos, u8 type, u32 tb_id)
-{
- struct rocker_port *rocker_port = netdev_priv(dev);
- int flags = ROCKER_OP_FLAG_REMOVE;
-
- return rocker_port_fib_ipv4(rocker_port, SWITCHDEV_TRANS_NONE,
- dst, dst_len, fi, tb_id, flags);
-}
-
static const struct switchdev_ops rocker_port_switchdev_ops = {
.switchdev_port_attr_get = rocker_port_attr_get,
.switchdev_port_attr_set = rocker_port_attr_set,
.switchdev_port_obj_add = rocker_port_obj_add,
.switchdev_port_obj_del = rocker_port_obj_del,
- .switchdev_fib_ipv4_add = rocker_port_switchdev_fib_ipv4_add,
- .switchdev_fib_ipv4_del = rocker_port_switchdev_fib_ipv4_del,
};
/********************