hyperv/util: Avoid the hv_device
This paves way to nuke the hv_device, which is actually an unncessary indirection. MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D7028
This commit is contained in:
parent
d2c2a2ef36
commit
2d19acf75b
@ -61,7 +61,7 @@ hv_heartbeat_cb(void *context)
|
||||
|
||||
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);
|
||||
|
@ -308,10 +308,6 @@ hv_kvp_convert_utf16_ipinfo_to_utf8(struct hv_kvp_ip_msg *host_ip_msg,
|
||||
{
|
||||
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 @@ hv_kvp_convert_utf16_ipinfo_to_utf8(struct hv_kvp_ip_msg *host_ip_msg,
|
||||
|
||||
if (devclass_get_devices(devclass_find("hn"), &devs, &devcnt) == 0) {
|
||||
for (devcnt = devcnt - 1; devcnt >= 0; devcnt--) {
|
||||
sc = device_get_softc(devs[devcnt]);
|
||||
/* 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];
|
||||
|
||||
/* Trying to find GUID of Network Device */
|
||||
hv_dev = sc->hn_dev_obj;
|
||||
|
||||
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_kvp_respond_host(hv_kvp_sc *sc, int error)
|
||||
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 @@ hv_kvp_process_request(void *context, int pending)
|
||||
|
||||
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);
|
||||
|
@ -65,7 +65,7 @@ hv_shutdown_cb(void *context)
|
||||
|
||||
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);
|
||||
|
||||
|
@ -140,7 +140,7 @@ hv_timesync_cb(void *context)
|
||||
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,
|
||||
|
@ -74,13 +74,11 @@ hv_negotiate_version(
|
||||
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 @@ hv_util_attach(device_t dev)
|
||||
* 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 @@ hv_util_attach(device_t dev)
|
||||
int
|
||||
hv_util_detach(device_t dev)
|
||||
{
|
||||
struct hv_device* hv_dev;
|
||||
struct hv_util_sc* softc;
|
||||
struct hv_util_sc *sc = device_get_softc(dev);
|
||||
|
||||
hv_dev = vmbus_get_devctx(dev);
|
||||
hv_vmbus_channel_close(sc->channel);
|
||||
free(sc->receive_buffer, M_DEVBUF);
|
||||
|
||||
hv_vmbus_channel_close(hv_dev->channel);
|
||||
softc = device_get_softc(dev);
|
||||
|
||||
free(softc->receive_buffer, M_DEVBUF);
|
||||
return (0);
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ typedef struct hv_util_sc {
|
||||
*/
|
||||
void (*callback)(void *);
|
||||
|
||||
struct hv_device* hv_dev;
|
||||
struct hv_vmbus_channel *channel;
|
||||
uint8_t *receive_buffer;
|
||||
} hv_util_sc;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user