2011-06-17 15:05:01

by Haiyang Zhang

[permalink] [raw]
Subject: [PATCH 1/5] staging: hv: fix some white spaces in netvsc driver

Signed-off-by: Haiyang Zhang <[email protected]>
Signed-off-by: Abhishek Kane <[email protected]>
Signed-off-by: Hank Janssen <[email protected]>
Signed-off-by: K. Y. Srinivasan <[email protected]>
---
drivers/staging/hv/netvsc.c | 8 ++++----
drivers/staging/hv/netvsc_drv.c | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
index 0ae35e7..b6e1fb9 100644
--- a/drivers/staging/hv/netvsc.c
+++ b/drivers/staging/hv/netvsc.c
@@ -525,10 +525,10 @@ int netvsc_send(struct hv_device *device,
(unsigned long)packet);
} else {
ret = vmbus_sendpacket(device->channel, &sendMessage,
- sizeof(struct nvsp_message),
- (unsigned long)packet,
- VM_PKT_DATA_INBAND,
- VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
+ sizeof(struct nvsp_message),
+ (unsigned long)packet,
+ VM_PKT_DATA_INBAND,
+ VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);

}

diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index b339acc..8380fe9 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -122,7 +122,7 @@ static void netvsc_xmit_completion(void *context)
atomic_add(num_pages, &net_device_ctx->avail);
if (atomic_read(&net_device_ctx->avail) >=
PACKET_PAGES_HIWATER)
- netif_wake_queue(net);
+ netif_wake_queue(net);
}
}

--
1.6.3.2


2011-06-17 14:42:46

by Haiyang Zhang

[permalink] [raw]
Subject: [PATCH 2/5] staging: hv: remove unnecessary includes in netvsc

hyperv.h is included by hyperv_net.h already, so no need to include it
again in these C files.

Signed-off-by: Haiyang Zhang <[email protected]>
Signed-off-by: Abhishek Kane <[email protected]>
Signed-off-by: Hank Janssen <[email protected]>
Signed-off-by: K. Y. Srinivasan <[email protected]>
---
drivers/staging/hv/netvsc.c | 1 -
drivers/staging/hv/netvsc_drv.c | 1 -
drivers/staging/hv/rndis_filter.c | 1 -
3 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
index b6e1fb9..ed9b8af 100644
--- a/drivers/staging/hv/netvsc.c
+++ b/drivers/staging/hv/netvsc.c
@@ -28,7 +28,6 @@
#include <linux/io.h>
#include <linux/slab.h>

-#include "hyperv.h"
#include "hyperv_net.h"


diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index 8380fe9..e5aba38 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -38,7 +38,6 @@
#include <net/sock.h>
#include <net/pkt_sched.h>

-#include "hyperv.h"
#include "hyperv_net.h"

static const char *driver_name = "netvsc";
diff --git a/drivers/staging/hv/rndis_filter.c b/drivers/staging/hv/rndis_filter.c
index 6db48b9..8416bf2 100644
--- a/drivers/staging/hv/rndis_filter.c
+++ b/drivers/staging/hv/rndis_filter.c
@@ -27,7 +27,6 @@
#include <linux/if_ether.h>
#include <linux/netdevice.h>

-#include "hyperv.h"
#include "hyperv_net.h"


--
1.6.3.2

2011-06-17 14:43:16

by Haiyang Zhang

[permalink] [raw]
Subject: [PATCH 3/5] staging: hv: add newline to log messages in netvsc

Signed-off-by: Haiyang Zhang <[email protected]>
Signed-off-by: Abhishek Kane <[email protected]>
Signed-off-by: Hank Janssen <[email protected]>
Signed-off-by: K. Y. Srinivasan <[email protected]>
---
drivers/staging/hv/netvsc.c | 60 +++++++++++++++++++-------------------
drivers/staging/hv/netvsc_drv.c | 2 +-
2 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
index ed9b8af..68ed3b4 100644
--- a/drivers/staging/hv/netvsc.c
+++ b/drivers/staging/hv/netvsc.c
@@ -158,7 +158,7 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
*/
if (ret != 0) {
dev_err(&net_device->dev->device, "unable to send "
- "revoke receive buffer to netvsp");
+ "revoke receive buffer to netvsp\n");
return ret;
}
}
@@ -173,7 +173,7 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
*/
if (ret != 0) {
dev_err(&net_device->dev->device,
- "unable to teardown receive buffer's gpadl");
+ "unable to teardown receive buffer's gpadl\n");
return -ret;
}
net_device->recv_buf_gpadl_handle = 0;
@@ -205,7 +205,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
net_device = get_outbound_net_device(device);
if (!net_device) {
dev_err(&device->device, "unable to get net device..."
- "device being destroyed?");
+ "device being destroyed?\n");
return -ENODEV;
}

@@ -214,7 +214,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
get_order(net_device->recv_buf_size));
if (!net_device->recv_buf) {
dev_err(&device->device, "unable to allocate receive "
- "buffer of size %d", net_device->recv_buf_size);
+ "buffer of size %d\n", net_device->recv_buf_size);
ret = -ENOMEM;
goto cleanup;
}
@@ -229,7 +229,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
&net_device->recv_buf_gpadl_handle);
if (ret != 0) {
dev_err(&device->device,
- "unable to establish receive buffer's gpadl");
+ "unable to establish receive buffer's gpadl\n");
goto cleanup;
}

@@ -253,7 +253,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
if (ret != 0) {
dev_err(&device->device,
- "unable to send receive buffer's gpadl to netvsp");
+ "unable to send receive buffer's gpadl to netvsp\n");
goto cleanup;
}

@@ -265,7 +265,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
if (init_packet->msg.v1_msg.
send_recv_buf_complete.status != NVSP_STAT_SUCCESS) {
dev_err(&device->device, "Unable to complete receive buffer "
- "initialzation with NetVsp - status %d",
+ "initialzation with NetVsp - status %d\n",
init_packet->msg.v1_msg.
send_recv_buf_complete.status);
ret = -EINVAL;
@@ -321,7 +321,7 @@ static int netvsc_connect_vsp(struct hv_device *device)
net_device = get_outbound_net_device(device);
if (!net_device) {
dev_err(&device->device, "unable to get net device..."
- "device being destroyed?");
+ "device being destroyed?\n");
return -ENODEV;
}

@@ -407,14 +407,14 @@ int netvsc_device_remove(struct hv_device *device)
/* Stop outbound traffic ie sends and receives completions */
net_device = release_outbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "No net device present!!");
+ dev_err(&device->device, "No net device present!!\n");
return -ENODEV;
}

/* Wait for all send completions */
while (atomic_read(&net_device->num_outstanding_sends)) {
dev_err(&device->device,
- "waiting for %d requests to complete...",
+ "waiting for %d requests to complete...\n",
atomic_read(&net_device->num_outstanding_sends));
udelay(100);
}
@@ -425,7 +425,7 @@ int netvsc_device_remove(struct hv_device *device)
net_device = release_inbound_net_device(device);

/* At this point, no one should be accessing netDevice except in here */
- dev_notice(&device->device, "net device safe to remove");
+ dev_notice(&device->device, "net device safe to remove\n");

/* Now, we can close the channel safely */
vmbus_close(device->channel);
@@ -451,7 +451,7 @@ static void netvsc_send_completion(struct hv_device *device,
net_device = get_inbound_net_device(device);
if (!net_device) {
dev_err(&device->device, "unable to get net device..."
- "device being destroyed?");
+ "device being destroyed?\n");
return;
}

@@ -480,7 +480,7 @@ static void netvsc_send_completion(struct hv_device *device,
atomic_dec(&net_device->num_outstanding_sends);
} else {
dev_err(&device->device, "Unknown send completion packet type- "
- "%d received!!", nvsp_packet->hdr.msg_type);
+ "%d received!!\n", nvsp_packet->hdr.msg_type);
}

put_net_device(device);
@@ -497,7 +497,7 @@ int netvsc_send(struct hv_device *device,
net_device = get_outbound_net_device(device);
if (!net_device) {
dev_err(&device->device, "net device (%p) shutting down..."
- "ignoring outbound packets", net_device);
+ "ignoring outbound packets\n", net_device);
return -ENODEV;
}

@@ -532,7 +532,7 @@ int netvsc_send(struct hv_device *device,
}

if (ret != 0)
- dev_err(&device->device, "Unable to send packet %p ret %d",
+ dev_err(&device->device, "Unable to send packet %p ret %d\n",
packet, ret);

atomic_inc(&net_device->num_outstanding_sends);
@@ -566,19 +566,19 @@ retry_send_cmplt:
/* no more room...wait a bit and attempt to retry 3 times */
retries++;
dev_err(&device->device, "unable to send receive completion pkt"
- " (tid %llx)...retrying %d", transaction_id, retries);
+ " (tid %llx)...retrying %d\n", transaction_id, retries);

if (retries < 4) {
udelay(100);
goto retry_send_cmplt;
} else {
dev_err(&device->device, "unable to send receive "
- "completion pkt (tid %llx)...give up retrying",
+ "completion pkt (tid %llx)...give up retrying\n",
transaction_id);
}
} else {
dev_err(&device->device, "unable to send receive "
- "completion pkt - %llx", transaction_id);
+ "completion pkt - %llx\n", transaction_id);
}
}

@@ -600,7 +600,7 @@ static void netvsc_receive_completion(void *context)
net_device = get_inbound_net_device(device);
if (!net_device) {
dev_err(&device->device, "unable to get net device..."
- "device being destroyed?");
+ "device being destroyed?\n");
return;
}

@@ -652,7 +652,7 @@ static void netvsc_receive(struct hv_device *device,
net_device = get_inbound_net_device(device);
if (!net_device) {
dev_err(&device->device, "unable to get net device..."
- "device being destroyed?");
+ "device being destroyed?\n");
return;
}

@@ -661,7 +661,7 @@ static void netvsc_receive(struct hv_device *device,
* packet
*/
if (packet->type != VM_PKT_DATA_USING_XFER_PAGES) {
- dev_err(&device->device, "Unknown packet type received - %d",
+ dev_err(&device->device, "Unknown packet type received - %d\n",
packet->type);
put_net_device(device);
return;
@@ -674,7 +674,7 @@ static void netvsc_receive(struct hv_device *device,
if (nvsp_packet->hdr.msg_type !=
NVSP_MSG1_TYPE_SEND_RNDIS_PKT) {
dev_err(&device->device, "Unknown nvsp packet type received-"
- " %d", nvsp_packet->hdr.msg_type);
+ " %d\n", nvsp_packet->hdr.msg_type);
put_net_device(device);
return;
}
@@ -683,7 +683,7 @@ static void netvsc_receive(struct hv_device *device,

if (vmxferpage_packet->xfer_pageset_id != NETVSC_RECEIVE_BUFFER_ID) {
dev_err(&device->device, "Invalid xfer page set id - "
- "expecting %x got %x", NETVSC_RECEIVE_BUFFER_ID,
+ "expecting %x got %x\n", NETVSC_RECEIVE_BUFFER_ID,
vmxferpage_packet->xfer_pageset_id);
put_net_device(device);
return;
@@ -710,7 +710,7 @@ static void netvsc_receive(struct hv_device *device,
*/
if (count < 2) {
dev_err(&device->device, "Got only %d netvsc pkt...needed "
- "%d pkts. Dropping this xfer page packet completely!",
+ "%d pkts. Dropping this xfer page packet completely!\n",
count, vmxferpage_packet->range_cnt + 1);

/* Return it to the freelist */
@@ -738,7 +738,7 @@ static void netvsc_receive(struct hv_device *device,

if (xferpage_packet->count != vmxferpage_packet->range_cnt) {
dev_err(&device->device, "Needed %d netvsc pkts to satisy "
- "this xfer page...got %d",
+ "this xfer page...got %d\n",
vmxferpage_packet->range_cnt, xferpage_packet->count);
}

@@ -837,7 +837,7 @@ static void netvsc_channel_cb(void *context)
net_device = get_inbound_net_device(device);
if (!net_device) {
dev_err(&device->device, "net device (%p) shutting down..."
- "ignoring inbound packets", net_device);
+ "ignoring inbound packets\n", net_device);
goto out;
}

@@ -888,7 +888,7 @@ static void netvsc_channel_cb(void *context)
/* Try again next time around */
dev_err(&device->device,
"unable to allocate buffer of size "
- "(%d)!!", bytes_recvd);
+ "(%d)!!\n", bytes_recvd);
break;
}

@@ -945,18 +945,18 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
netvsc_channel_cb, device);

if (ret != 0) {
- dev_err(&device->device, "unable to open channel: %d", ret);
+ dev_err(&device->device, "unable to open channel: %d\n", ret);
goto cleanup;
}

/* Channel is opened */
- pr_info("hv_netvsc channel opened successfully");
+ pr_info("hv_netvsc channel opened successfully\n");

/* Connect with the NetVsp */
ret = netvsc_connect_vsp(device);
if (ret != 0) {
dev_err(&device->device,
- "unable to connect to NetVSP - %d", ret);
+ "unable to connect to NetVSP - %d\n", ret);
goto close;
}

diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index e5aba38..c9ed19a 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -433,7 +433,7 @@ static int __init netvsc_drv_init(void)
struct hv_driver *drv = &netvsc_drv;
int ret;

- pr_info("initializing....");
+ pr_info("initializing....\n");

drv->driver.name = driver_name;

--
1.6.3.2

2011-06-17 14:42:53

by Haiyang Zhang

[permalink] [raw]
Subject: [PATCH 4/5] staging: hv: convert dev_<loglevel> to netdev_<loglevel> in netvsc

Signed-off-by: Haiyang Zhang <[email protected]>
Signed-off-by: Abhishek Kane <[email protected]>
Signed-off-by: Hank Janssen <[email protected]>
Signed-off-by: K. Y. Srinivasan <[email protected]>
---
drivers/staging/hv/netvsc.c | 71 +++++++++++++++++++++---------------
drivers/staging/hv/rndis_filter.c | 17 +++++----
2 files changed, 51 insertions(+), 37 deletions(-)

diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
index 68ed3b4..551537a 100644
--- a/drivers/staging/hv/netvsc.c
+++ b/drivers/staging/hv/netvsc.c
@@ -27,6 +27,7 @@
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/slab.h>
+#include <linux/netdevice.h>

#include "hyperv_net.h"

@@ -130,6 +131,7 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
{
struct nvsp_message *revoke_packet;
int ret = 0;
+ struct net_device *ndev = dev_get_drvdata(&net_device->dev->device);

/*
* If we got a section count, it means we received a
@@ -157,7 +159,7 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
* have a leak rather than continue and a bugchk
*/
if (ret != 0) {
- dev_err(&net_device->dev->device, "unable to send "
+ netdev_err(ndev, "unable to send "
"revoke receive buffer to netvsp\n");
return ret;
}
@@ -172,7 +174,7 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
* rather than continue and a bugchk
*/
if (ret != 0) {
- dev_err(&net_device->dev->device,
+ netdev_err(ndev,
"unable to teardown receive buffer's gpadl\n");
return -ret;
}
@@ -201,10 +203,11 @@ static int netvsc_init_recv_buf(struct hv_device *device)
int t;
struct netvsc_device *net_device;
struct nvsp_message *init_packet;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

net_device = get_outbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "unable to get net device..."
+ netdev_err(ndev, "unable to get net device..."
"device being destroyed?\n");
return -ENODEV;
}
@@ -213,7 +216,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
(void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO,
get_order(net_device->recv_buf_size));
if (!net_device->recv_buf) {
- dev_err(&device->device, "unable to allocate receive "
+ netdev_err(ndev, "unable to allocate receive "
"buffer of size %d\n", net_device->recv_buf_size);
ret = -ENOMEM;
goto cleanup;
@@ -228,7 +231,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
net_device->recv_buf_size,
&net_device->recv_buf_gpadl_handle);
if (ret != 0) {
- dev_err(&device->device,
+ netdev_err(ndev,
"unable to establish receive buffer's gpadl\n");
goto cleanup;
}
@@ -252,7 +255,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
VM_PKT_DATA_INBAND,
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
if (ret != 0) {
- dev_err(&device->device,
+ netdev_err(ndev,
"unable to send receive buffer's gpadl to netvsp\n");
goto cleanup;
}
@@ -264,7 +267,7 @@ static int netvsc_init_recv_buf(struct hv_device *device)
/* Check the response */
if (init_packet->msg.v1_msg.
send_recv_buf_complete.status != NVSP_STAT_SUCCESS) {
- dev_err(&device->device, "Unable to complete receive buffer "
+ netdev_err(ndev, "Unable to complete receive buffer "
"initialzation with NetVsp - status %d\n",
init_packet->msg.v1_msg.
send_recv_buf_complete.status);
@@ -317,10 +320,11 @@ static int netvsc_connect_vsp(struct hv_device *device)
struct netvsc_device *net_device;
struct nvsp_message *init_packet;
int ndis_version;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

net_device = get_outbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "unable to get net device..."
+ netdev_err(ndev, "unable to get net device..."
"device being destroyed?\n");
return -ENODEV;
}
@@ -403,17 +407,18 @@ int netvsc_device_remove(struct hv_device *device)
{
struct netvsc_device *net_device;
struct hv_netvsc_packet *netvsc_packet, *pos;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

/* Stop outbound traffic ie sends and receives completions */
net_device = release_outbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "No net device present!!\n");
+ netdev_err(ndev, "No net device present!!\n");
return -ENODEV;
}

/* Wait for all send completions */
while (atomic_read(&net_device->num_outstanding_sends)) {
- dev_err(&device->device,
+ dev_info(&device->device,
"waiting for %d requests to complete...\n",
atomic_read(&net_device->num_outstanding_sends));
udelay(100);
@@ -447,10 +452,11 @@ static void netvsc_send_completion(struct hv_device *device,
struct netvsc_device *net_device;
struct nvsp_message *nvsp_packet;
struct hv_netvsc_packet *nvsc_packet;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

net_device = get_inbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "unable to get net device..."
+ netdev_err(ndev, "unable to get net device..."
"device being destroyed?\n");
return;
}
@@ -479,7 +485,7 @@ static void netvsc_send_completion(struct hv_device *device,

atomic_dec(&net_device->num_outstanding_sends);
} else {
- dev_err(&device->device, "Unknown send completion packet type- "
+ netdev_err(ndev, "Unknown send completion packet type- "
"%d received!!\n", nvsp_packet->hdr.msg_type);
}

@@ -491,12 +497,12 @@ int netvsc_send(struct hv_device *device,
{
struct netvsc_device *net_device;
int ret = 0;
-
struct nvsp_message sendMessage;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

net_device = get_outbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "net device (%p) shutting down..."
+ netdev_err(ndev, "net device (%p) shutting down..."
"ignoring outbound packets\n", net_device);
return -ENODEV;
}
@@ -532,7 +538,7 @@ int netvsc_send(struct hv_device *device,
}

if (ret != 0)
- dev_err(&device->device, "Unable to send packet %p ret %d\n",
+ netdev_err(ndev, "Unable to send packet %p ret %d\n",
packet, ret);

atomic_inc(&net_device->num_outstanding_sends);
@@ -546,6 +552,7 @@ static void netvsc_send_recv_completion(struct hv_device *device,
struct nvsp_message recvcompMessage;
int retries = 0;
int ret;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

recvcompMessage.hdr.msg_type =
NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE;
@@ -565,19 +572,19 @@ retry_send_cmplt:
} else if (ret == -EAGAIN) {
/* no more room...wait a bit and attempt to retry 3 times */
retries++;
- dev_err(&device->device, "unable to send receive completion pkt"
+ netdev_err(ndev, "unable to send receive completion pkt"
" (tid %llx)...retrying %d\n", transaction_id, retries);

if (retries < 4) {
udelay(100);
goto retry_send_cmplt;
} else {
- dev_err(&device->device, "unable to send receive "
+ netdev_err(ndev, "unable to send receive "
"completion pkt (tid %llx)...give up retrying\n",
transaction_id);
}
} else {
- dev_err(&device->device, "unable to send receive "
+ netdev_err(ndev, "unable to send receive "
"completion pkt - %llx\n", transaction_id);
}
}
@@ -591,6 +598,7 @@ static void netvsc_receive_completion(void *context)
u64 transaction_id = 0;
bool fsend_receive_comp = false;
unsigned long flags;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

/*
* Even though it seems logical to do a GetOutboundNetDevice() here to
@@ -599,7 +607,7 @@ static void netvsc_receive_completion(void *context)
*/
net_device = get_inbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "unable to get net device..."
+ netdev_err(ndev, "unable to get net device..."
"device being destroyed?\n");
return;
}
@@ -646,12 +654,13 @@ static void netvsc_receive(struct hv_device *device,
int i, j;
int count = 0, bytes_remain = 0;
unsigned long flags;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

LIST_HEAD(listHead);

net_device = get_inbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "unable to get net device..."
+ netdev_err(ndev, "unable to get net device..."
"device being destroyed?\n");
return;
}
@@ -661,7 +670,7 @@ static void netvsc_receive(struct hv_device *device,
* packet
*/
if (packet->type != VM_PKT_DATA_USING_XFER_PAGES) {
- dev_err(&device->device, "Unknown packet type received - %d\n",
+ netdev_err(ndev, "Unknown packet type received - %d\n",
packet->type);
put_net_device(device);
return;
@@ -673,7 +682,7 @@ static void netvsc_receive(struct hv_device *device,
/* Make sure this is a valid nvsp packet */
if (nvsp_packet->hdr.msg_type !=
NVSP_MSG1_TYPE_SEND_RNDIS_PKT) {
- dev_err(&device->device, "Unknown nvsp packet type received-"
+ netdev_err(ndev, "Unknown nvsp packet type received-"
" %d\n", nvsp_packet->hdr.msg_type);
put_net_device(device);
return;
@@ -682,7 +691,7 @@ static void netvsc_receive(struct hv_device *device,
vmxferpage_packet = (struct vmtransfer_page_packet_header *)packet;

if (vmxferpage_packet->xfer_pageset_id != NETVSC_RECEIVE_BUFFER_ID) {
- dev_err(&device->device, "Invalid xfer page set id - "
+ netdev_err(ndev, "Invalid xfer page set id - "
"expecting %x got %x\n", NETVSC_RECEIVE_BUFFER_ID,
vmxferpage_packet->xfer_pageset_id);
put_net_device(device);
@@ -709,7 +718,7 @@ static void netvsc_receive(struct hv_device *device,
* some of the xfer page packet ranges...
*/
if (count < 2) {
- dev_err(&device->device, "Got only %d netvsc pkt...needed "
+ netdev_err(ndev, "Got only %d netvsc pkt...needed "
"%d pkts. Dropping this xfer page packet completely!\n",
count, vmxferpage_packet->range_cnt + 1);

@@ -737,7 +746,7 @@ static void netvsc_receive(struct hv_device *device,
xferpage_packet->count = count - 1;

if (xferpage_packet->count != vmxferpage_packet->range_cnt) {
- dev_err(&device->device, "Needed %d netvsc pkts to satisy "
+ netdev_err(ndev, "Needed %d netvsc pkts to satisy "
"this xfer page...got %d\n",
vmxferpage_packet->range_cnt, xferpage_packet->count);
}
@@ -827,6 +836,7 @@ static void netvsc_channel_cb(void *context)
struct vmpacket_descriptor *desc;
unsigned char *buffer;
int bufferlen = NETVSC_PACKET_SIZE;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

packet = kzalloc(NETVSC_PACKET_SIZE * sizeof(unsigned char),
GFP_ATOMIC);
@@ -836,7 +846,7 @@ static void netvsc_channel_cb(void *context)

net_device = get_inbound_net_device(device);
if (!net_device) {
- dev_err(&device->device, "net device (%p) shutting down..."
+ netdev_err(ndev, "net device (%p) shutting down..."
"ignoring inbound packets\n", net_device);
goto out;
}
@@ -857,7 +867,7 @@ static void netvsc_channel_cb(void *context)
break;

default:
- dev_err(&device->device,
+ netdev_err(ndev,
"unhandled packet type %d, "
"tid %llx len %d\n",
desc->type, request_id,
@@ -886,7 +896,7 @@ static void netvsc_channel_cb(void *context)
buffer = kmalloc(bytes_recvd, GFP_ATOMIC);
if (buffer == NULL) {
/* Try again next time around */
- dev_err(&device->device,
+ netdev_err(ndev,
"unable to allocate buffer of size "
"(%d)!!\n", bytes_recvd);
break;
@@ -914,6 +924,7 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
((struct netvsc_device_info *)additional_info)->ring_size;
struct netvsc_device *net_device;
struct hv_netvsc_packet *packet, *pos;
+ struct net_device *ndev = dev_get_drvdata(&device->device);

net_device = alloc_net_device(device);
if (!net_device) {
@@ -945,7 +956,7 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
netvsc_channel_cb, device);

if (ret != 0) {
- dev_err(&device->device, "unable to open channel: %d\n", ret);
+ netdev_err(ndev, "unable to open channel: %d\n", ret);
goto cleanup;
}

@@ -955,7 +966,7 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
/* Connect with the NetVsp */
ret = netvsc_connect_vsp(device);
if (ret != 0) {
- dev_err(&device->device,
+ netdev_err(ndev,
"unable to connect to NetVSP - %d\n", ret);
goto close;
}
diff --git a/drivers/staging/hv/rndis_filter.c b/drivers/staging/hv/rndis_filter.c
index 8416bf2..20e673d 100644
--- a/drivers/staging/hv/rndis_filter.c
+++ b/drivers/staging/hv/rndis_filter.c
@@ -249,6 +249,7 @@ static void rndis_filter_receive_response(struct rndis_device *dev,
struct rndis_request *request = NULL;
bool found = false;
unsigned long flags;
+ struct net_device *ndev = dev_get_drvdata(&dev->net_dev->dev->device);

spin_lock_irqsave(&dev->request_lock, flags);
list_for_each_entry(request, &dev->req_list, list_ent) {
@@ -269,7 +270,7 @@ static void rndis_filter_receive_response(struct rndis_device *dev,
memcpy(&request->response_msg, resp,
resp->msg_len);
} else {
- dev_err(&dev->net_dev->dev->device,
+ netdev_err(ndev,
"rndis response buffer overflow "
"detected (size %u max %zu)\n",
resp->msg_len,
@@ -289,7 +290,7 @@ static void rndis_filter_receive_response(struct rndis_device *dev,

complete(&request->wait_event);
} else {
- dev_err(&dev->net_dev->dev->device,
+ netdev_err(ndev,
"no rndis request found for this response "
"(id 0x%x res type 0x%x)\n",
resp->msg.init_complete.req_id,
@@ -349,20 +350,21 @@ int rndis_filter_receive(struct hv_device *dev,
struct rndis_device *rndis_dev;
struct rndis_message rndis_msg;
struct rndis_message *rndis_hdr;
+ struct net_device *ndev = dev_get_drvdata(&dev->device);

if (!net_dev)
return -EINVAL;

/* Make sure the rndis device state is initialized */
if (!net_dev->extension) {
- dev_err(&dev->device, "got rndis message but no rndis device - "
+ netdev_err(ndev, "got rndis message but no rndis device - "
"dropping this message!\n");
return -ENODEV;
}

rndis_dev = (struct rndis_device *)net_dev->extension;
if (rndis_dev->state == RNDIS_DEV_UNINITIALIZED) {
- dev_err(&dev->device, "got rndis message but rndis device "
+ netdev_err(ndev, "got rndis message but rndis device "
"uninitialized...dropping this message!\n");
return -ENODEV;
}
@@ -376,7 +378,7 @@ int rndis_filter_receive(struct hv_device *dev,
/* Make sure we got a valid rndis message */
if ((rndis_hdr->ndis_msg_type != REMOTE_NDIS_PACKET_MSG) &&
(rndis_hdr->msg_len > sizeof(struct rndis_message))) {
- dev_err(&dev->device, "incoming rndis message buffer overflow "
+ netdev_err(ndev, "incoming rndis message buffer overflow "
"detected (got %u, max %zu)..marking it an error!\n",
rndis_hdr->msg_len,
sizeof(struct rndis_message));
@@ -409,7 +411,7 @@ int rndis_filter_receive(struct hv_device *dev,
rndis_filter_receive_indicate_status(rndis_dev, &rndis_msg);
break;
default:
- dev_err(&dev->device,
+ netdev_err(ndev,
"unhandled rndis message (type %u len %u)\n",
rndis_msg.ndis_msg_type,
rndis_msg.msg_len);
@@ -505,6 +507,7 @@ static int rndis_filter_set_packet_filter(struct rndis_device *dev,
struct rndis_set_complete *set_complete;
u32 status;
int ret, t;
+ struct net_device *ndev = dev_get_drvdata(&dev->net_dev->dev->device);

request = get_rndis_request(dev, REMOTE_NDIS_SET_MSG,
RNDIS_MESSAGE_SIZE(struct rndis_set_request) +
@@ -530,7 +533,7 @@ static int rndis_filter_set_packet_filter(struct rndis_device *dev,
t = wait_for_completion_timeout(&request->wait_event, 5*HZ);

if (t == 0) {
- dev_err(&dev->net_dev->dev->device,
+ netdev_err(ndev,
"timeout before we got a set response...\n");
/*
* We can't deallocate the request since we may still receive a
--
1.6.3.2

2011-06-17 14:43:00

by Haiyang Zhang

[permalink] [raw]
Subject: [PATCH 5/5] staging: hv: fix a kernel warning in netvsc_linkstatus_callback()

netif_notify_peers() is not allowed in netvsc_linkstatus_callback() on some
distros, because netvsc_linkstatus_callback() is within IRQ context. So we
move the first call to netif_notify_peers() into queued work as well, but with
zero delay.

This should also be back-ported to stable kernels 2.6.32 and later.

Signed-off-by: Haiyang Zhang <[email protected]>
Signed-off-by: K. Y. Srinivasan <[email protected]>
Cc: stable <[email protected]>
---
drivers/staging/hv/netvsc_drv.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index c9ed19a..2299b88 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -216,8 +216,8 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
if (status == 1) {
netif_carrier_on(net);
netif_wake_queue(net);
- netif_notify_peers(net);
ndev_ctx = netdev_priv(net);
+ schedule_delayed_work(&ndev_ctx->dwork, 0);
schedule_delayed_work(&ndev_ctx->dwork, msecs_to_jiffies(20));
} else {
netif_carrier_off(net);
--
1.6.3.2

2011-06-17 16:06:01

by Nicolas Kaiser

[permalink] [raw]
Subject: Re: [PATCH 1/5] staging: hv: fix some white spaces in netvsc driver

* Haiyang Zhang <[email protected]>:
> diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
> index 0ae35e7..b6e1fb9 100644
> --- a/drivers/staging/hv/netvsc.c
> +++ b/drivers/staging/hv/netvsc.c
> @@ -525,10 +525,10 @@ int netvsc_send(struct hv_device *device,
> (unsigned long)packet);
> } else {
> ret = vmbus_sendpacket(device->channel, &sendMessage,
> - sizeof(struct nvsp_message),
> - (unsigned long)packet,
> - VM_PKT_DATA_INBAND,
> - VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
> + sizeof(struct nvsp_message),
> + (unsigned long)packet,
> + VM_PKT_DATA_INBAND,
> + VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);

Why? The arguments were nicely aligned.

Best regards,
Nicolas Kaiser

2011-06-17 16:48:36

by Haiyang Zhang

[permalink] [raw]
Subject: RE: [PATCH 1/5] staging: hv: fix some white spaces in netvsc driver

> -----Original Message-----
> From: Nicolas Kaiser [mailto:[email protected]]
> Sent: Friday, June 17, 2011 12:03 PM
> To: Haiyang Zhang
> Cc: Hank Janssen; KY Srinivasan; Abhishek Kane (Mindtree Consulting
> PVT LTD); [email protected]; [email protected];
> [email protected]; [email protected]
> Subject: Re: [PATCH 1/5] staging: hv: fix some white spaces in netvsc
> driver
>
> * Haiyang Zhang <[email protected]>:
> > diff --git a/drivers/staging/hv/netvsc.c
> b/drivers/staging/hv/netvsc.c
> > index 0ae35e7..b6e1fb9 100644
> > --- a/drivers/staging/hv/netvsc.c
> > +++ b/drivers/staging/hv/netvsc.c
> > @@ -525,10 +525,10 @@ int netvsc_send(struct hv_device *device,
> > (unsigned long)packet);
> > } else {
> > ret = vmbus_sendpacket(device->channel, &sendMessage,
> > - sizeof(struct nvsp_message),
> > - (unsigned long)packet,
> > - VM_PKT_DATA_INBAND,
> > -
> VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
> > + sizeof(struct nvsp_message),
> > + (unsigned long)packet,
> > + VM_PKT_DATA_INBAND,
> > + VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
>
> Why? The arguments were nicely aligned.

Because the last line went beyond 80 chars, and triggered checkpatch warning.

Thanks,
-Haiyang