Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F137100791
D7479.id19214.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D7479.id19214.diff
View Options
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
@@ -436,33 +436,24 @@
static int
hv_nv_destroy_send_buffer(netvsc_dev *net_dev)
{
- nvsp_msg *revoke_pkt;
int ret = 0;
- /*
- * If we got a section count, it means we received a
- * send_rx_buf_complete msg
- * (ie sent nvsp_msg_1_type_send_rx_buf msg) therefore,
- * we need to send a revoke msg here
- */
if (net_dev->send_section_size) {
- /* Send the revoke send buffer */
- revoke_pkt = &net_dev->revoke_packet;
- memset(revoke_pkt, 0, sizeof(nvsp_msg));
+ struct hn_nvs_chim_disconn disconn;
- revoke_pkt->hdr.msg_type =
- nvsp_msg_1_type_revoke_send_buf;
- revoke_pkt->msgs.vers_1_msgs.revoke_send_buf.id =
- NETVSC_SEND_BUFFER_ID;
+ /*
+ * Disconnect chimney sending buffer from NVS.
+ */
+ memset(&disconn, 0, sizeof(disconn));
+ 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, revoke_pkt, sizeof(nvsp_msg),
+ VMBUS_CHANPKT_TYPE_INBAND, 0, &disconn, sizeof(disconn),
(uint64_t)(uintptr_t)&hn_send_ctx_none);
- /*
- * If we failed here, we might as well return and have a leak
- * rather than continue and a bugchk
- */
if (ret != 0) {
+ if_printf(net_dev->sc->hn_ifp,
+ "send chim disconn failed: %d\n", ret);
return (ret);
}
}
Index: sys/dev/hyperv/netvsc/if_hnreg.h
===================================================================
--- sys/dev/hyperv/netvsc/if_hnreg.h
+++ sys/dev/hyperv/netvsc/if_hnreg.h
@@ -45,6 +45,7 @@
#define HN_NVS_TYPE_RXBUF_DISCONN 103
#define HN_NVS_TYPE_CHIM_CONN 104
#define HN_NVS_TYPE_CHIM_CONNRESP 105
+#define HN_NVS_TYPE_CHIM_DISCONN 106
#define HN_NVS_TYPE_NDIS_CONF 125
/*
@@ -135,4 +136,12 @@
uint32_t nvs_sectsz; /* section size */
} __packed;
+/* No response */
+struct hn_nvs_chim_disconn {
+ uint32_t nvs_type; /* HN_NVS_TYPE_CHIM_DISCONN */
+ uint16_t nvs_sig; /* HN_NVS_CHIM_SIG */
+ uint8_t nvs_rsvd[26];
+} __packed;
+CTASSERT(sizeof(struct hn_nvs_chim_disconn) >= HN_NVS_REQSIZE_MIN);
+
#endif /* !_IF_HNREG_H_ */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 22, 3:40 AM (13 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25895418
Default Alt Text
D7479.id19214.diff (2 KB)
Attached To
Mode
D7479: hyperv/hn: Simplify chimney sending buffer disconnection.
Attached
Detach File
Event Timeline
Log In to Comment