Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79cf1bae authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller
Browse files

hv_netvsc: simplify function args in receive status path



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: default avatarStephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f61a9d62
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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);

+1 −1
Original line number Diff line number Diff line
@@ -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);
	}

+2 −10
Original line number Diff line number Diff line
@@ -652,22 +652,14 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
/*
 * 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;
+3 −6
Original line number Diff line number Diff line
@@ -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,