mirror of
https://github.com/openvswitch/ovs
synced 2025-10-25 15:07:05 +00:00
netdev: Pass 'netdev_class' to ->run() and ->wait().
This will allow run() and wait() methods to be shared between different classes and still perform class-specific work. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
@@ -146,7 +146,7 @@ static void ifr_set_flags(struct ifreq *, int flags);
|
||||
static int af_link_ioctl(unsigned long command, const void *arg);
|
||||
#endif
|
||||
|
||||
static void netdev_bsd_run(void);
|
||||
static void netdev_bsd_run(const struct netdev_class *);
|
||||
static int netdev_bsd_get_mtu(const struct netdev *netdev_, int *mtup);
|
||||
|
||||
static bool
|
||||
@@ -180,7 +180,7 @@ netdev_get_kernel_name(const struct netdev *netdev)
|
||||
* interface status changes, and eventually calls all the user callbacks.
|
||||
*/
|
||||
static void
|
||||
netdev_bsd_run(void)
|
||||
netdev_bsd_run(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
rtbsd_notifier_run();
|
||||
}
|
||||
@@ -190,7 +190,7 @@ netdev_bsd_run(void)
|
||||
* be called.
|
||||
*/
|
||||
static void
|
||||
netdev_bsd_wait(void)
|
||||
netdev_bsd_wait(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
rtbsd_notifier_wait();
|
||||
}
|
||||
|
||||
@@ -622,7 +622,7 @@ dummy_netdev_get_conn_state(struct dummy_packet_conn *conn)
|
||||
}
|
||||
|
||||
static void
|
||||
netdev_dummy_run(void)
|
||||
netdev_dummy_run(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
struct netdev_dummy *dev;
|
||||
|
||||
@@ -636,7 +636,7 @@ netdev_dummy_run(void)
|
||||
}
|
||||
|
||||
static void
|
||||
netdev_dummy_wait(void)
|
||||
netdev_dummy_wait(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
struct netdev_dummy *dev;
|
||||
|
||||
|
||||
@@ -526,7 +526,7 @@ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20);
|
||||
* changes in the device miimon status, so we can use atomic_count. */
|
||||
static atomic_count miimon_cnt = ATOMIC_COUNT_INIT(0);
|
||||
|
||||
static void netdev_linux_run(void);
|
||||
static void netdev_linux_run(const struct netdev_class *);
|
||||
|
||||
static int netdev_linux_do_ethtool(const char *name, struct ethtool_cmd *,
|
||||
int cmd, const char *cmd_name);
|
||||
@@ -623,7 +623,7 @@ netdev_linux_miimon_enabled(void)
|
||||
}
|
||||
|
||||
static void
|
||||
netdev_linux_run(void)
|
||||
netdev_linux_run(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
struct nl_sock *sock;
|
||||
int error;
|
||||
@@ -697,7 +697,7 @@ netdev_linux_run(void)
|
||||
}
|
||||
|
||||
static void
|
||||
netdev_linux_wait(void)
|
||||
netdev_linux_wait(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
struct nl_sock *sock;
|
||||
|
||||
|
||||
@@ -236,15 +236,21 @@ struct netdev_class {
|
||||
int (*init)(void);
|
||||
|
||||
/* Performs periodic work needed by netdevs of this class. May be null if
|
||||
* no periodic work is necessary. */
|
||||
void (*run)(void);
|
||||
* no periodic work is necessary.
|
||||
*
|
||||
* 'netdev_class' points to the class. It is useful in case the same
|
||||
* function is used to implement different classes. */
|
||||
void (*run)(const struct netdev_class *netdev_class);
|
||||
|
||||
/* Arranges for poll_block() to wake up if the "run" member function needs
|
||||
* to be called. Implementations are additionally required to wake
|
||||
* whenever something changes in any of its netdevs which would cause their
|
||||
* ->change_seq() function to change its result. May be null if nothing is
|
||||
* needed here. */
|
||||
void (*wait)(void);
|
||||
* needed here.
|
||||
*
|
||||
* 'netdev_class' points to the class. It is useful in case the same
|
||||
* function is used to implement different classes. */
|
||||
void (*wait)(const struct netdev_class *netdev_class);
|
||||
|
||||
/* ## ---------------- ## */
|
||||
/* ## netdev Functions ## */
|
||||
|
||||
@@ -312,7 +312,7 @@ netdev_vport_update_flags(struct netdev *netdev OVS_UNUSED,
|
||||
}
|
||||
|
||||
static void
|
||||
netdev_vport_run(void)
|
||||
netdev_vport_run(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
uint64_t seq;
|
||||
|
||||
@@ -325,7 +325,7 @@ netdev_vport_run(void)
|
||||
}
|
||||
|
||||
static void
|
||||
netdev_vport_wait(void)
|
||||
netdev_vport_wait(const struct netdev_class *netdev_class OVS_UNUSED)
|
||||
{
|
||||
uint64_t seq;
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ netdev_run(void)
|
||||
struct netdev_registered_class *rc;
|
||||
CMAP_FOR_EACH (rc, cmap_node, &netdev_classes) {
|
||||
if (rc->class->run) {
|
||||
rc->class->run();
|
||||
rc->class->run(rc->class);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -178,7 +178,7 @@ netdev_wait(void)
|
||||
struct netdev_registered_class *rc;
|
||||
CMAP_FOR_EACH (rc, cmap_node, &netdev_classes) {
|
||||
if (rc->class->wait) {
|
||||
rc->class->wait();
|
||||
rc->class->wait(rc->class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user