--- zzzz-none-000/linux-4.4.271/net/core/rtnetlink.c 2021-06-03 06:22:09.000000000 +0000 +++ hawkeye-5590-750/linux-4.4.271/net/core/rtnetlink.c 2023-04-19 10:22:30.000000000 +0000 @@ -63,6 +63,45 @@ rtnl_calcit_func calcit; }; +#if IS_ENABLED(CONFIG_AVM_RTNETLINK_ENHANCEMENT) +static DECLARE_RWSEM(rtnl_offload_rwsem); + +void rtnl_offload_read_lock(void) +{ + down_read(&rtnl_offload_rwsem); +} +EXPORT_SYMBOL(rtnl_offload_read_lock); + +void rtnl_offload_read_unlock(void) +{ + up_read(&rtnl_offload_rwsem); +} +EXPORT_SYMBOL(rtnl_offload_read_unlock); + + +void rtnl_offload_write_lock(void) +{ + down_write(&rtnl_offload_rwsem); +} +EXPORT_SYMBOL(rtnl_offload_write_lock); + +void rtnl_offload_write_unlock(void) +{ + up_write(&rtnl_offload_rwsem); +} +EXPORT_SYMBOL(rtnl_offload_write_unlock); + +void (*wait_for_link_to_offload_cpu_hook)(void) = NULL; +EXPORT_SYMBOL(wait_for_link_to_offload_cpu_hook); + +void wait_for_link_to_offload_cpu(void){ + if(wait_for_link_to_offload_cpu_hook != NULL) + wait_for_link_to_offload_cpu_hook(); +} +#endif /* CONFIG_AVM_RTNETLINK_ENHANCEMENT */ + +// --------------------------------- + static DEFINE_MUTEX(rtnl_mutex); void rtnl_lock(void) @@ -2949,7 +2988,7 @@ int err; if (dev->type != ARPHRD_ETHER) - return -EINVAL; + return idx; netif_addr_lock_bh(dev); err = nlmsg_populate_fdb(skb, cb, dev, &idx, &dev->uc);