[net][netdev]Use the interface to set the default netdev
This commit is contained in:
parent
2f9d3bfe20
commit
8aaa57e2ea
@ -98,7 +98,6 @@ int netdev_register(struct netdev *netdev, const char *name, void *user_data)
|
|||||||
if (netdev_list == RT_NULL)
|
if (netdev_list == RT_NULL)
|
||||||
{
|
{
|
||||||
netdev_list = netdev;
|
netdev_list = netdev;
|
||||||
netdev_default = netdev;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -108,6 +107,11 @@ int netdev_register(struct netdev *netdev, const char *name, void *user_data)
|
|||||||
|
|
||||||
rt_hw_interrupt_enable(level);
|
rt_hw_interrupt_enable(level);
|
||||||
|
|
||||||
|
if (netdev_default == RT_NULL)
|
||||||
|
{
|
||||||
|
netdev_set_default(netdev_list);
|
||||||
|
}
|
||||||
|
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,13 +155,18 @@ int netdev_unregister(struct netdev *netdev)
|
|||||||
}
|
}
|
||||||
if (netdev_default == netdev)
|
if (netdev_default == netdev)
|
||||||
{
|
{
|
||||||
netdev_default = netdev_list;
|
netdev_default = RT_NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rt_hw_interrupt_enable(level);
|
rt_hw_interrupt_enable(level);
|
||||||
|
|
||||||
|
if (netdev_default == RT_NULL)
|
||||||
|
{
|
||||||
|
netdev_set_default(netdev_list);
|
||||||
|
}
|
||||||
|
|
||||||
if (cur_netdev == netdev)
|
if (cur_netdev == netdev)
|
||||||
{
|
{
|
||||||
#ifdef RT_USING_SAL
|
#ifdef RT_USING_SAL
|
||||||
@ -355,13 +364,13 @@ int netdev_family_get(struct netdev *netdev)
|
|||||||
*/
|
*/
|
||||||
void netdev_set_default(struct netdev *netdev)
|
void netdev_set_default(struct netdev *netdev)
|
||||||
{
|
{
|
||||||
if (netdev)
|
if (netdev && (netdev != netdev_default))
|
||||||
{
|
{
|
||||||
netdev_default = netdev;
|
netdev_default = netdev;
|
||||||
|
|
||||||
|
/* execture the default network interface device in the current network stack */
|
||||||
if (netdev->ops->set_default)
|
if (netdev->ops->set_default)
|
||||||
{
|
{
|
||||||
/* set default network interface device in the current network stack */
|
|
||||||
netdev->ops->set_default(netdev);
|
netdev->ops->set_default(netdev);
|
||||||
}
|
}
|
||||||
LOG_D("Setting default network interface device name(%s) successfully.", netdev->name);
|
LOG_D("Setting default network interface device name(%s) successfully.", netdev->name);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user