mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 09:44:18 +08:00
hv_netvsc: pass struct netvsc_device to rndis_filter_{open, close}()
Both rndis_filter_open()/rndis_filter_close() use struct hv_device to reach to struct netvsc_device only and all callers have it already. While on it, rename net_device to nvdev in rndis_filter_open() as net_device is misleading. Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2625466d6d
commit
2f5fa6c869
@ -173,6 +173,7 @@ struct rndis_device {
|
||||
|
||||
/* Interface */
|
||||
struct rndis_message;
|
||||
struct netvsc_device;
|
||||
int netvsc_device_add(struct hv_device *device, void *additional_info);
|
||||
int netvsc_device_remove(struct hv_device *device);
|
||||
int netvsc_send(struct hv_device *device,
|
||||
@ -189,8 +190,8 @@ int netvsc_recv_callback(struct hv_device *device_obj,
|
||||
struct vmbus_channel *channel,
|
||||
u16 vlan_tci);
|
||||
void netvsc_channel_cb(void *context);
|
||||
int rndis_filter_open(struct hv_device *dev);
|
||||
int rndis_filter_close(struct hv_device *dev);
|
||||
int rndis_filter_open(struct netvsc_device *nvdev);
|
||||
int rndis_filter_close(struct netvsc_device *nvdev);
|
||||
int rndis_filter_device_add(struct hv_device *dev,
|
||||
void *additional_info);
|
||||
void rndis_filter_device_remove(struct hv_device *dev);
|
||||
|
@ -98,16 +98,14 @@ static void netvsc_set_multicast_list(struct net_device *net)
|
||||
|
||||
static int netvsc_open(struct net_device *net)
|
||||
{
|
||||
struct net_device_context *net_device_ctx = netdev_priv(net);
|
||||
struct hv_device *device_obj = net_device_ctx->device_ctx;
|
||||
struct netvsc_device *nvdev = net_device_ctx->nvdev;
|
||||
struct netvsc_device *nvdev = net_device_to_netvsc_device(net);
|
||||
struct rndis_device *rdev;
|
||||
int ret = 0;
|
||||
|
||||
netif_carrier_off(net);
|
||||
|
||||
/* Open up the device */
|
||||
ret = rndis_filter_open(device_obj);
|
||||
ret = rndis_filter_open(nvdev);
|
||||
if (ret != 0) {
|
||||
netdev_err(net, "unable to open device (ret %d).\n", ret);
|
||||
return ret;
|
||||
@ -125,7 +123,6 @@ static int netvsc_open(struct net_device *net)
|
||||
static int netvsc_close(struct net_device *net)
|
||||
{
|
||||
struct net_device_context *net_device_ctx = netdev_priv(net);
|
||||
struct hv_device *device_obj = net_device_ctx->device_ctx;
|
||||
struct netvsc_device *nvdev = net_device_ctx->nvdev;
|
||||
int ret;
|
||||
u32 aread, awrite, i, msec = 10, retry = 0, retry_max = 20;
|
||||
@ -135,7 +132,7 @@ static int netvsc_close(struct net_device *net)
|
||||
|
||||
/* Make sure netvsc_set_multicast_list doesn't re-enable filter! */
|
||||
cancel_work_sync(&net_device_ctx->work);
|
||||
ret = rndis_filter_close(device_obj);
|
||||
ret = rndis_filter_close(nvdev);
|
||||
if (ret != 0) {
|
||||
netdev_err(net, "unable to close device (ret %d).\n", ret);
|
||||
return ret;
|
||||
@ -1247,7 +1244,7 @@ static int netvsc_vf_up(struct net_device *vf_netdev)
|
||||
/*
|
||||
* Open the device before switching data path.
|
||||
*/
|
||||
rndis_filter_open(net_device_ctx->device_ctx);
|
||||
rndis_filter_open(netvsc_dev);
|
||||
|
||||
/*
|
||||
* notify the host to switch the data path.
|
||||
@ -1302,7 +1299,7 @@ static int netvsc_vf_down(struct net_device *vf_netdev)
|
||||
udelay(50);
|
||||
netvsc_switch_datapath(ndev, false);
|
||||
netdev_info(ndev, "Data path switched from VF: %s\n", vf_netdev->name);
|
||||
rndis_filter_close(net_device_ctx->device_ctx);
|
||||
rndis_filter_close(netvsc_dev);
|
||||
netif_carrier_on(ndev);
|
||||
/*
|
||||
* Notify peers.
|
||||
|
@ -1216,23 +1216,19 @@ void rndis_filter_device_remove(struct hv_device *dev)
|
||||
}
|
||||
|
||||
|
||||
int rndis_filter_open(struct hv_device *dev)
|
||||
int rndis_filter_open(struct netvsc_device *nvdev)
|
||||
{
|
||||
struct netvsc_device *net_device = hv_device_to_netvsc_device(dev);
|
||||
|
||||
if (!net_device)
|
||||
if (!nvdev)
|
||||
return -EINVAL;
|
||||
|
||||
if (atomic_inc_return(&net_device->open_cnt) != 1)
|
||||
if (atomic_inc_return(&nvdev->open_cnt) != 1)
|
||||
return 0;
|
||||
|
||||
return rndis_filter_open_device(net_device->extension);
|
||||
return rndis_filter_open_device(nvdev->extension);
|
||||
}
|
||||
|
||||
int rndis_filter_close(struct hv_device *dev)
|
||||
int rndis_filter_close(struct netvsc_device *nvdev)
|
||||
{
|
||||
struct netvsc_device *nvdev = hv_device_to_netvsc_device(dev);
|
||||
|
||||
if (!nvdev)
|
||||
return -EINVAL;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user