Page MenuHomeFreeBSD

D7028.id18015.diff
No OneTemporary

D7028.id18015.diff

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

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)

Event Timeline