Page MenuHomeFreeBSD

D7621.diff
No OneTemporary

D7621.diff

Index: head/sys/dev/hyperv/netvsc/hv_rndis_filter.c
===================================================================
--- head/sys/dev/hyperv/netvsc/hv_rndis_filter.c
+++ head/sys/dev/hyperv/netvsc/hv_rndis_filter.c
@@ -62,6 +62,9 @@
HV_RF_RECVINFO_HASHINF | \
HV_RF_RECVINFO_HASHVAL)
+#define HN_RNDIS_RID_COMPAT_MASK 0xffff
+#define HN_RNDIS_RID_COMPAT_MAX HN_RNDIS_RID_COMPAT_MASK
+
/*
* Forward declarations
*/
@@ -202,9 +205,8 @@
* as a template.
*/
set = &rndis_mesg->msg.set_request;
- set->request_id = atomic_fetchadd_int(&device->new_request_id, 1);
- /* Increment to get the new value (call above returns old value) */
- set->request_id += 1;
+ set->request_id = atomic_fetchadd_int(&device->new_request_id, 1) &
+ HN_RNDIS_RID_COMPAT_MASK;
/* Add to the request list */
mtx_lock(&device->req_lock);
@@ -552,6 +554,7 @@
{
rndis_device *rndis_dev;
const rndis_msg *rndis_hdr;
+ const struct rndis_comp_hdr *comp;
rndis_dev = sc->rndis_dev;
if (rndis_dev->state == RNDIS_DEV_UNINITIALIZED)
@@ -569,7 +572,11 @@
case REMOTE_NDIS_QUERY_CMPLT:
case REMOTE_NDIS_SET_CMPLT:
case REMOTE_NDIS_KEEPALIVE_CMPLT:
- hv_rf_receive_response(rndis_dev, rndis_hdr);
+ comp = data;
+ if (comp->rm_rid <= HN_RNDIS_RID_COMPAT_MAX) {
+ /* Transition time compat code */
+ hv_rf_receive_response(rndis_dev, rndis_hdr);
+ }
break;
/* notification message */

File Metadata

Mime Type
text/plain
Expires
Sat, Aug 8, 4:02 AM (11 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36209005
Default Alt Text
D7621.diff (1 KB)

Event Timeline