diff options
| author | tyx <[email protected]> | 2022-10-29 09:15:38 +0800 |
|---|---|---|
| committer | guo <[email protected]> | 2023-04-24 10:58:05 +0800 |
| commit | 8aaa57e2eaf8357735e084c38c88c2c23b83e2a2 (patch) | |
| tree | 622f3e10a77eec177679bb1e1a384159dfa83bd4 /components/net/netdev | |
| parent | 2f9d3bfe207b1898793669a592d4a1d6bf440a13 (diff) | |
[net][netdev]Use the interface to set the default netdev
Diffstat (limited to 'components/net/netdev')
| -rw-r--r-- | components/net/netdev/src/netdev.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index db0f21434f..319329b20e 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -98,7 +98,6 @@ int netdev_register(struct netdev *netdev, const char *name, void *user_data) if (netdev_list == RT_NULL) { netdev_list = netdev; - netdev_default = netdev; } else { @@ -108,6 +107,11 @@ int netdev_register(struct netdev *netdev, const char *name, void *user_data) rt_hw_interrupt_enable(level); + if (netdev_default == RT_NULL) + { + netdev_set_default(netdev_list); + } + return RT_EOK; } @@ -151,13 +155,18 @@ int netdev_unregister(struct netdev *netdev) } if (netdev_default == netdev) { - netdev_default = netdev_list; + netdev_default = RT_NULL; } break; } } rt_hw_interrupt_enable(level); + if (netdev_default == RT_NULL) + { + netdev_set_default(netdev_list); + } + if (cur_netdev == netdev) { #ifdef RT_USING_SAL @@ -355,13 +364,13 @@ int netdev_family_get(struct netdev *netdev) */ void netdev_set_default(struct netdev *netdev) { - if (netdev) + if (netdev && (netdev != netdev_default)) { netdev_default = netdev; + /* execture the default network interface device in the current network stack */ if (netdev->ops->set_default) { - /* set default network interface device in the current network stack */ netdev->ops->set_default(netdev); } LOG_D("Setting default network interface device name(%s) successfully.", netdev->name); |
