Commit 03d5fb18 authored by Vivien Didelot's avatar Vivien Didelot Committed by David S. Miller

net: switchdev: remove dev from switchdev_obj cb

The net_device associated to a dump operation does not have to be passed
to the callback. switchdev stores it in a superset struct, if needed.

Also some drivers (such as DSA drivers) may not have easy access to it.

This will simplify pushing the callback function down to the drivers.
Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e02a06b2
...@@ -4556,7 +4556,7 @@ static int rocker_port_fdb_dump(const struct rocker_port *rocker_port, ...@@ -4556,7 +4556,7 @@ static int rocker_port_fdb_dump(const struct rocker_port *rocker_port,
fdb->ndm_state = NUD_REACHABLE; fdb->ndm_state = NUD_REACHABLE;
fdb->vid = rocker_port_vlan_to_vid(rocker_port, fdb->vid = rocker_port_vlan_to_vid(rocker_port,
found->key.vlan_id); found->key.vlan_id);
err = obj->cb(rocker_port->dev, obj); err = obj->cb(obj);
if (err) if (err)
break; break;
} }
...@@ -4579,7 +4579,7 @@ static int rocker_port_vlan_dump(const struct rocker_port *rocker_port, ...@@ -4579,7 +4579,7 @@ static int rocker_port_vlan_dump(const struct rocker_port *rocker_port,
if (rocker_vlan_id_is_internal(htons(vid))) if (rocker_vlan_id_is_internal(htons(vid)))
vlan->flags |= BRIDGE_VLAN_INFO_PVID; vlan->flags |= BRIDGE_VLAN_INFO_PVID;
vlan->vid_begin = vlan->vid_end = vid; vlan->vid_begin = vlan->vid_end = vid;
err = obj->cb(rocker_port->dev, obj); err = obj->cb(obj);
if (err) if (err)
break; break;
} }
......
...@@ -66,7 +66,7 @@ enum switchdev_obj_id { ...@@ -66,7 +66,7 @@ enum switchdev_obj_id {
struct switchdev_obj { struct switchdev_obj {
enum switchdev_obj_id id; enum switchdev_obj_id id;
int (*cb)(struct net_device *dev, struct switchdev_obj *obj); int (*cb)(struct switchdev_obj *obj);
union { union {
struct switchdev_obj_vlan { /* PORT_VLAN */ struct switchdev_obj_vlan { /* PORT_VLAN */
u16 flags; u16 flags;
......
...@@ -334,7 +334,7 @@ static int dsa_slave_port_vlan_dump(struct net_device *dev, ...@@ -334,7 +334,7 @@ static int dsa_slave_port_vlan_dump(struct net_device *dev,
if (test_bit(p->port, untagged)) if (test_bit(p->port, untagged))
vlan->flags |= BRIDGE_VLAN_INFO_UNTAGGED; vlan->flags |= BRIDGE_VLAN_INFO_UNTAGGED;
err = obj->cb(dev, obj); err = obj->cb(obj);
if (err) if (err)
break; break;
} }
...@@ -397,7 +397,7 @@ static int dsa_slave_port_fdb_dump(struct net_device *dev, ...@@ -397,7 +397,7 @@ static int dsa_slave_port_fdb_dump(struct net_device *dev,
obj->u.fdb.vid = vid; obj->u.fdb.vid = vid;
obj->u.fdb.ndm_state = is_static ? NUD_NOARP : NUD_REACHABLE; obj->u.fdb.ndm_state = is_static ? NUD_NOARP : NUD_REACHABLE;
ret = obj->cb(dev, obj); ret = obj->cb(obj);
if (ret < 0) if (ret < 0)
break; break;
} }
......
...@@ -514,8 +514,7 @@ static int switchdev_port_vlan_dump_put(struct switchdev_vlan_dump *dump) ...@@ -514,8 +514,7 @@ static int switchdev_port_vlan_dump_put(struct switchdev_vlan_dump *dump)
return 0; return 0;
} }
static int switchdev_port_vlan_dump_cb(struct net_device *dev, static int switchdev_port_vlan_dump_cb(struct switchdev_obj *obj)
struct switchdev_obj *obj)
{ {
struct switchdev_vlan_dump *dump = struct switchdev_vlan_dump *dump =
container_of(obj, struct switchdev_vlan_dump, obj); container_of(obj, struct switchdev_vlan_dump, obj);
...@@ -864,8 +863,7 @@ struct switchdev_fdb_dump { ...@@ -864,8 +863,7 @@ struct switchdev_fdb_dump {
int idx; int idx;
}; };
static int switchdev_port_fdb_dump_cb(struct net_device *dev, static int switchdev_port_fdb_dump_cb(struct switchdev_obj *obj)
struct switchdev_obj *obj)
{ {
struct switchdev_fdb_dump *dump = struct switchdev_fdb_dump *dump =
container_of(obj, struct switchdev_fdb_dump, obj); container_of(obj, struct switchdev_fdb_dump, obj);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment