Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157581977
D7028.id18015.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D7028.id18015.diff
View Options
Index: sys/dev/hyperv/utilities/hv_heartbeat.c
===================================================================
--- sys/dev/hyperv/utilities/hv_heartbeat.c
+++ sys/dev/hyperv/utilities/hv_heartbeat.c
@@ -61,7 +61,7 @@
softc = (hv_util_sc*)context;
buf = softc->receive_buffer;
- channel = softc->hv_dev->channel;
+ channel = softc->channel;
ret = hv_vmbus_channel_recv_packet(channel, buf, PAGE_SIZE, &recvlen,
&requestid);
Index: sys/dev/hyperv/utilities/hv_kvp.c
===================================================================
--- sys/dev/hyperv/utilities/hv_kvp.c
+++ sys/dev/hyperv/utilities/hv_kvp.c
@@ -308,10 +308,6 @@
{
int err_ip, err_subnet, err_gway, err_dns, err_adap;
int UNUSED_FLAG = 1;
- struct hv_device *hv_dev; /* GUID Data Structure */
- hn_softc_t *sc; /* hn softc structure */
- char buf[HYPERV_GUID_STRLEN];
-
device_t *devs;
int devcnt;
@@ -333,12 +329,18 @@
if (devclass_get_devices(devclass_find("hn"), &devs, &devcnt) == 0) {
for (devcnt = devcnt - 1; devcnt >= 0; devcnt--) {
- sc = device_get_softc(devs[devcnt]);
-
- /* Trying to find GUID of Network Device */
- hv_dev = sc->hn_dev_obj;
+ /* XXX access other driver's softc? are you kidding? */
+ device_t dev = devs[devcnt];
+ struct hn_softc *sc = device_get_softc(dev);
+ struct hv_vmbus_channel *chan;
+ char buf[HYPERV_GUID_STRLEN];
- hyperv_guid2str(&hv_dev->device_id, buf, sizeof(buf));
+ /*
+ * Trying to find GUID of Network Device
+ * TODO: need vmbus interface.
+ */
+ chan = vmbus_get_channel(dev);
+ hyperv_guid2str(&chan->ch_guid_inst, buf, sizeof(buf));
if (strncmp(buf, (char *)umsg->body.kvp_ip_val.adapter_id,
HYPERV_GUID_STRLEN - 1) == 0) {
@@ -573,7 +575,7 @@
hv_icmsg_hdrp->status = error;
hv_icmsg_hdrp->icflags = HV_ICMSGHDRFLAG_TRANSACTION | HV_ICMSGHDRFLAG_RESPONSE;
- error = hv_vmbus_channel_send_packet(sc->util_sc.hv_dev->channel,
+ error = hv_vmbus_channel_send_packet(sc->util_sc.channel,
sc->rcv_buf,
sc->host_msg_len, sc->host_msg_id,
HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
@@ -624,7 +626,7 @@
sc = (hv_kvp_sc*)context;
kvp_buf = sc->util_sc.receive_buffer;
- channel = sc->util_sc.hv_dev->channel;
+ channel = sc->util_sc.channel;
ret = hv_vmbus_channel_recv_packet(channel, kvp_buf, 2 * PAGE_SIZE,
&recvlen, &requestid);
Index: sys/dev/hyperv/utilities/hv_shutdown.c
===================================================================
--- sys/dev/hyperv/utilities/hv_shutdown.c
+++ sys/dev/hyperv/utilities/hv_shutdown.c
@@ -65,7 +65,7 @@
softc = (hv_util_sc*)context;
buf = softc->receive_buffer;
- channel = softc->hv_dev->channel;
+ channel = softc->channel;
ret = hv_vmbus_channel_recv_packet(channel, buf, PAGE_SIZE,
&recv_len, &request_id);
Index: sys/dev/hyperv/utilities/hv_timesync.c
===================================================================
--- sys/dev/hyperv/utilities/hv_timesync.c
+++ sys/dev/hyperv/utilities/hv_timesync.c
@@ -140,7 +140,7 @@
hv_timesync_sc *softc;
softc = (hv_timesync_sc*)context;
- channel = softc->util_sc.hv_dev->channel;
+ channel = softc->util_sc.channel;
time_buf = softc->util_sc.receive_buffer;
ret = hv_vmbus_channel_recv_packet(channel, time_buf,
Index: sys/dev/hyperv/utilities/hv_util.h
===================================================================
--- sys/dev/hyperv/utilities/hv_util.h
+++ sys/dev/hyperv/utilities/hv_util.h
@@ -41,7 +41,7 @@
*/
void (*callback)(void *);
- struct hv_device* hv_dev;
+ struct hv_vmbus_channel *channel;
uint8_t *receive_buffer;
} hv_util_sc;
Index: sys/dev/hyperv/utilities/hv_util.c
===================================================================
--- sys/dev/hyperv/utilities/hv_util.c
+++ sys/dev/hyperv/utilities/hv_util.c
@@ -74,13 +74,11 @@
int
hv_util_attach(device_t dev)
{
- struct hv_device* hv_dev;
struct hv_util_sc* softc;
int ret;
- hv_dev = vmbus_get_devctx(dev);
softc = device_get_softc(dev);
- softc->hv_dev = hv_dev;
+ softc->channel = vmbus_get_channel(dev);
softc->receive_buffer =
malloc(4 * PAGE_SIZE, M_DEVBUF, M_WAITOK | M_ZERO);
@@ -91,9 +89,9 @@
* Turn off batched reading for all util drivers before we open the
* channel.
*/
- hv_set_channel_read_state(hv_dev->channel, FALSE);
+ hv_set_channel_read_state(softc->channel, FALSE);
- ret = hv_vmbus_channel_open(hv_dev->channel, 4 * PAGE_SIZE,
+ ret = hv_vmbus_channel_open(softc->channel, 4 * PAGE_SIZE,
4 * PAGE_SIZE, NULL, 0,
softc->callback, softc);
@@ -110,14 +108,10 @@
int
hv_util_detach(device_t dev)
{
- struct hv_device* hv_dev;
- struct hv_util_sc* softc;
-
- hv_dev = vmbus_get_devctx(dev);
+ struct hv_util_sc *sc = device_get_softc(dev);
- hv_vmbus_channel_close(hv_dev->channel);
- softc = device_get_softc(dev);
+ hv_vmbus_channel_close(sc->channel);
+ free(sc->receive_buffer, M_DEVBUF);
- free(softc->receive_buffer, M_DEVBUF);
return (0);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, May 24, 1:47 AM (16 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33461400
Default Alt Text
D7028.id18015.diff (4 KB)
Attached To
Mode
D7028: hyperv/util: Avoid the hv_device
Attached
Detach File
Event Timeline
Log In to Comment