@ -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 ,
} ;
/********************