Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146220429
D7500.id19273.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D7500.id19273.diff
View Options
Index: sys/dev/hyperv/include/vmbus.h
===================================================================
--- sys/dev/hyperv/include/vmbus.h
+++ sys/dev/hyperv/include/vmbus.h
@@ -83,6 +83,7 @@
#define VMBUS_CHANPKT_TYPE_GPA 0x0009
#define VMBUS_CHANPKT_TYPE_COMP 0x000b
+#define VMBUS_CHANPKT_FLAG_NONE 0
#define VMBUS_CHANPKT_FLAG_RC 0x0001 /* report completion */
#define VMBUS_CHANPKT_CONST_DATA(pkt) \
Index: sys/dev/hyperv/netvsc/hv_net_vsc.c
===================================================================
--- sys/dev/hyperv/netvsc/hv_net_vsc.c
+++ sys/dev/hyperv/netvsc/hv_net_vsc.c
@@ -206,9 +206,8 @@
hn_send_ctx_init_simple(&sndc, hn_nvs_sent_xact, xact);
vmbus_xact_activate(xact);
- error = vmbus_chan_send(sc->hn_prichan,
- VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC,
- conn, sizeof(*conn), (uint64_t)(uintptr_t)&sndc);
+ error = hn_nvs_send(sc->hn_prichan, VMBUS_CHANPKT_FLAG_RC,
+ conn, sizeof(*conn), &sndc);
if (error != 0) {
if_printf(sc->hn_ifp, "send nvs rxbuf conn failed: %d\n",
error);
@@ -313,9 +312,8 @@
hn_send_ctx_init_simple(&sndc, hn_nvs_sent_xact, xact);
vmbus_xact_activate(xact);
- error = vmbus_chan_send(sc->hn_prichan,
- VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC,
- chim, sizeof(*chim), (uint64_t)(uintptr_t)&sndc);
+ error = hn_nvs_send(sc->hn_prichan, VMBUS_CHANPKT_FLAG_RC,
+ chim, sizeof(*chim), &sndc);
if (error) {
if_printf(sc->hn_ifp, "send nvs chim conn failed: %d\n",
error);
@@ -393,9 +391,10 @@
disconn.nvs_type = HN_NVS_TYPE_RXBUF_DISCONN;
disconn.nvs_sig = HN_NVS_RXBUF_SIG;
- ret = vmbus_chan_send(net_dev->sc->hn_prichan,
- VMBUS_CHANPKT_TYPE_INBAND, 0, &disconn, sizeof(disconn),
- (uint64_t)(uintptr_t)&hn_send_ctx_none);
+ /* NOTE: No response. */
+ ret = hn_nvs_send(net_dev->sc->hn_prichan,
+ VMBUS_CHANPKT_FLAG_NONE, &disconn, sizeof(disconn),
+ &hn_send_ctx_none);
if (ret != 0) {
if_printf(net_dev->sc->hn_ifp,
"send rxbuf disconn failed: %d\n", ret);
@@ -445,9 +444,10 @@
disconn.nvs_type = HN_NVS_TYPE_CHIM_DISCONN;
disconn.nvs_sig = HN_NVS_CHIM_SIG;
- ret = vmbus_chan_send(net_dev->sc->hn_prichan,
- VMBUS_CHANPKT_TYPE_INBAND, 0, &disconn, sizeof(disconn),
- (uint64_t)(uintptr_t)&hn_send_ctx_none);
+ /* NOTE: No response. */
+ ret = hn_nvs_send(net_dev->sc->hn_prichan,
+ VMBUS_CHANPKT_FLAG_NONE, &disconn, sizeof(disconn),
+ &hn_send_ctx_none);
if (ret != 0) {
if_printf(net_dev->sc->hn_ifp,
"send chim disconn failed: %d\n", ret);
@@ -509,9 +509,8 @@
vmbus_xact_activate(xact);
hn_send_ctx_init_simple(&sndc, hn_nvs_sent_xact, xact);
- error = vmbus_chan_send(sc->hn_prichan,
- VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC,
- init, sizeof(*init), (uint64_t)(uintptr_t)&sndc);
+ error = hn_nvs_send(sc->hn_prichan, VMBUS_CHANPKT_FLAG_RC,
+ init, sizeof(*init), &sndc);
if (error) {
if_printf(sc->hn_ifp, "send nvs init failed: %d\n", error);
vmbus_xact_deactivate(xact);
@@ -560,8 +559,9 @@
conf.nvs_mtu = mtu;
conf.nvs_caps = HN_NVS_NDIS_CONF_VLAN;
- error = vmbus_chan_send(sc->hn_prichan, VMBUS_CHANPKT_TYPE_INBAND, 0,
- &conf, sizeof(conf), (uint64_t)(uintptr_t)&hn_send_ctx_none);
+ /* NOTE: No response. */
+ error = hn_nvs_send(sc->hn_prichan, VMBUS_CHANPKT_FLAG_NONE,
+ &conf, sizeof(conf), &hn_send_ctx_none);
if (error)
if_printf(sc->hn_ifp, "send nvs ndis conf failed: %d\n", error);
return (error);
@@ -627,8 +627,9 @@
else
ndis.nvs_ndis_minor = NDIS_VERSION_MINOR_30;
- ret = vmbus_chan_send(sc->hn_prichan, VMBUS_CHANPKT_TYPE_INBAND, 0,
- &ndis, sizeof(ndis), (uint64_t)(uintptr_t)&hn_send_ctx_none);
+ /* NOTE: No response. */
+ ret = hn_nvs_send(sc->hn_prichan, VMBUS_CHANPKT_FLAG_NONE,
+ &ndis, sizeof(ndis), &hn_send_ctx_none);
if (ret != 0) {
if_printf(sc->hn_ifp, "send nvs ndis init failed: %d\n", ret);
goto cleanup;
@@ -834,12 +835,11 @@
sndc->hn_chim_sz;
if (gpa_cnt) {
- ret = vmbus_chan_send_sglist(chan, gpa, gpa_cnt,
- &send_msg, sizeof(nvsp_msg), (uint64_t)(uintptr_t)sndc);
+ ret = hn_nvs_send_sglist(chan, gpa, gpa_cnt,
+ &send_msg, sizeof(nvsp_msg), sndc);
} else {
- ret = vmbus_chan_send(chan,
- VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC,
- &send_msg, sizeof(nvsp_msg), (uint64_t)(uintptr_t)sndc);
+ ret = hn_nvs_send(chan, VMBUS_CHANPKT_FLAG_RC,
+ &send_msg, sizeof(nvsp_msg), sndc);
}
return (ret);
Index: sys/dev/hyperv/netvsc/hv_rndis_filter.c
===================================================================
--- sys/dev/hyperv/netvsc/hv_rndis_filter.c
+++ sys/dev/hyperv/netvsc/hv_rndis_filter.c
@@ -1177,9 +1177,8 @@
hn_send_ctx_init_simple(&sndc, hn_nvs_sent_xact, xact);
vmbus_xact_activate(xact);
- ret = vmbus_chan_send(sc->hn_prichan,
- VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC,
- req, sizeof(*req), (uint64_t)(uintptr_t)&sndc);
+ ret = hn_nvs_send(sc->hn_prichan, VMBUS_CHANPKT_FLAG_RC,
+ req, sizeof(*req), &sndc);
if (ret != 0) {
if_printf(sc->hn_ifp, "send nvs subch req failed: %d\n", ret);
vmbus_xact_deactivate(xact);
Index: sys/dev/hyperv/netvsc/if_hnvar.h
===================================================================
--- sys/dev/hyperv/netvsc/if_hnvar.h
+++ sys/dev/hyperv/netvsc/if_hnvar.h
@@ -30,6 +30,8 @@
#define _IF_HNVAR_H_
#include <sys/param.h>
+
+#include <dev/hyperv/include/vmbus.h>
#include <dev/hyperv/netvsc/hv_net_vsc.h>
struct netvsc_dev_;
@@ -61,6 +63,7 @@
hn_send_ctx_init(struct hn_send_ctx *sndc, hn_sent_callback_t cb,
void *cbarg, uint32_t chim_idx, int chim_sz)
{
+
sndc->hn_cb = cb;
sndc->hn_cbarg = cbarg;
sndc->hn_chim_idx = chim_idx;
@@ -71,10 +74,29 @@
hn_send_ctx_init_simple(struct hn_send_ctx *sndc, hn_sent_callback_t cb,
void *cbarg)
{
+
hn_send_ctx_init(sndc, cb, cbarg,
NVSP_1_CHIMNEY_SEND_INVALID_SECTION_INDEX, 0);
}
+static __inline int
+hn_nvs_send(struct vmbus_channel *chan, uint16_t flags,
+ void *nvs_msg, int nvs_msglen, struct hn_send_ctx *sndc)
+{
+
+ return (vmbus_chan_send(chan, VMBUS_CHANPKT_TYPE_INBAND, flags,
+ nvs_msg, nvs_msglen, (uint64_t)(uintptr_t)sndc));
+}
+
+static __inline int
+hn_nvs_send_sglist(struct vmbus_channel *chan, struct vmbus_gpa sg[], int sglen,
+ void *nvs_msg, int nvs_msglen, struct hn_send_ctx *sndc)
+{
+
+ return (vmbus_chan_send_sglist(chan, sg, sglen, nvs_msg, nvs_msglen,
+ (uint64_t)(uintptr_t)sndc));
+}
+
void hn_nvs_sent_xact(struct hn_send_ctx *sndc,
struct netvsc_dev_ *net_dev, struct vmbus_channel *chan,
const struct nvsp_msg_ *msg, int dlen);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 1, 9:00 PM (5 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29095527
Default Alt Text
D7500.id19273.diff (6 KB)
Attached To
Mode
D7500: hyperv/hn: Factor out hn_nvs_send/hn_nvs_send_sglist
Attached
Detach File
Event Timeline
Log In to Comment