# US 10,372,470 B2 · Copy of memory information from a guest transmit descriptor from a free pool and assigned an intermediate state to a tracking data structure

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,470 B2
- Document ID: US10372470B2
- Status: Granted
- Kind: B2
- Application number: 15/648,073
- Filed: 2017-07-12
- Published: 2018-02-01
- Granted: 2019-08-06
- Earliest claimed: 2016-07-27
- Assignees: Hewlett Packard Enterprise Development LP
- Applicants: Hewlett Packard Enterprise Development LP
- Inventors: Sourav Roy; Sathish Kumar Raju
- Web page: https://patentgrep.com/patent/US10372470B2

## CPC

- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 3/0628: {making use of a particular technique}
- G06F 3/0638: {Organizing or formatting or addressing of data}
- G06F 3/0668: {adopting a particular infrastructure}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 12/10: Address translation
- G06F 16/2228: {Indexing structures}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Examples include the copy of memory information from a transmit descriptor to a tracking data structure. Some examples include the memory information being copied from a guest transmit descriptor to a tracking data structure of the guest OS and assignment of the guest transmit descriptor back to a free pool, in response to a determination that the guest transmit descriptor is assigned to an intermediate state.

## Claims

### Claim 1

An article comprising at least one non-transitory machine-readable storage medium comprising instructions executable by at least one processing resource to execute a guest operating system (OS) virtual network driver to:
allocate, from a free pool, a guest transmit descriptor of the guest OS for transmission of data by the guest OS virtual network driver via a hypervisor associated with the guest OS, the allocation including assigning a busy state to the guest transmit descriptor;
notify the hypervisor of the allocated guest transmit descriptor;
after the notification, determine that the guest transmit descriptor is assigned an intermediate state different than the busy state;
in response to the determination, copy memory information stored in the guest transmit descriptor to a tracking data structure of the guest OS and assign the guest transmit descriptor back to the free pool; and
after the assignment of the guest transmit descriptor back to the free pool, and in response to an indication that a transmit complete notification was provided for the data, deallocate memory referenced by the memory information copied from the guest transmit descriptor to the tracking data structure, including memory storing the data.

### Claim 2 (depends on 1)

The article of claim 1, wherein:
the guest transmit descriptor is a given one of a fixed number of guest transmit descriptors of the guest OS and that are maintained in a circular list data structure of the guest OS; and
the instructions to determine comprise instructions to:
determine that the given guest transmit descriptor is assigned the intermediate state, after the notification of the hypervisor and prior to any indication that a transmit complete notification has been provided for the data.

### Claim 3 (depends on 2)

The article of claim 2, wherein the instructions to allocate comprise instructions to:
in response to an indication that the data is to be transmitted via the guest OS virtual network driver:
identify the given guest transmit descriptor from the free pool of the guest transmit descriptors; and
store memory information in the given guest transmit descriptor, the memory information referencing a first memory location of the host storing the data and referencing a second memory location storing an indication of the busy state for the given guest transmit descriptor.

### Claim 4 (depends on 2)

The article of claim 2, wherein the instructions to determine comprise instructions to:
periodically inspect at least some of the fixed number of guest transmit descriptors to identify any of the guest transmit descriptors that have been assigned to an intermediate state; and
periodically inspect the tracking data structure to identify any status information referenced by the tracking data structure that indicates a free state;
wherein the instructions to copy and assign comprise instructions to:
in response to the determination and prior to any indication that a transmit complete notification was provided for the data, copy memory information stored in the given guest transmit descriptor to a tracking data structure of the guest OS and assign the given guest transmit descriptor back to the free pool.

### Claim 5 (depends on 1)

The article of claim 1, wherein the instructions are further executable to:
after the assignment of the guest transmit descriptor to the free pool and prior to any indication that a transmit complete notification has been provided for the data, reallocate the selected guest transmit descriptor, from the free pool, for transmission of other data;
wherein the reallocation includes assigning the busy state to the guest transmit descriptor.

### Claim 6 (depends on 5)

The article of claim 5, wherein:
the at least one machine-readable storage medium and the at least one processing resource are part of a host computing device to execute the guest OS virtual network driver and the hypervisor;
the data is to be transmitted to a computing device remote from the host computing device via a physical network interface of the host computing device; and
the other data is to be transmitted to a destination local to the host computing device and without use of the physical network interface of the host computing device.

### Claim 7 (depends on 1)

The article of claim 1, wherein the at least one non-transitory machine-readable storage medium further comprises instructions executable by the at least one processing resource to execute the hypervisor to:
in response to notification of the allocated guest transmit descriptor assigned the busy state, instruct the host computing device to transmit the data via the physical network interface, wherein the guest transmit descriptor is associated with the data; and
after the instruction of the host computing device and before receiving a transmit complete notification for the data, change the state of the guest transmit descriptor to an intermediate state.

### Claim 8

A host computing device comprising:
a network interface;
memory to store instructions to implement a guest operating system (OS) virtual network driver and a hypervisor; and
at least one processing resource to execute the instructions;
wherein the hypervisor instructions are executable to:
based on a given guest transmit descriptor of the guest OS that is assigned a busy state and associated with data for transmission, instruct the host computing device to transmit the data via the network interface; and
after the instruction and before receiving a transmit complete notification for the data, change the state of the given guest transmit descriptor to an intermediate state; and
wherein the guest OS virtual network driver instructions are executable to:
in response to a determination that the given guest transmit descriptor is assigned the intermediate state:
copy memory information from the given guest transmit descriptor to a tracking data structure of the guest OS; and
assign the given guest transmit descriptor to a free pool of guest transmit descriptors for the guest OS; and
after the assignment to the free pool and in response to an indication that a transmit complete notification was provided for the data, deallocate memory referenced by the memory information copied from the given guest transmit descriptor to the tracking data structure.

### Claim 9 (depends on 8)

The host computing device of claim 8, wherein the guest OS virtual network driver instructions are further executable to:
after the assignment to the free pool and prior to any indication that a transmit complete notification has been provided for the data, reallocate the given guest transmit descriptor, from the free pool, for transmission of other data;
wherein the reallocation includes assigning the busy state to the given guest transmit descriptor.

### Claim 10 (depends on 8)

The host computing device of claim 8, wherein:
the hypervisor instructions are further executable to:
in response to receiving a transmit complete notification for the data, set status information to indicate a free state, wherein the status information is referenced by the memory information copied from the given guest transmit descriptor to the tracking data structure; and
the guest OS virtual network driver instructions to deallocate comprise instructions to:
after the assignment to the free pool and in response to identifying that the status information is set to indicate the free state, deallocate the memory referenced by the memory information copied from the given guest transmit descriptor to the tracking data structure, including memory storing the data for transmission.

### Claim 11 (depends on 8)

The host computing device of claim 8, wherein the guest OS virtual network driver instructions are further executable to, prior to the hypervisor instructing the host computing device to transmit the data:
allocate, for transmission of the data, the given guest transmit descriptor from the free pool of guest transmit descriptors, the allocation including assigning a busy state to the guest transmit descriptor and associating the data with the given guest transmit descriptor.

### Claim 12 (depends on 8)

The host computing device of claim 8, wherein:
the memory information of the given guest transmit descriptor comprises:
a pointer to a first memory location including the data for transmission; and
a pointer to a second memory location to store status information, including any state assigned to the given guest transmit descriptor;
the given guest transmit descriptor further comprises memory mapping information;
the instructions to deallocate include instructions further to, in response to the indication that the transmit complete notification was provided for the data, deallocate the memory storing the memory mapping information copied from the guest transmit descriptor to the tracking data structure.

### Claim 13

A method of a host computing device comprising:
with a guest operating system (OS) virtual network driver of a guest OS of the host computing device:
allocating, for transmission of first data, a given guest transmit descriptor from a free pool of a circular list of a predetermined number of guest transmit descriptors of the guest OS, the allocating including assigning a busy state to the given guest transmit descriptor;
notifying a hypervisor associated with the guest OS of the given guest transmit descriptor allocated and assigned the busy state;
in response to determining that the given guest transmit descriptor is assigned an intermediate state different than the busy state:
copying memory information stored in the given guest transmit descriptor to a tracking data structure of the guest OS; and
assigning the given guest transmit descriptor back to the free pool; and
from the free pool, reallocating the given guest transmit descriptor for transmission of second data, prior to any indication that a transmit complete notification has been provided for the first data; and
in response to an indication that a transmit complete notification has been provided for the first data, deallocating memory referenced by the memory information copied from the given guest transmit descriptor to the tracking data structure.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
with the hypervisor of the host computing device:
in response to notification of the given guest transmit descriptor allocated and assigned the busy state, instructing a component of the host computing device to transmit the first data to a destination, wherein the guest transmit descriptor is associated with the first data; and
after the instruction of the host computing device component and before receiving a transmit complete notification for the first data, changing the state of the given guest transmit descriptor to an intermediate state.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
with the hypervisor of the host computing device:
in response to receiving a transmit complete notification for the first data, set status information to indicate a free state, wherein the status information is referenced by the memory information copied from the given guest transmit descriptor to the tracking data structure.
