mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
net: switchdev: merge switchdev_handle_fdb_{add,del}_to_device
To reduce code churn, the same patch makes multiple changes, since they all touch the same lines: 1. The implementations for these two are identical, just with different function pointers. Reduce duplications and name the function pointers "mod_cb" instead of "add_cb" and "del_cb". Pass the event as argument. 2. Drop the "const" attribute from "orig_dev". If the driver needs to check whether orig_dev belongs to itself and then call_switchdev_notifiers(orig_dev, SWITCHDEV_FDB_OFFLOADED), it can't, because call_switchdev_notifiers takes a non-const struct net_device *. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fab9eca884
commit
716a30a97a
3 changed files with 43 additions and 202 deletions
|
@ -299,28 +299,16 @@ void switchdev_port_fwd_mark_set(struct net_device *dev,
|
|||
struct net_device *group_dev,
|
||||
bool joining);
|
||||
|
||||
int switchdev_handle_fdb_add_to_device(struct net_device *dev,
|
||||
int switchdev_handle_fdb_event_to_device(struct net_device *dev, unsigned long event,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info,
|
||||
bool (*check_cb)(const struct net_device *dev),
|
||||
bool (*foreign_dev_check_cb)(const struct net_device *dev,
|
||||
const struct net_device *foreign_dev),
|
||||
int (*add_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
int (*mod_cb)(struct net_device *dev, struct net_device *orig_dev,
|
||||
unsigned long event, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info),
|
||||
int (*lag_add_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info));
|
||||
|
||||
int switchdev_handle_fdb_del_to_device(struct net_device *dev,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info,
|
||||
bool (*check_cb)(const struct net_device *dev),
|
||||
bool (*foreign_dev_check_cb)(const struct net_device *dev,
|
||||
const struct net_device *foreign_dev),
|
||||
int (*del_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info),
|
||||
int (*lag_del_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
int (*lag_mod_cb)(struct net_device *dev, struct net_device *orig_dev,
|
||||
unsigned long event, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info));
|
||||
|
||||
int switchdev_handle_port_obj_add(struct net_device *dev,
|
||||
|
@ -426,32 +414,16 @@ call_switchdev_blocking_notifiers(unsigned long val,
|
|||
}
|
||||
|
||||
static inline int
|
||||
switchdev_handle_fdb_add_to_device(struct net_device *dev,
|
||||
switchdev_handle_fdb_event_to_device(struct net_device *dev, unsigned long event,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info,
|
||||
bool (*check_cb)(const struct net_device *dev),
|
||||
bool (*foreign_dev_check_cb)(const struct net_device *dev,
|
||||
const struct net_device *foreign_dev),
|
||||
int (*add_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
int (*mod_cb)(struct net_device *dev, struct net_device *orig_dev,
|
||||
unsigned long event, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info),
|
||||
int (*lag_add_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
switchdev_handle_fdb_del_to_device(struct net_device *dev,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info,
|
||||
bool (*check_cb)(const struct net_device *dev),
|
||||
bool (*foreign_dev_check_cb)(const struct net_device *dev,
|
||||
const struct net_device *foreign_dev),
|
||||
int (*del_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info),
|
||||
int (*lag_del_cb)(struct net_device *dev,
|
||||
const struct net_device *orig_dev, const void *ctx,
|
||||
int (*lag_mod_cb)(struct net_device *dev, struct net_device *orig_dev,
|
||||
unsigned long event, const void *ctx,
|
||||
const struct switchdev_notifier_fdb_info *fdb_info))
|
||||
{
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue