OSDN Git Service

hv_netvsc: simplify function args in receive status path
authorStephen Hemminger <stephen@networkplumber.org>
Wed, 13 Dec 2017 00:48:37 +0000 (16:48 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 Dec 2017 20:57:38 +0000 (15:57 -0500)
The caller (netvsc_receive) already has the net device pointer,
and should just pass that to functions rather than the hyperv device.
This eliminates several impossible error paths in the process.

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/netvsc_drv.c
drivers/net/hyperv/rndis_filter.c

index ef8c9fb..7e34eb5 100644 (file)
@@ -199,7 +199,7 @@ int netvsc_send(struct net_device_context *ndc,
                struct rndis_message *rndis_msg,
                struct hv_page_buffer *page_buffer,
                struct sk_buff *skb);
-void netvsc_linkstatus_callback(struct hv_device *device_obj,
+void netvsc_linkstatus_callback(struct net_device *net,
                                struct rndis_message *resp);
 int netvsc_recv_callback(struct net_device *net,
                         struct vmbus_channel *channel,
@@ -222,7 +222,6 @@ int rndis_filter_set_rss_param(struct rndis_device *rdev,
                               const u8 *key);
 int rndis_filter_receive(struct net_device *ndev,
                         struct netvsc_device *net_dev,
-                        struct hv_device *dev,
                         struct vmbus_channel *channel,
                         void *data, u32 buflen);
 
index 53a366f..d1a740a 100644 (file)
@@ -1082,7 +1082,7 @@ static int netvsc_receive(struct net_device *ndev,
                u32 buflen = vmxferpage_packet->ranges[i].byte_count;
 
                /* Pass it to the upper layer */
-               status = rndis_filter_receive(ndev, net_device, device,
+               status = rndis_filter_receive(ndev, net_device,
                                              channel, data, buflen);
        }
 
index 1061551..3997c2d 100644 (file)
@@ -652,22 +652,14 @@ no_memory:
 /*
  * netvsc_linkstatus_callback - Link up/down notification
  */
-void netvsc_linkstatus_callback(struct hv_device *device_obj,
+void netvsc_linkstatus_callback(struct net_device *net,
                                struct rndis_message *resp)
 {
        struct rndis_indicate_status *indicate = &resp->msg.indicate_status;
-       struct net_device *net;
-       struct net_device_context *ndev_ctx;
+       struct net_device_context *ndev_ctx = netdev_priv(net);
        struct netvsc_reconfig *event;
        unsigned long flags;
 
-       net = hv_get_drvdata(device_obj);
-
-       if (!net)
-               return;
-
-       ndev_ctx = netdev_priv(net);
-
        /* Update the physical link speed when changing to another vSwitch */
        if (indicate->status == RNDIS_STATUS_LINK_SPEED_CHANGE) {
                u32 speed;
index 6734920..901838b 100644 (file)
@@ -134,11 +134,9 @@ static void put_rndis_request(struct rndis_device *dev,
        kfree(req);
 }
 
-static void dump_rndis_message(struct hv_device *hv_dev,
+static void dump_rndis_message(struct net_device *netdev,
                               const struct rndis_message *rndis_msg)
 {
-       struct net_device *netdev = hv_get_drvdata(hv_dev);
-
        switch (rndis_msg->ndis_msg_type) {
        case RNDIS_MSG_PACKET:
                netdev_dbg(netdev, "RNDIS_MSG_PACKET (len %u, "
@@ -397,7 +395,6 @@ static int rndis_filter_receive_data(struct net_device *ndev,
 
 int rndis_filter_receive(struct net_device *ndev,
                         struct netvsc_device *net_dev,
-                        struct hv_device *dev,
                         struct vmbus_channel *channel,
                         void *data, u32 buflen)
 {
@@ -419,7 +416,7 @@ int rndis_filter_receive(struct net_device *ndev,
        }
 
        if (netif_msg_rx_status(net_device_ctx))
-               dump_rndis_message(dev, rndis_msg);
+               dump_rndis_message(ndev, rndis_msg);
 
        switch (rndis_msg->ndis_msg_type) {
        case RNDIS_MSG_PACKET:
@@ -434,7 +431,7 @@ int rndis_filter_receive(struct net_device *ndev,
 
        case RNDIS_MSG_INDICATE:
                /* notification msgs */
-               netvsc_linkstatus_callback(dev, rndis_msg);
+               netvsc_linkstatus_callback(ndev, rndis_msg);
                break;
        default:
                netdev_err(ndev,