1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
---
drivers/hv/hyperv_vmbus.h | 7 +++++++
drivers/hv/vmbus_drv.c | 35 ++++++++++-------------------------
include/linux/hyperv.h | 17 -----------------
3 files changed, 17 insertions(+), 42 deletions(-)
--- a/drivers/hv/hyperv_vmbus.h
+++ b/drivers/hv/hyperv_vmbus.h
@@ -514,6 +514,13 @@ struct hv_context {
extern struct hv_context hv_context;
+struct hv_ring_buffer_debug_info {
+ u32 current_interrupt_mask;
+ u32 current_read_index;
+ u32 current_write_index;
+ u32 bytes_avail_toread;
+ u32 bytes_avail_towrite;
+};
/* Hv Interface */
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@ -47,8 +47,8 @@ static struct completion probe_event;
static int irq;
struct hv_device_info {
- struct hv_dev_port_info inbound;
- struct hv_dev_port_info outbound;
+ struct hv_ring_buffer_debug_info inbound;
+ struct hv_ring_buffer_debug_info outbound;
};
static int vmbus_exists(void)
@@ -63,26 +63,11 @@ static int vmbus_exists(void)
static void get_channel_info(struct hv_device *device,
struct hv_device_info *info)
{
- struct hv_ring_buffer_debug_info inbound;
- struct hv_ring_buffer_debug_info outbound;
-
if (!device->channel)
return;
- hv_ringbuffer_get_debuginfo(&device->channel->inbound, &inbound);
- hv_ringbuffer_get_debuginfo(&device->channel->outbound, &outbound);
-
- info->inbound.int_mask = inbound.current_interrupt_mask;
- info->inbound.read_idx = inbound.current_read_index;
- info->inbound.write_idx = inbound.current_write_index;
- info->inbound.bytes_avail_toread = inbound.bytes_avail_toread;
- info->inbound.bytes_avail_towrite = inbound.bytes_avail_towrite;
-
- info->outbound.int_mask = outbound.current_interrupt_mask;
- info->outbound.read_idx = outbound.current_read_index;
- info->outbound.write_idx = outbound.current_write_index;
- info->outbound.bytes_avail_toread = outbound.bytes_avail_toread;
- info->outbound.bytes_avail_towrite = outbound.bytes_avail_towrite;
+ hv_ringbuffer_get_debuginfo(&device->channel->inbound, &info->inbound);
+ hv_ringbuffer_get_debuginfo(&device->channel->outbound, &info->outbound);
}
#define VMBUS_ALIAS_LEN ((sizeof((struct hv_vmbus_device_id *)0)->guid) * 2)
@@ -114,11 +99,11 @@ static ssize_t vmbus_show_device_attr(st
get_channel_info(hv_dev, device_info);
if (!strcmp(dev_attr->attr.name, "out_intr_mask")) {
- ret = sprintf(buf, "%d\n", device_info->outbound.int_mask);
+ ret = sprintf(buf, "%d\n", device_info->outbound.current_interrupt_mask);
} else if (!strcmp(dev_attr->attr.name, "out_read_index")) {
- ret = sprintf(buf, "%d\n", device_info->outbound.read_idx);
+ ret = sprintf(buf, "%d\n", device_info->outbound.current_read_index);
} else if (!strcmp(dev_attr->attr.name, "out_write_index")) {
- ret = sprintf(buf, "%d\n", device_info->outbound.write_idx);
+ ret = sprintf(buf, "%d\n", device_info->outbound.current_write_index);
} else if (!strcmp(dev_attr->attr.name, "out_read_bytes_avail")) {
ret = sprintf(buf, "%d\n",
device_info->outbound.bytes_avail_toread);
@@ -126,11 +111,11 @@ static ssize_t vmbus_show_device_attr(st
ret = sprintf(buf, "%d\n",
device_info->outbound.bytes_avail_towrite);
} else if (!strcmp(dev_attr->attr.name, "in_intr_mask")) {
- ret = sprintf(buf, "%d\n", device_info->inbound.int_mask);
+ ret = sprintf(buf, "%d\n", device_info->inbound.current_interrupt_mask);
} else if (!strcmp(dev_attr->attr.name, "in_read_index")) {
- ret = sprintf(buf, "%d\n", device_info->inbound.read_idx);
+ ret = sprintf(buf, "%d\n", device_info->inbound.current_read_index);
} else if (!strcmp(dev_attr->attr.name, "in_write_index")) {
- ret = sprintf(buf, "%d\n", device_info->inbound.write_idx);
+ ret = sprintf(buf, "%d\n", device_info->inbound.current_write_index);
} else if (!strcmp(dev_attr->attr.name, "in_read_bytes_avail")) {
ret = sprintf(buf, "%d\n",
device_info->inbound.bytes_avail_toread);
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -429,15 +429,6 @@ struct hv_ring_buffer_info {
u32 ring_data_startoffset;
};
-struct hv_ring_buffer_debug_info {
- u32 current_interrupt_mask;
- u32 current_read_index;
- u32 current_write_index;
- u32 bytes_avail_toread;
- u32 bytes_avail_towrite;
-};
-
-
/*
*
* hv_get_ringbuffer_availbytes()
@@ -1166,14 +1157,6 @@ extern int vmbus_recvpacket_raw(struct v
extern void vmbus_ontimer(unsigned long data);
-struct hv_dev_port_info {
- u32 int_mask;
- u32 read_idx;
- u32 write_idx;
- u32 bytes_avail_toread;
- u32 bytes_avail_towrite;
-};
-
/* Base driver object */
struct hv_driver {
const char *name;
|