NETWORK INTERFACE MAPS SERVICE
Patent Information
- Application Number
- DE102026108528
- Authority / Receiving Office
- DE · DE
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2025-06-05
- Filing Date
- 2026-03-03
- Publication Date
- 2026-09-03
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
RELATED REGISTRATIONS The present application is a national phase application in the USA pursuant to 35 USC § 371, claiming priority from the international application filed on March 3, 2025, bearing the number PCT / CN2025 / 080244, which is hereby incorporated by reference in full for all purposes. TECHNICAL AREA At least one embodiment relates to processing resources and techniques used to improve the robustness of network connectivity applications and devices. For example, at least one embodiment relates to improvements in network communication using network interface cards. BACKGROUND A network interface card (NIC) is a hardware component that allows a device, such as a computer, server, printer, or similar device, to connect to a network. The NIC enables the device to send and receive data over the network by facilitating communication between devices. NICs can utilize Remote Direct Memory Access (RDMA) to allow direct data transfer between the memory of two devices, including remote locations, bypassing the host CPU and operating system. SUMMARY The invention is defined by the claims. To illustrate the invention, aspects and embodiments that may or may not fall within the scope of the claims are described here. The provisions, systems, and techniques that enable existing network interface architectures to implement extended architectural capabilities are disclosed. The network interface card can allow modifications to network interface resources in parallel with the functionality of a privileged host controller to implement these extended architectural capabilities. A command can be intercepted and inspected by a privileged host controller to validate the command's permissions. Once it has been determined that the command involves modifying a modifiable network interface resource and that the source of the command is authorized to modify the network interface resource, the command is provided to the network interface card.Any part of the command that cannot be completed on the network interface card architecture can be executed using the privileged host controller. Each feature of an aspect or embodiment can be applied to other aspects or embodiments in any suitable combination. In particular, each feature of a process aspect or embodiment can be applied to an aspect of the device or embodiment, and vice versa. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a schematic block diagram of an exemplary system architecture providing for the modification of network interface resources according to at least one embodiment; Fig. 2 illustrates an exemplary communication flow between a host device and a network interface card for configuring and enabling modifications of a network interface card according to at least one embodiment; Fig. 3 illustrates an exemplary communication flow between the host device and the network interface card for executing commands to improve network interface resources on hardware of the network interface card and a privileged host controller of the host device according to at least one embodiment; Fig.Figure 4 is a flowchart of an exemplary method for enabling extended network interface card functionality using network interface card hardware with limited functionality according to at least one embodiment; Figure 5 is a flowchart of an exemplary method for configuring a network interface card to enable modification of network interface resources according to at least one embodiment; Figure 6 is a flowchart of an exemplary method for modifying a network interface card to improve network interface resources according to at least one embodiment; and Figure 7 is a block diagram of an exemplary computer device suitable for use in implementing some embodiments of the present disclosure. DETAILED DESCRIPTION Aspects of the present disclosure relate to the provision of improved network interface resources for network interface formation. As explained above, a network interface card (NIC) is a hardware component that allows a device, such as a computer, server, printer, or similar device, to connect to a network. The NIC enables the device to send and receive data over the network by facilitating communication between devices. NICs can utilize Remote Direct Memory Access (RDMA) to allow direct data transfer between the memory of two devices, including remote storage locations, bypassing the host CPU and operating system. Traditional RDMA implementations are limited to performing operations supported by the NIC hardware. Extending RDMA capabilities requires a hardware redesign, which is costly and time-consuming. Furthermore, NICs are conventionally designed with dedicated central processing units (CPUs) that are subject to size constraints, limiting their use to NIC functions. Any additional NIC functionality, such as that enabled by extended RDMA, may require increased CPU resources, leading to higher design and component costs. Aspects of this disclosure address the aforementioned and other shortcomings by providing a solution that enhances extended RDMA for a given NIC hardware case. Specifically, aspects of this disclosure utilize a privileged host controller in combination with NIC hardware for extended RDMA to enable increased NIC performance. Although described as relating to the use of a privileged host controller to enable extended RDMA, it should be understood that transport objects and network properties of other NIC network interface resources can also be enhanced using this solution. In at least one embodiment, a network interface card (NIC) can be programmed to be modifiable by a privileged host controller on a user's host computer ("host"). In at least one embodiment, during the manufacturing process, the NIC can be programmed using an instruction file stored in the NIC's memory. The instruction file can be adapted from conventional instruction files to allow aspects of NIC operations to be modified during implementation by a privileged host controller. The instruction file can be integrated into the NIC by the privileged host controller during the manufacturing process or during initialization on the host. The instruction file can define which aspects of NIC operations can be modified, validated by users, or otherwise performed.For example, a NIC can be configured to allow users to modify transport objects, such as queue pairs of RDMA network interface resources. The NIC configuration can include restrictions on what is modifiable—for instance, the user might be allowed to manipulate queue pairs but prevented from manipulating RDMA memory areas. Upon receiving a command from the host, the NIC can first determine whether the network interface resource specified in the command corresponds to a modifiable network interface resource, where a network interface resource can represent one or more transport objects or network properties. Transport objects and network properties can define units of data transported over the network and discrete segments that enable the transport of that data.In some implementations, the transport objects are queue pairs, memory areas, or completion queues. For example, if the NIC is configured to allow queue pairs to be modifiable while memory areas remain unchanged, a command to modify the memory areas will be ignored by the NIC. In at least one embodiment, the NIC can be configured to verify the source of the user command. A limited number of users can be permitted to configure the NIC, and their user commands can be subject to restrictions. For example, within an organization using a configurable NIC, only system administrators may be permitted to issue user commands. Furthermore, system administrators may be restricted in the user commands they are allowed to issue based on their level within the administration. Pre-deployment configurations or the use of a setup protocol when connecting the NIC to the privileged host controller can allow the user to configure security protocols to prevent unauthorized user commands. In at least one embodiment, after the NIC is configured to be modifiable by a privileged host controller, software (e.g., an application or module independent of the privileged host controller) on a host can send a NIC modification command to the NIC to manipulate one or more transport objects and / or network properties. The privileged host controller can intercept the NIC modification command and may first perform a security check and a hardware check. A security check can be used to ensure that the network interface resource being requested to be modified is authorized to be modified, that the user has the necessary permissions to modify the network interface resource, that the command is a valid command (e.g., using authentication procedures), and so on. In at least one embodiment, after determining that the command is safe, the NIC can be prompted, based on its capabilities, to identify possible modifications to modifiable network interface resources that can be completed entirely or partially by the NIC. For example, upon receiving a command to expand queue pairs for congestion control, the NIC can determine whether it can execute the command using available procedures and NIC hardware. This determination can be completed on the NIC after the privileged host controller has provided the NIC with the safe command, or on the privileged host controller, which can provide a new command for the NIC to execute a portion of the original command. In at least one embodiment, after determining that the NIC can complete the instruction, the NIC can execute the instruction and return an acknowledgment to the host. For example, if the congestion control requested by the NIC modification instruction can be completed using timed execution of queue pair states that can be controlled by the NIC using hardware, the NIC can complete the NIC modification instruction and return an acknowledgment. After determining that the NIC can partially complete the instruction, the NIC can execute a first part (which the NIC can execute) of the instruction and submit a second part (which the NIC cannot execute) of the instruction to a CPU on the host. The NIC can return an acknowledgment to the host upon execution of the first part.The host CPU can be used by the privileged host controller to execute the second part of the instruction to complete it. For example, if congestion control can be partially completed using timed execution of queue pair states in the NIC hardware, but additional congestion control using traffic throttling is required that the hardware cannot perform, the NIC can submit the traffic throttling request to the privileged host controller and perform the timed execution. If it is determined that the entire instruction must be executed outside the NIC, the instruction can be submitted to the host CPU for execution.For example, if congestion control can only be completed using traffic throttling that cannot be performed by the hardware, the NIC can submit the traffic throttling request to the privileged host controller. Embodiments of the present disclosure can improve upon the inability of existing technologies to control or modify network interface resources of a NIC without requiring the manufacture of new NIC hardware. The user-privileged host controller described herein can leverage NIC hardware functionality with functionality of software stored on the host to enable the use of programmable extended RDMA network interface resources with non-extended RDMA NIC firmware. This makes it possible to utilize computing power on the host to enable an extended RDMA configuration without redesigning NIC components.The disclosed embodiments can be included in a variety of different systems, such as automotive systems (e.g., a control system for an autonomous or semi-autonomous machine, a perception system for an autonomous or semi-autonomous machine), systems implemented using a robot, flight systems, medical systems, boat systems, intelligent area monitoring systems, systems for performing deep learning operations, systems for performing simulation operations, systems for performing digital twin operations, systems implemented using an edge device, systems for generating or displaying at least one type of augmented reality content, virtual reality content, mixed reality content, systems implementing one or more virtual machines (VMs), and systems for performing operations to generate synthetic data.Systems implemented at least partially in a data center, systems for performing operations with conversational AI, systems for performing light transport simulations, systems for performing collaborative content creation for 3D assets, systems that implement one or more language models, such as Large Language Models (LLMs), Small Language Models (SLMs), Visual Language Models (VLMs) and Multimodal Language Models (MMLMs) (which process text, speech, image and / or other types of data to produce output in one or more formats), systems implemented at least partially using cloud computing resources, systems for performing operations with generative AI and / or other types of systems. Figure 1 is a schematic block diagram of an exemplary system architecture 100, which provides for a modification of network interface resources according to at least one embodiment. The system architecture 100 can include a host device 102 and a network interface card (NIC) 110 for connecting the host device 102 to a network. The host device 102 can include a central processing unit (CPU) 108, which is manageable by an application (not shown). The host device 102 can further include application(s) 104 and a privileged host controller 106. The application(s) 104 can run in user mode with restricted access to system resources. The privileged host controller 106 can run in privileged mode with access to hardware and system resources and can utilize the capabilities of the CPU 108 to extend the network capabilities of the NIC 110.The host device 102 can be any device on which a privileged host controller 106 can be hosted and operated. For example, a host device 102 can be a computer, a server, a printer, etc., which may have memory or mass storage for hosting the privileged host controller 106 and a processing unit usable by the privileged host controller 106. The NIC 110 can include hardware 114, which is responsible for the physical and electrical functions of connecting the host device 102 to a network. The hardware 114 can handle the physical aspects of network communication, such as data conversion between signal types. The hardware 114 can include components for connecting the host device 102 via various network communication protocols. For example, the hardware 114 of the NIC 110 can be configured to provide a connection to a network via Ethernet, Data Link, and the like. The hardware 114 can be directly connected to a transmission medium, such as a wire, cable, radio, etc., and can control the data flow through the transmission medium. In some embodiments, the hardware 114 can be configured to execute a network protocol to enable the transmission of data to a network.For example, the hardware 114 can be configured to support an RDMA protocol, which allows the hardware 114 to directly access memory areas on remote systems without involving the CPU 116 in the data transfer. Device firmware 112 can be configured to initialize NIC 110 during a device boot process. Configuring and initializing NIC 110, for example, by using initialization files stored on NIC 110 to configure NIC 110 processes, can make NIC 110 modifiable by the privileged host controller 106 of host device 102. The initialization files can be provided to NIC 110, for example, at the end of a manufacturing process before it is inserted into system 100. The initialization files can also be provided to NIC 110 by host device 102 when it connects to system 100.The device firmware 112 can also handle data relating to the performance or capabilities of the NIC 110. In some embodiments, the NIC 110 can be configured to receive NIC modification commands from the application 104 of the host device 102 at the device firmware 112. In some embodiments, such as within an RDMA-enabled system, the device firmware 112 can configure NIC interface resources, such as transport objects and network properties. Transport objects can include queue pairs, completion queues, memory areas, and protection domains, and are abstractions that enable high-performance data transfer by managing communication resources, memory access, and operational states.These objects facilitate efficient, direct memory access between systems, enabling low-latency, high-throughput networking without CPU involvement in data transmission. The overall network performance of NIC 110 can be adjusted by modifying the behavior of the transport objects. CPU 116 can be used to configure protocol operations, such as preparing memory areas, managing the connection setup, and handling error response for NIC 110. In some configurations, the extended capabilities of the NIC 110 may not be supported by the NIC 110 hardware. For example, the hardware for implementing RDMA protocols may be a first set of hardware components. Extended RDMA may not be supported by this first set of hardware components but may require a second set of hardware components to enable extended RDMA in conventional systems. For example, extended RDMA protocols may require modifications to queue pairs, communication queues, and memory areas that are not supported by the NIC 114 hardware. To enable extended RDMA protocols on the first set of hardware, the RDMA hardware 114, the NIC 110 may require external modifications to the privileged host controller 110. Device firmware 112 of NIC 110 can receive messages to and from host device 102 to connect host device 102 to a network. Device firmware 112 can initialize and configure the NIC during a device boot process. Depending on initialization files on NIC 110, configuring and initializing NIC 110 can make NIC 110 modifiable by the privileged host controller 106 of host device 102. Device firmware 112 can also handle data related to the performance or capabilities of NIC 110. In some embodiments, NIC 110 can be configured to receive NIC modification commands from application 104 of host device 102 at device firmware 112. In some embodiments, the device firmware 112 can use CPU 116 of NIC 110 to complete the initialization and data interpretation of the device firmware 112. For example, after receiving a NIC modification instruction, the device firmware 112 can provide the NIC modification instruction to CPU 116 for processing. Using CPU 116 of NIC 110, the device firmware 112 can determine the capability of hardware 114 of NIC 110 to execute the modification. In some embodiments, CPU 116 is subject to size limitations, such that only enough data is computed to maintain the intended functionality of hardware 114 of NIC 110. Any additional processing required to execute a NIC modification instruction may require more computing power than is available in NIC 110.For example, if a NIC modification instruction is directed at a modification for extended RDMA, the hardware 114 of NIC 110 may be able to execute an initial part of the instruction, but any additional modifications not performed on the hardware 114 may not be supported by the available capabilities of CPU 116. In some embodiments, the application can issue 104 instructions to perform network and system tasks throughout the system. An issued instruction might be, for example, a NIC modification instruction. NIC modification instructions can be instructions issued to optimize, monitor, and manage system resources of applications, devices, and services associated with the host device. For example, NIC modification instructions can be issued to the CPU, memory, data storage, and the NIC to allocate resources, monitor performance, manage priorities, limit resources, balance system loads, and so on.NIC modification commands issued by application 104 can be generated automatically by the system based on current workload conditions, or they can be generated by a system administrator or a user of a host device 102 with administrator privileges to configure, manage, and monitor resources. In some embodiments, the host device 102 can include a privileged host controller 106, which is coupled to the application 104 and the CPU 108. The privileged host controller 106 can be used to extend the capabilities of the NIC 110. To extend the capabilities of the NIC 110, the privileged host controller 106 can monitor the application 104 to identify any outgoing instructions. The privileged host controller 106 can verify an identified outgoing instruction and determine whether the instruction is a NIC modification instruction. The privileged host controller 106 can access communication channels between the application 104 and the NIC 110, so that a command running between the application 104 and the NIC 110 can be intercepted by the privileged host controller 106 and prevented from reaching the NIC 110. In some embodiments, the privileged host controller 106 can be configured to verify that the NIC modification command is a safe command. A safe command can be a NIC modification command generated by an authorized user of the host device 102. A safe command can be a NIC modification command directed at modifying one or more network resources that are authorized to be modified. A safe command can be a NIC modification command directed at modifying one or more network resources that are authorized to be modified by the user of the host device 102. In some embodiments, the privileged host controller 106 can be configured to verify whether the NIC modification instruction of application 104 is executable by NIC 110 on the hardware 114 of NIC 110. In some embodiments, the privileged host controller 106 can determine that the NIC modification instruction of application 104 is partially executable by the hardware 114 of NIC 110. In some embodiments, the privileged host controller 106 can determine that the NIC modification instruction of application 104 is not executable by the hardware 114 of NIC 110. In embodiments where the instruction is partially executable by the hardware 114 of the NIC 110 or not executable by the hardware 114 of the NIC 110, the privileged host controller 106 may be configured to execute a portion of the NIC modification instruction in order to fulfill the NIC modification instruction as intended by the user of the application 104.For example, the NIC modification command can instruct NIC 110 to control congestion at a specific control level. NIC 110's hardware 114 can be used to time the execution of queue pair states to control congestion. However, depending on the control level specified by the NIC modification command, additional congestion control measures may be required. If no other measures can be taken on hardware 114 without modifying its physical components, such as by redesigning it, the privileged host controller 106 can determine actions to be taken on the privileged host controller 106.If additional congestion control measures are required, the congestion control level required by the NIC modification command can be completed by traffic throttling measures implemented on the privileged host controller 106. Fig. 2 illustrates an exemplary communication flow 200 between the host device 102 and the NIC 110 for configuring and enabling modifications to the NIC 110 according to at least one embodiment. The NIC 110 can first be coupled to the host device 102 so that it becomes part of the system 100. The coupling can involve a connection via a physical or wireless link. Through the established connection, the privileged host controller 106 of the host device 102 can provide instructions 202 for the device firmware 112 of the NIC 110. In some embodiments, the instructions 202 can be contained in an instruction file to be stored on the NIC 110. An instruction file can be a configuration or firmware file that provides the necessary instructions for the operation of the NIC 110.The instruction file can contain firmware instructions for controlling data transmission and reception, configuration settings, and boot instructions. The instruction file can also include a list of permitted network interface resources of the NIC that are modifiable by the privileged host controller 106. For example, boot instructions may not be modifiable, but instructions can identify one or more network interface resources for controlling data transmission and reception that can be modified by commands. In some embodiments, instead of the host device 102 providing the instruction file to the NIC 110, the instruction file can be loaded onto the NIC 110 during the manufacturing process or before the NIC 110 is delivered to the user and the host device 102. In some embodiments, the instructions 202 can be communication instructions between the host device 102 and the NIC 110 for determining the modifiable network interface resources, as defined in the instruction file. The instructions 202 can allow the privileged host controller 106 to generate an authorization list for use in determining the permissibility of commands.Instructions 202 can enable the privileged host controller 106 to identify configurations of NIC 110, thus allowing the privileged host controller 106 to assist NIC 110 in executing instructions for advanced RMDA functionalities. For example, instructions 202 can include a description of NIC 110's CPU performance, enabling the privileged host controller 106 to identify its processing capabilities. Using these identified capabilities, the privileged host controller 106 can compensate for instructions requiring CPU performance that exceeds the identified CPU performance. In some embodiments, when sending and receiving instructions 202, the host device 102 can establish a connection between the privileged host controller 106 and the device firmware 112, which can be used for communication during the execution of instructions directed to extended RDMA functionalities on the RDMA hardware 114 of the NIC 110. The communication can be bidirectional, allowing the privileged host controller 106 to provide instructions to the device firmware 112 and the NIC 110 to provide messages to the privileged host controller 106. Messages can include flags indicating completion of execution, a warning that an instruction will not be executed, and / or the like. After instructions 202 have enabled the connection and information transfer between NIC 110 and the privileged host controller 106, host device 102 can provide a command 204 to NIC 110. As described above, the command can be an automatic command generated by application 104 or a user command generated by a user of host device 102. The command can be issued by application 104 and can include one or more pieces of information about the command. For example, information relating to the command can include metadata captured during the creation of the command. The metadata can include user identification, a creation time, and the like. Furthermore, the command can include an instruction to modify one or more network interface resources of NIC 110.The metadata can be used to determine, using security metrics, whether a command is a valid command. Instructions for modifying one or more network interface resources can include the identification of a specific network interface resource and a result for that resource. For example, the command can include the identification of one or more queue pairs to be modified to implement congestion control and provide instructions for specific time-based execution adjustments to the queue pairs. In some embodiments, the command can include time intervals in which the queue pairs should execute, or it can include a desired congestion control result and leave the determination of the exact time intervals to the NIC 110.In some embodiments, the command may only include instructions for modifying network interface resources to control congestion, but may not specify which network interface resources to modify or what modifications to make to enable congestion control. In some embodiments, the privileged host controller 106 will intercept the command 206 before it is received at the NIC 220. To intercept the command, the privileged host controller 106 can monitor all command outputs from the application 104 and identify commands destined for the NIC 110. In some embodiments, the privileged host controller 106 can monitor one or more communication lines from the application that are known to be connected to the NIC 110. The privileged host controller 106 can intercept all commands along these lines 206 and check them for their intended destination, or it can check command packets for an intended destination and intercept the relevant commands 206. In some embodiments, the interception can be completed by the device firmware 112.Instead of intercepting the command on its way to NIC 110, the command can arrive at NIC 110 and be passed to the privileged host controller 106 without any action being taken to execute the command. In some embodiments, the privileged host controller 106 can inspect the intercepted command 208 to determine its validity. In some embodiments, this validity determination can include a security check to ascertain whether the modification originated from an authorized user. For example, one or more administrative staff members may have access to the host device and may be authorized to operate user devices. However, each authorized user may have different permissions that can limit which network interface resources they can request modification to or what types of changes they can make.The privileged host controller 106 can identify a user, for example, using a user ID associated with a login of the user of the host device 102, and information regarding the intended modification and / or the network interface resources identified in the command. The privileged host controller 106 can compare the details in the command with instructions 202 to determine whether the network interface resources identified in the command are modifiable according to the command file of NIC 110 and whether the network interface resources are modifiable by the user associated with the user ID. As described above, in some embodiments, the privileged host controller 106 can receive a command from application 104 that identifies an enhanced capability of NIC 110, such as enhanced RDMA capability, to be achieved, rather than a single network interface resource to be modified. The privileged host controller 106 can generate specific commands that can affect modifications to network interface resources to achieve the enhanced RDMA capability. Using the generated commands and the associated network interface resources, the privileged host controller 106 can determine whether the command from application 104 is valid. For example, a user can provide application 104 with a command to control overloading of NIC 110.After intercepting the command, the privileged host controller 106 can identify the user who issued the command and determine that controlling the congestion would involve modifying the timed execution of queue pairs. The privileged host controller 106 can then determine whether the queue pairs on NIC 110 can be modified and whether the user has the necessary permissions to do so. In some embodiments, verifying the validity of command 208 may involve generating a command or one or more subcommands that can be executed by the network interface card 110. As described above, a command may specify a target instead of identifying a network interface resource and the modification for that resource. The privileged host controller 106 may identify the network interface resource to be modified by the NIC 110 and the modification for that resource, and generate a command. In some embodiments, based on the limitations of the hardware 114, the enhanced capabilities may not be achievable using modifications to the hardware 114 alone. The privileged host controller 106 may determine executable subcommands that include modifications for the NIC 110 in order to provide them to the NIC 110.For example, if the command issued by application 104 requires a certain level of congestion control from NIC 110, the privileged host controller 106 may determine that the required level of congestion control cannot be achieved by hardware 114 alone. The privileged host controller 106 may then generate a subcommand to instruct modifications that can be implemented on NIC 110 to partially achieve the level of congestion control specified by the command. Similarly, the privileged host controller 106 may generate actions to be taken by the privileged host controller 106 to fulfill the congestion control requirement of the command. For example, the privileged host controller 106 may identify traffic throttling measures that can be taken by host device 102 to complement the queue pair modifications needed to achieve the desired level of congestion control. After verifying the validity of the privileged host controller 106 (208) and / or generating a command or subcommand that can be executed by the NIC 110, the privileged host controller 106 can provide the device firmware 112 with the command 210 for execution. Fig. 3 illustrates an exemplary communication flow 300 between the host device 102 and the network interface card 110 for executing commands to modify network interface resources on hardware 114 of the network interface card 110 and a privileged host controller 106 of the host device 102 according to at least one embodiment. As described above, the privileged host controller 106 can provide the originally intercepted command 206, a generated command, or a subcommand to the NIC 110. Based on the received command, the device firmware 112 can instruct the hardware 114 302 to implement the modifications. The hardware 114 can implement modifications by adjusting how registers within the hardware 114 send and receive information packets.For example, if the time intervals of a queue pair execution are modified to control congestion, the hardware 114 can adjust the number of entries a queue can hold, such as increasing the queue depth to limit transmission from NIC 110, adjusting timeouts to limit the maximum time a packet can remain in the queue before being processed or discarded, and adjusting interrupt schedules to adjust the timing of interrupts, etc. In some embodiments, the device firmware 112 can check the command and determine whether the command can be executed. In some embodiments, multiple commands affecting different functionalities of the NIC 110 can be modified using commands from the host device 102. A first command may require a modification of a network interface resource to a first configuration, and a second command may require a modification of the network interface resource to a second configuration. Modifying the network interface resource may interfere with the functionality of the NIC 110 for operation according to the first command. The modification may cause inconsistent hardware operations of the NIC 110, a loss of functionality created by the first command, or the like.Therefore, NIC 110 may choose not to complete a modification according to the second command, but instead return a notification that the modification was not executed. For example, a first command might initiate the modification of one or more network interface resources to reduce the latency of NIC 110's network communications. This might involve faster interrupts, shorter timeouts, and the like. The second command might be aimed at modifying one or more network interface resources to manage congestion. Managing congestion might require modifying previously modified network interface resources, thus increasing latency. Additionally, not all network interface resources modified by the first command might be modified by the second command.The modified resources that are not modified by the second command may cause other problems in the operation of NIC 110. The device firmware 112 may then decide not to instruct the hardware 114 to modify the network interface resources according to the command. In some embodiments, the hardware 114 can send a notification 304 back to the device firmware 112. The notification can indicate an acknowledgment of the command and a successful modification, or a notification that the modification of the hardware 114 according to the command was not executed. The failure of the modification of the hardware 114 can be the result of a lack of resources, conflicting instructions, and the like. For example, in order to implement an overload control instructed by the command, the hardware 114 can determine that the queue depth has already been expanded as much as the memory resources allow.Without the ability to expand the queue to support congestion control, Hardware 114 may not be able to modify Hardware 114 to meet the requirements of the command and may return a non-execution notification. After the modification is complete, the device firmware 112 can inform the host device 102 that the modification 306 has been executed. In some embodiments, the command can be executed entirely by modifications made on the NIC 110. After the command has been executed on the NIC 110, the device firmware 112 can send a notification, such as an acknowledgment to the application 104, that the execution is complete. In some embodiments, a portion of the command is executed on the privileged host controller 106. The device firmware 112 can provide a notification to the privileged host controller 106 regarding the execution of the command. After receiving notification of the completion of the modification on the NIC 110, or concurrently with operations 302-306 on the NIC 110, the privileged host controller 106 can perform one or more modifications to the network interface resources that cannot be implemented on the NIC 110 or that require more processing power than is available on the NIC 110. As described above, the privileged host controller 106 can designate a subcommand for the NIC 110 to implement a portion of an instruction from the application 104.The privileged host controller 106 can specify one or more additional subcommands to execute the command. These subcommands for the privileged host controller 106 may be generated based on the inability of the NIC 110 to execute the subcommand. For example, in some embodiments, modifications to enable extended RDMA functionality may require CPU resources beyond those available on the NIC 110. The privileged host controller 106 can perform actions using the large CPU on the host device 102. The privileged host controller 106 can execute the remaining portion of command 308. Figure 4 is a flowchart of an exemplary method 400 for enabling extended functionality of a network interface card 110 using network interface card hardware with limited functionality according to at least one embodiment. The method begins at block 402, which enables the modification of the NIC 110 using either the privileged host controller 106 or during a manufacturing process. As described above, the hardware 114 of the NIC 110 may be hardware 114 designed for limited functionality. To support extended functionality of the NIC 110, for example, extended RDMA functionality, the hardware 114 may be redesigned. Alternatively or additionally to a redesign of the hardware 114, extended functionality may be achieved by enabling modifications to network interface resources of the NIC 110.Network interface resources can be communication instances used to manage the transmission and reception of data for network communication protocols. For example, RDMA protocols can use queue pairs and the like to enable bidirectional communication between two devices over a network. Modifications to the NIC 110's network interface resources can enable enhanced functionality on limited hardware. The permitted modifications may be restricted to specific network interface resources, such as usable network interface resources and protocols for extended RDMA. Enabling these modifications can be achieved using an instruction file stored on the NIC 110 that controls its operation. At block 404, the NIC 110 can be programmed by a privileged host controller 106 of a host device 102. Programming the NIC 110 can include enabling a connection between the host controller 106 and the NIC 110 and identifying the capabilities and functionality of the hardware 114 of the NIC 110 to determine the limitations of the NIC 110. Furthermore, programming can include the privileged host controller 106 identifying the network interface resources that are modifiable as defined in the instruction file. At block 406, the privileged host controller 106 can identify a command issued to application 104 and intercept the command for security validation. Identifying the command may involve monitoring command outputs, or all outputs, from application 104 to identify a command directed to NIC 110. The privileged host controller 106 can monitor communication lines known to transmit commands or other instructions to NIC 110, or it can monitor command generation points and intercept commands before they are transmitted. In some embodiments, commands may be identified by verifying the intended recipient, examining the details of the command, and the like. At block 408, the privileged host controller can check the permissions identified in block 404 to determine whether the network interface resources to be modified within the command are modifiable and whether the user who created the command has permissions to modify the network interface resource. The permission check may include additional security protocol checks, including identifying the origin of the command and completing handshake protocols to ensure the security of the command. In block 410, NIC 110 can implement the modifications from the instructions. In some embodiments, the instruction can be executed using only hardware 114. In some embodiments, a portion of the instruction can be executed by modifications to hardware 114. After execution of that portion of the instruction, and / or in parallel with the execution of that portion on hardware 114, a portion of the instruction can be executed at block 412 on the privileged host controller. Figure 5 is a flowchart of an exemplary method 500 for configuring a network interface card 110 to enable modification of network interface resources according to at least one embodiment. The method 500 begins at block 502, wherein the privileged host controller 106 determines one or more network interface resources of the hardware 114 of the NIC 110 that are modifiable. In some embodiments, the one or more modifiable network interface resources can be identified by accessing an instruction file stored in a memory location on the network interface card. In some embodiments, each of the one or more modifiable network interface resources is associated with one or more privileges.In some embodiments, a permission identifies a subset of one or more network interface resources that can be modified by a user, one of several users, or by an automated command generated on the host device 102. The permissions can specify any modifiable network interface resource, as specified in the instruction file. Each modifiable network interface resource can be associated with a list of users who can modify that network interface resource. Procedure 500 continues at block 504. The privileged host controller 106 identifies a command associated with a first user of multiple users to modify a first network interface resource of the NIC 110. In some embodiments, one or more users may be able to generate commands for the NIC 110, which are intercepted by the privileged host controller 106. Each user may have a different credential for logging on to a host device 102 to generate the command. Based on the credentials, the privileged host controller 106 can determine which user is generating the command. In some embodiments, multiple user devices may connect to the host device 102 to generate commands. Each user device may include an identifier for the user associated with that user device.Within a company, for example, each network administrator can be equipped with a laptop that can connect to host device 102 to monitor and / or adjust the functionality of NIC 110. Using the user device identification provided during command generation, the privileged host controller 106 can identify a user. Procedure 500 continues at block 506. Privileged Host Controller 106, after determining, based on one or more privileges associated with the first network interface resource, that the first user is permitted to request a modification of the first network interface resource, can cause the network interface card to execute the command. The privileges managed on Privileged Host Controller 106 can specify each user and the associated network interface resources that the user can modify. Determining that the first user is permitted to request a modification can include determining that the first network interface resource is part of the one or more modifiable network interface resources identified based on the instruction file.Determining that the first user may request a modification may include confirming that the user issuing the command is allowed to modify the network interface resource. After the privileged host controller 106 determines that the command is valid, it can instruct the NIC 110 to execute the command. Executing the command may involve forwarding the command to the NIC 110, receiving a notification from the network interface card indicating that at least part of the command to modify the first network interface resource has not been completed, and, using the privileged host controller, executing an incomplete part of the command to modify the first network interface resource. In some embodiments, the NIC 110, for example on hardware 114, can be configured (e.g., modified) to enable extended functionalities. However, in some embodiments, modifications to the NIC 110 alone may not be sufficient. In such circumstances, after executing a portion of the command executable by the NIC 110, the NIC 110 can indicate to the privileged host controller 106 a portion of the command that was not executed. The privileged host controller 106 can then complete the execution of the command on the host device 102. Figure 6 is a flowchart of an exemplary method 600 for modifying a NIC 110 to improve network interface resources according to at least one embodiment. The method can begin at block 602. The privileged host controller 106 of the host device 102 can identify a command from an application of the host device to modify a network interface resource of the NIC 110 that has a first hardware configuration. In some embodiments, the one or more network interface resources comprise one or more of transport objects or network properties. In some embodiments, the transport objects are queue pairs, memory areas, or completion queues. The first hardware configuration can comprise arrangements of transport objects or network properties within registers.An initial hardware configuration might include, for example, queue pairs with a defined queue depth, interrupt time, and the like. Identifying a command using the privileged host controller 106 might involve monitoring the application 104 and intercepting the command. At block 604, the privileged host controller 106 can instruct the NIC 110 to determine a second hardware configuration that enables a modification of the network interface resource. The command can include a modification target, a network interface resource, and a target operational metric, and / or a network interface resource and a new configuration for the network interface resource. A modification target can include extended functionality not natively provided by the hardware 114. For example, a modification target might be a desire to reduce data transmission latency. To determine a second hardware configuration to fulfill the target, the privileged host controller 106 can identify the network interface resources that would need to be modified and a modification to be performed.For example, to reduce latency, the privileged host controller 106 can identify that queue pairs need to be modified and that reducing the timeouts between transfers will achieve the desired result. In some implementations, the command can identify a network interface resource to be modified and a target operational metric. More than one modification could be made to different network interface resources to achieve a similar result. Based on other objectives, a user might want to modify one network interface resource before another. The command can include identifying the network interface resource and instructing a modification to achieve a goal. For example, the command can specify the network interface resource to be modified as a communication space and the goal to reduce latency. Instead of modifying queue pairs to achieve a similar result, the command can allow for the reallocation of communication spaces to reduce latency. In some implementations, the command may include a specification of a particular network interface resource and a precise modification to be performed. For example, the command may specify a modification to be made to the communication ranges and may provide precise reformatting dimensions to determine the new size of the communication ranges. In some embodiments, identifying an instruction may further include determining, using the privileged host controller 106, an executable portion of the instruction to modify the network interface resource and providing the executable portion of the instruction to the network interface card for execution. As described above, the limited capabilities of the NIC 110 may be augmented by operations performed by the privileged host controller 106 using the CPU 108 of the host device 102. Upon receiving an instruction, the privileged host controller 106 may identify a portion of the instruction that can be executed using the NIC 110. This portion of the instruction may be used to generate a new instruction to be provided to the NIC 110 for execution. At block 606, in response to a notification from NIC 110 indicating that at least one part of the command to modify the network interface resource has not been completed, the privileged host controller 106 executes an incomplete section of the command to modify the network interface resource. As described above, the privileged host controller 106 can be used to extend the capabilities of NIC 110 by utilizing the CPU 108 of the host device 102. In some embodiments, the privileged host controller 106 can further identify a second instruction from the host device application to modify a second network interface resource. If the second network interface resource is found to be unmodifiable according to the second instruction, a third instruction to modify a third network interface resource as an alternative to the second network interface resource is generated. As described above, multiple network interface resources can be used to achieve the same or similar results. In some embodiments, an instruction can be intercepted by the privileged host controller 106 that instructs the NIC 110 to modify a network interface resource that is unmodifiable by that user and / or any user.Instead of simply returning a notification of the inability to execute the command, the privileged host controller 106 can generate a new command that can achieve a similar goal by modifying a modifiable network interface resource. For example, a command might involve modifying communication scopes to reduce latency. After determining that the communication scopes are not modifiable, the privileged host controller 106 can instead generate a command that is provided to NIC 110 to adjust the queue pairs to reduce latency. Fig. 7 is a block diagram of an exemplary computer device(s) 700 suitable for use in implementing some embodiments of the present disclosure. The computer device 700 may comprise an interconnection system 702 that directly or indirectly connects the following devices: memory 704, one or more central processing units (CPUs) 706, one or more graphics processing units (GPUs) 708, a communication interface 710, input / output (I / O) ports 712, input / output components 714, a power supply 716, one or more presentation components 718 (e.g., display(s)), and one or more logic units 720. In at least one embodiment, the computer device(s) 700 may comprise one or more virtual machines (VMs), and / or one of its components may comprise virtual components (e.g., virtual hardware components).As non-restrictive examples, one or more of the GPUs 708 can comprise one or more vGPUs, one or more of the CPUs 706 can comprise one or more vCPUs, and / or one or more of the logic units 720 can comprise one or more virtual logic units. Thus, a computer device / computer devices 700 can comprise discrete components (e.g., a complete GPU permanently assigned to the computer device 700), virtual components (e.g., a portion of a GPU assigned to the computer device 700), or a combination thereof. Although the various blocks in Fig. 7 are shown connected by lines via the connection system 702, this is not intended as a limitation and is shown only for clarity. For example, in some embodiments, a presentation component 718, such as a display device, can be considered an I / O component 714 (e.g., if the display is a touchscreen). As another example, the CPUs 706 and / or GPUs 708 can include memory (e.g., the memory 704 can represent an additional memory device besides the memory of the GPUs 708, the CPUs 706, and / or other components). Therefore, the computer device in Fig. 7 serves only for illustration.No distinction is made between categories such as "workstation", "server", "laptop", "desktop", "tablet", "client device", "mobile device", "handheld", "game console", "electronic control unit (ECU)", "virtual reality system" and / or other device or system types, as all are considered to be within the scope of the computer device shown in Fig. 7. The 702 interconnect system can represent one or more connections or buses, such as an address bus, a data bus, a control bus, or a combination thereof. The 702 interconnect system can include one or more bus or connection types, such as an ISA (Industry Standard Architecture) bus, an EISA (Extended Industry Standard Architecture) bus, a VESA (Video Electronics Standards Association) bus, a PCI (Peripheral Component Interconnect) bus, a PCIe (Peripheral Component Interconnect Express) bus, and / or another type of bus or connection. In some embodiments, there are direct connections between the components. For example, the CPU 706 can be directly connected to the memory 704. Furthermore, the CPU 706 can be directly connected to the GPU 708. When a direct or point-to-point connection exists between components, the 702 interconnect system can include a PCIe connection to establish the connection.In these examples, the computer device 700 does not need to include a PCI bus. The memory 704 can comprise any variety of computer-readable media. The computer-readable media can be any available media that the computer device 700 can access. The computer-readable media can include both volatile and non-volatile media, as well as removable and non-removable media. By way of example, and not as a limitation, the computer-readable media can include computer storage media and communication media. Computer storage media can include both volatile and non-volatile media, and / or removable and non-removable media, implemented in any method or technology for storing information, such as computer-readable instructions, data structures, program modules, and / or other types of data. For example, Memory 704 can store computer-readable instructions (which represent, for example, a program or programs and / or a program element or elements, such as an operating system).Computer storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other storage technologies, CD-ROM, Digital Versatile Discs (DVD) or other optical disk storage, magnetic cartridges, magnetic tapes, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by a computer device 700. As used here, computer storage media do not in themselves include signals. Computer storage media can embody computer-readable instructions, data structures, program modules, and / or other types of data in a modulated data signal, such as a carrier wave or other transport mechanism, and can include any information transmission medium. The term "modulated data signal" can refer to a signal in which one or more of its properties have been set or modified in such a way that information is encoded in the signal. By way of example, and not as a limitation, computer storage media can include wired media, such as a wired network or a direct cable connection, as well as wireless media, such as acoustic, RF, infrared, and other wireless media. Combinations of any of the foregoing should also be considered to fall within the scope of computer-readable media. The CPU(s) 706 can be configured to execute at least some of the computer-readable instructions to control one or more components of the computer device 700 to perform one or more of the procedures and / or processes described herein. The CPU(s) 706 can each comprise one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) capable of processing a plurality of software threads simultaneously. The CPU(s) 706 can comprise any type of processor and can include different types of processors depending on the type of computer device 700 implemented (e.g., processors with fewer cores for mobile devices and processors with more cores for servers).For example, depending on the type of computer device 700, the processor can be an ARM (Advanced RISC Machines) processor implemented using RISC (Reduced Instruction Set Computing), or an x86 processor implemented using CISC (Complex Instruction Set Computing). The computer device 700 can also include one or more microprocessors or additional coprocessors, such as mathematical coprocessors, and one or more CPUs 706. In addition to or as an alternative to the CPU(s) 706, the GPU(s) 708 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computer device 700 to perform one or more of the methods and / or processes described herein. One or more of the GPU(s) 708 may be an integrated GPU (e.g., with one or more of the CPU(s) 706), and / or one or more of the GPU(s) 708 may be a discrete GPU. In embodiments, one or more of the GPU(s) 708 may be a coprocessor of one or more of the CPU(s) 706. The GPU(s) 708 may be used by the computer device 700 for rendering graphics (e.g., 3D graphics) or for performing general-purpose calculations.For example, the GPU(s) 708 can be used for general-purpose computing on GPUs (GPGPU). The GPU(s) 708 can include hundreds or thousands of cores capable of processing hundreds or thousands of software threads simultaneously. The GPU(s) 708 can generate pixel data for output images in response to render instructions (e.g., render instructions from the CPU(s) 706 received via a host interface). The GPU(s) 708 can include graphics memory, such as display memory, for storing pixel data or other suitable data, such as GPGPU data. The display memory can be included as part of the memory 704. The GPU(s) 708 can include two or more GPUs operating in parallel (e.g., via a link). The link can connect the GPUs directly (e.g.,Connect the GPU(s) using a communication interface such as NVIDIA® NVLink® or connect them via a switch (e.g., using a communication interface switch such as NVIDIA® NVSwitch®). When combined, each GPU can generate 708 pixel data or GPGPU data for different sections of an output or for different outputs (e.g., a first GPU for a first frame and a second GPU for a second frame). Each GPU can have its own dedicated memory or share memory with other GPUs. In addition to or as an alternative to the CPU(s) 706 and / or the GPU(s) 708, the logic unit(s) 720 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computer devices 700 to perform one or more of the methods and / or processes described herein. In embodiments, the CPU(s) 706, the GPU(s) 708, and / or the logic unit(s) 720 may perform any combination of the methods, processes, and / or sections thereof, individually or jointly. One or more of the logic units 720 may be part of and / or integrated into one or more of the CPU(s) 706 and / or the GPU(s) 708, and / or one or more of the logic units 720 may be discrete components or otherwise external to the CPU(s) 706 and / or the GPU(s) 708.In embodiments, one or more of the logic units 720 can be a coprocessor of one or more of the CPU(s) 706 and / or one or more of the GPU(s) 708. Examples of the 720 logic unit(s) include one or more processing cores and / or components thereof, such as... B. Data Processing Units (DPUs), Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence Accelerators (AIAs), Deep Learning Accelerators (DLAs), Programmable Vision Accelerators (PVAs), which include one or more systems with Direct Memory Access (DMA),may include one or more vision or vector processing units (VPUs), one or more pixel processing engines (PPEs), one or more decoupled accelerators (e.g., decoupled lookup table accelerators (DLUTs)), etc., vision processing units (VPUs), optical flow accelerators (OFAs), field programmable gate arrays (FPGAs), neuromorphic chips, quantum processing units (QPUs), associative processing units (APUs), arithmetic logic units (ALUs), application-specific integrated circuits (ASICs), floating point units, FPUs), input / output (I / O) elements,Elements for connecting peripheral components (Peripheral Component Interconnect, PCI elements) or elements for express connecting peripheral components (Peripheral Component Interconnect Express, PCIe elements) and / or the like. The communication interface 710 can include one or more receivers, transmitters, and / or transceivers that enable the computer device 700 to communicate with other computer devices via an electronic communication network, in particular wired or wireless. The communication interface 710 can include components and functionalities to enable communication over any number of different networks, such as wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g., communication via Ethernet or InfiniBand), low-power wide-area networks (e.g., LoRaWAN, SigFox, etc.), and / or the Internet.In one or more embodiments, the logic unit(s) 720 and / or the communication interface 710 may include one or more data processing units (DPUs) to directly transfer data received via a network and / or the connection system 702 to one or more GPU(s) 708 (e.g., to a memory thereof). The I / O ports 712 enable the computer device 700 to logically couple with other devices, including the I / O components 714, the presentation component(s) 718, and / or other components, some of which may be built into (e.g., integrated with) the computer device 700. Illustrative I / O components 714 include a microphone, mouse, keyboard, joystick, gamepad, game controller, satellite antenna, scanner, printer, wireless device, etc. The I / O components 714 can provide a natural user interface (NUI) that processes gestures in the air, speech, or other physiological inputs generated by a user. In some cases, inputs can be transferred to a suitable network element for further processing.A NUI can implement any combination of speech recognition, pen recognition, facial recognition, biometric recognition, gesture recognition both on-screen and beside the screen, air gestures, head and eye tracking, and touch recognition (as described in more detail below) associated with a display of the computer device 700. The computer device 700 can include depth cameras, such as stereoscopic camera systems, infrared camera systems, RGB camera systems, touchscreen technology, and combinations thereof for gesture detection and recognition. Additionally, the computer device 700 can include accelerometers or gyroscopes (e.g., as part of an inertial measurement unit (IMU)) that enable motion detection.In some examples, the output of the accelerometers or gyroscopes can be used by the computer device 700 to reproduce immersive augmented reality or virtual reality. The power supply 716 can be a hardwired power supply, a battery power supply, or a combination thereof. The power supply 716 can supply power to the computer device 700 to enable the operation of the computer device 700's components. The presentation component(s) 718 can include a display (e.g., a monitor, touchscreen, television screen, head-up display (HUD), other types of displays, or a combination thereof), speakers, and / or other presentation components. The presentation component(s) 718 can receive data from other components (e.g., the GPU(s) 708, the CPU(s) 706, DPUs, etc.) and output the data (e.g., as an image, video, sound, etc.).Some sections of the preceding detailed descriptions are illustrated by means of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means employed by experts in the field of data processing to communicate the substance of their work to other experts in the field as effectively as possible. An algorithm is understood here, and generally, as a logically consistent sequence of steps that leads to a desired result. The steps are those that require physical manipulations of physical quantities. Usually, but not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and otherwise manipulated.It has sometimes proven useful, primarily for common reasons, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. However, it should be noted that all these and similar terms are to be assigned to the corresponding physical quantities and are merely convenient designations that are assigned to these quantities.Unless expressly stated otherwise, as is evident from the following explanation, it is understood that explanations throughout this description that use terms such as "identify", "determine", "store", "adapt", "cause", "return", "compare", "create", "stop", "load", "copy", "trigger", "replace", "execute", or the like refer to the actions and processes of a computer system or similar electronic computer device that manipulates and transforms data represented as physical (electronic) quantities in the registers and memories of the computer system into other data similarly represented as physical quantities in the memories or registers of the computer system or in other such information storage, transmission, or display devices. Examples in this disclosure also relate to a device for carrying out the methods described herein. This device may be specially designed for the desired purposes, or it may be a general-purpose computer system that is selectively programmed by a computer program stored in the computer system. Such a computer program may be stored in a computer-readable storage medium, such as, but not limited to, any type of disk, including optical disks, CD-ROMs and magneto-optical disks, read-only memory (ROMs), random-access memory (RAMs), EPROMs, EEPROMs, magnetic disk storage media, optical storage media, flash memory devices, other types of machine-accessible storage media, or any type of medium suitable for storing electronic instructions, each of which is coupled to a computer system bus. The methods and representations presented herein are not inherently related to any particular computer or other device. Various general-purpose systems with programs according to the teachings described herein may be used, or it may prove suitable to construct a more specialized device to carry out the necessary procedural steps. The required structure for a majority of these systems will have the appearance set forth in the following description. Furthermore, the scope of this disclosure is not limited to any particular programming language. It is understood that a variety of programming languages may be used to implement the teachings of this disclosure. It is understood that the foregoing description is intended to be illustrative and not limiting. Many other embodiments will be obvious to the person skilled in the art upon reading and understanding the foregoing description. Although the present disclosure describes specific examples, it will be recognized that the systems and methods of the present disclosure are not limited to the examples described herein, but can be carried out with modifications within the scope of the appended claims. Accordingly, the description and the drawings are to be interpreted in an illustrative and not a limiting sense. The scope of the present disclosure should therefore be determined with reference to the appended claims, together with the full scope of the equivalents to which these claims entitle. Other variations also fall within the scope of the concept of this disclosure. That is to say, while the disclosed techniques can be subjected to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described in detail above. However, it should be understood that the disclosure is not intended to be limited to any particular form or forms disclosed, but rather, on the contrary, to cover all modifications, alternative constructions, and equivalents that fall within the concept and scope of the disclosure as defined in the accompanying claims. The use of the terms "a" and "the" and similar designations in connection with the description of the disclosed embodiments (particularly in connection with the following claims) is to be interpreted as encompassing both the singular and the plural, unless otherwise specified herein or clearly contradicted by the context, and not as a definition of a term. The terms "comprise," "with," "including," and "have" are to be understood as open terms (in the sense of "including, but not limited to") unless otherwise specified. The term "connected," when used unchanged and with reference to physical connections, is to be understood as partially or wholly contained within, attached to, or joined together, even if something is in between.Where a range of values is specified herein, this is merely an efficient way of individually naming each value within the range, unless otherwise stated herein, and each value within the range is deemed to be included in the description as if it were individually named herein. In at least one embodiment, the use of the term "set" (e.g., "a set of elements") or "subset," unless otherwise stated or contradicted by the context, is to be understood as a non-empty collection comprising one or more elements. Unless otherwise stated and not contradicted by the context, the term "subset" of a corresponding set does not necessarily denote a separate subset of the corresponding set; rather, subset and corresponding set may be the same. Connectives, such as expressions of the form "at least one of A, B, and C" or "A, B, and / or C," are, unless expressly stated otherwise or clearly contradicted by the context, generally understood, using the context, to mean that an element, term, etc., may be either A, B, or C, or any non-empty subset of the set of A, B, and C. For example, in the illustrative example of a set with three elements, the connective "at least one of A, B, and C," like the connective "A, B, and / or C," refers to each of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such connectives are generally not intended to imply that any particular embodiment requires the presence of at least one of A, at least one of B, and at least one of C.Additionally, unless otherwise stated or contradicted by the context, the term "plural" indicates a state of plurality (e.g., "a plurality of elements" means multiple elements). In at least one embodiment, the number of elements in a plurality is at least two, but may be more if either expressly stated or implied by the context. Unless otherwise stated or evident from the context, the expression "based on" means "at least partly based on" and not "exclusively based on". The operations of the processes described herein may be performed in any suitable order, unless otherwise specified herein or clearly contradicted by the context. In at least one embodiment, a process such as the processes described herein (or variations and / or combinations thereof) is carried out under the control of one or more computer systems equipped with executable instructions and is implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that is executed collectively on one or more processors, by hardware, or combinations thereof. In at least one embodiment, code is stored on a computer-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors.In at least one embodiment, a computer-readable storage medium is a non-volatile computer-readable storage medium that excludes volatile signals (e.g., a propagating volatile electrical or electromagnetic transmission) but includes non-volatile data storage circuitry (e.g., buffers, caches, and queues) within transceivers for volatile signals. In at least one embodiment, code (e.g., executable code or source code) is stored on a set of one or more non-volatile, computer-readable storage media (or other storage for executable instructions) on which executable instructions are stored that, when executed (i.e., as a result of execution) by one or more processors of a data processing system, cause the data processing system to perform the operations described herein.In at least one embodiment, the set of non-volatile, computer-readable storage media comprises multiple non-volatile, computer-readable storage media, and not all of the code is present on one or more of the individual non-volatile storage media within the set of multiple non-volatile, computer-readable storage media, whereas the multiple non-volatile, computer-readable storage media collectively store all of the code. In at least one embodiment, executable instructions are executed such that different instructions are executed by different processors—for example, a non-volatile, computer-readable storage medium stores instructions, and a central processing unit (CPU) executes some of the instructions, while a graphics processing unit (GPU) executes other instructions.In at least one embodiment, different components of a computer system have separate processors, and different processors execute different subsets of instructions. Accordingly, in at least one embodiment, computer systems are configured to implement one or more services that individually or jointly perform operations of the processes described herein, and such computer systems are equipped with suitable hardware and / or software that enables the execution of operations. Furthermore, a computer system implementing at least one embodiment of the present disclosure is a single device, and in another embodiment, it is a distributed computer system comprising several devices that operate differently, such that the distributed computer system performs the operations described herein and each individual device does not perform all operations. The use of all present examples or illustrative language (e.g., "such as," "for example," "by way of example") serves only to better illustrate embodiments of the disclosure and does not constitute a limitation of the scope of the disclosure unless otherwise claimed. No wording in the patent specification should be interpreted as indicating that an unclaimed element is essential for carrying out the disclosure. All references cited herein, including publications, patent applications and patents, are hereby incorporated by reference to the same extent as if each reference had been individually and expressly indicated for inclusion by reference and set forth herein in its entirety. In the description and claims, the terms "coupled" and "connected," along with their derivatives, may be used. It should be understood that these terms are not necessarily intended to be synonymous. Rather, "connected" or "coupled" may be used in certain examples to indicate that two or more elements are in direct or indirect physical or electrical contact with each other. "Coupled" may also mean that two or more elements are not in direct contact with each other but nevertheless cooperate or interact. Unless expressly stated otherwise, terms such as "processing", "data processing", "calculating", "determining" or the like throughout this patent specification refer to actions and / or processes of a computer or data processing system or similar electronic data processing device that manipulate and / or convert data represented in the registers and / or storage of the data processing system as physical, e.g. electronic, quantities into other data represented in the storage, registers or other information, transmission or display devices of the data processing system in a similar manner as physical quantities. Similarly, the term "processor" can refer to a device or a section of a device that processes electronic data from registers and / or memories and converts that electronic data into other electronic data that can be stored in registers and / or memories. As non-restrictive examples, a "processor" can be a CPU or a GPU. A "computer platform" can include one or more processors. As used here, "software" processes can, for example, include software and / or hardware units that perform work over time, such as tasks, threads, and intelligent agents. Likewise, each process can refer to multiple processes for the sequential or parallel, continuous or intermittent execution of instructions.In at least one embodiment, the terms “system” and “method” are used interchangeably, insofar as a system can embody one or more methods and methods can be considered as a system. This document may refer to the acquisition, capture, reception, or input of analog or digital data into a subsystem, computer system, or computer-implemented machine. In at least one embodiment, a process of acquiring, capturing, receiving, or inputting analog and digital data can be performed in various ways, such as by receiving data as parameters of a function call or an application programming interface call. In at least one embodiment, processes of acquiring, capturing, receiving, or inputting analog or digital data can be performed by transmitting data over a serial or parallel interface.In at least one embodiment, processes of obtaining, acquiring, receiving, or inputting analog or digital data can be performed by transmitting data over a computer network from a providing unit to an acquiring unit. In at least one embodiment, reference can also be made to providing, outputting, transmitting, sending, or presenting analog or digital data. In various examples, processes of providing, outputting, transmitting, sending, or presenting analog or digital data can be performed by transmitting data as input or output parameters of a function call, a parameter of an application programming interface, or an interprocess network interface resource. Although exemplary embodiments of the described techniques are set forth in the present descriptions, other architectures can be used to implement the described functionality and are intended to fall within the scope of this disclosure. Furthermore, although specific distributions of responsibilities have been defined above for descriptive purposes, various functions and responsibilities may be distributed and divided in different ways depending on the circumstances. Furthermore, although the subject matter has been described in terms specific to structural features and / or methodological actions, it should be understood that the subject matter claimed in the attached claims is not necessarily limited to the specific features or actions described. Rather, the specific features and actions are disclosed as exemplary forms of implementing the claims.The disclosure of this application also includes the following numbered sentences: Sentence 1. Computer system comprising: a network interface card; and a host device comprising a controller coupled to the network interface card, the controller being configured to: identify a command of an application of the host device to modify a network interface resource of the network interface card having a first hardware configuration; cause the network interface card to determine a second hardware configuration enabling modification of the network interface resource; and respond to a notification from the network interface card indicating that the execution of at least one part of the command to modify the network interface resource has not been completed.Executing an incomplete portion of the command to modify the network interface resource. Sentence 2. Computer system according to Sentence 1, wherein the network interface resource comprises a transport object or a network property. Sentence 3. Computer system according to Sentence 1, wherein the transport object is a queue pair, a memory area, or a completion queue. Sentence 4. Computer system according to Sentence 1, wherein the controller is further configured to: identify a second command of the host device to modify a second network interface resource of the network interface; if it is determined that the second network interface resource is not modifiable according to the second command,Generating a third command to modify a third network interface resource as an alternative to the second network interface resource; and forwarding the third command to the network interface card. Sentence 5. Computer system according to Sentence 1, wherein the controller, in order to identify the application command, is further configured to: intercept the application command sent to the network interface card. Sentence 6. Computer system according to Sentence 1, wherein the controller, in order to cause the network interface card to determine the second hardware configuration, is further configured to: determine an executable portion of the command to modify the network interface resource; and provide the executable portion of the command to the network interface card for execution. Sentence 7. Method, comprising: determining, using a privileged host controller,one or more network interface resources of a network interface card hardware of a network interface card that are modifiable, wherein each of the one or more modifiable network interface resources of the network interface hardware is associated with one or more privileges; identifying a command associated with a first user of a plurality of users to modify a first network interface resource of the one or more network interface resources of the network interface card hardware of the network interface card that are modifiable; and after determining, based on one or more privileges associated with the first network interface resource, that the first user may request a modification of the first network interface resource, causing the network interface card toto execute the command. Sentence 8. Method according to Sentence 7, wherein the one or more network interface resources comprise one or more of transport objects or network properties. Sentence 9. Method according to Sentence 8, wherein the transport objects are queue pairs, memory areas, or completion queues. Sentence 10. Method according to Sentence 7, wherein each authorization of the one or more authorizations identifies a subset of the one or more network interface resources that are modifiable by a user of a plurality of users. Sentence 11. Method according to Sentence 7, wherein determining the one or more network interface resources of the network interface card hardware of the network interface card that are modifiable further comprises: accessing an instruction file stored in a memory location on the network interface card to identify the one or more network interface resources,to identify the modifiable network interface resources. Sentence 12. Method according to Sentence 11, wherein identifying the command associated with the first user of the plurality of users for modifying the network interface resource of the network interface card further comprises: determining that the first network interface resource is part of the one or more modifiable network interface resources identified based on the instruction file. Sentence 13. Method according to Sentence 7, wherein causing the network interface card to execute the command further comprises: forwarding the command to the network interface card; receiving a notification from the network interface card indicating that the execution of at least one section of the command to modify the first network interface resource has not been completed; executing, using the privileged host controller,an incomplete section of the command to modify the first network interface resource; and causing the privileged host controller to execute at least one section of the command. Sentence 14. Method, comprising: identifying, using a privileged host controller of a host device, a command of an application of the host device to modify a network interface resource of a network interface card having a first hardware configuration; causing, using the privileged host controller, the network interface card to determine a second hardware configuration enabling modification of the network interface resource; and in response to a notification from the network interface card indicating that the execution of at least one section of the command to modify the network interface resource has not been completed, executing,using the privileged host controller, an incomplete section of the command to modify the network interface resource. Sentence 15. Method according to Sentence 14, wherein the network interface resource comprises a transport object or a network property. Sentence 16. Method according to Sentence 15, wherein the transport object is a queue pair, a memory area, or a completion queue. Sentence 17. Method according to Sentence 14, further comprising: identifying, using the privileged host controller, a second command of the host device to modify a second network interface resource of the network interface; if it is determined that the second network interface resource is not modifiable according to the second command,Generating a third command to modify a third network interface resource as an alternative to the second network interface resource; and forwarding the third command to the network interface card. Sentence 18. Method according to Sentence 14, wherein identifying, using the privileged host controller of the host device, the application command further comprises: intercepting the application command sent to the network interface card. Sentence 19. Method according to Sentence 14, wherein causing, using the privileged host controller, the network interface card to determine the second hardware configuration further comprises: determining, using the privileged host controller,an executable section of the command to modify the network interface resource; and providing the executable section of the command to the network interface card for execution. Sentence 20. Method according to Sentence 14, wherein causing the network interface card to determine the second hardware configuration using the privileged host controller further comprises: causing the network interface card to determine an executable section of the command by providing the command to the network interface card for execution. It is understood that the foregoing aspects and embodiments are described only as examples and that modifications to the details may be made within the scope of the claims. Each device, method and feature disclosed in the description and (where applicable) in the claims and drawings may be provided independently or in any suitable combination. The reference figures appearing in the claims serve only for illustration and have no limiting effect on the scope of the claims. QUOTES INCLUDED IN THE DESCRIPTION This list of documents cited by the applicant was automatically generated and is included solely for the reader's convenience. The list is not part of the German patent or utility model application. The DPMA accepts no liability for any errors or omissions. Cited patent literature CN 2025 / 080244
[0001]
Claims
Computer system comprising: a network interface card; and a host device comprising a controller coupled to the network interface card, the controller being configured to: identify a command from an application of the host device to modify a network interface resource of the network interface card having a first hardware configuration; cause the network interface card to determine a second hardware configuration enabling modification of the network interface resource; and, in response to a notification from the network interface card indicating that the execution of at least one part of the command to modify the network interface resource has not been completed, execute an incomplete part of the command to modify the network interface resource. Computer system according to claim 1, wherein the network interface resource comprises a transport object or network property. Computer system according to claim 1 or 2, wherein the transport object is one of a queue pair, a memory area or a completion queue. Computer system according to claim 1, 2 or 3, wherein the controller is further configured to: identify a second instruction of the host device application to modify a second network interface resource of the network interface; if it is determined that the second network interface resource is not modifiable according to the second instruction, generate a third instruction to modify a third network interface resource as an alternative to the second network interface resource; and forward the third instruction to the network interface card. Computer system according to one of claims 1-4, wherein the controller, in order to identify the application command, is further configured to: intercept the application command sent to the network interface card. Computer system according to any one of claims 1-5, wherein the controller, in order to cause the network interface card to determine the second hardware configuration, is further configured to: determine an executable section of the command to modify the network interface resource; and provide the executable section of the command to the network interface card for execution. Method, comprising: Determining, using a privileged host controller, one or more modifiable network interface resources of network interface card hardware, wherein each of the one or more modifiable network interface resources of the network interface hardware is associated with one or more privileges; Identifying a command associated with a first user of a plurality of users to modify a first network interface resource of the one or more modifiable network interface resources of the network interface card hardware;and after determining, based on one or more permissions associated with the first network interface resource, that the first user is allowed to request a modification of the first network interface resource, causing the network interface card to execute the command. Method according to claim 7, wherein the one or more network interface resources comprise one or more transport objects or network properties. Method according to claim 8, wherein the transport objects are queue pairs, storage areas or completion queues. Method according to claim 7, 8 or 9, wherein each authorization of the one or more authorizations identifies a subset of the one or more network interface resources that is modifiable by one user of the plurality of users. A method according to any one of claims 7-10, wherein determining the one or more network interface resources of the network interface card hardware of the network interface card further comprises: accessing an instruction file stored in a memory location on the network interface card to identify the one or more network interface resources that are modifiable. The method of claim 11, wherein identifying the command associated with the first user of the plurality of users for modifying the network interface resource of the network interface card further comprises: determining that the first network interface resource is part of the one or more modifiable network interface resources identified based on the instruction file. A method according to any one of claims 7-12, wherein causing the network interface card to execute the command further comprises: forwarding the command to the network interface card; receiving a notification from the network interface card indicating that the execution of at least one part of the command to modify the first network interface resource has not been completed; executing, using the privileged host controller, an incomplete part of the command to modify the first network interface resource; and causing the privileged host controller to execute at least one part of the command. Method comprising: Identifying, using a privileged host controller of a host device, a command of an application of the host device to modify a network interface resource of a network interface card having a first hardware configuration; causing, using the privileged host controller, the network interface card to determine a second hardware configuration enabling modification of the network interface resource; and, in response to a notification from the network interface card indicating that the execution of at least one portion of the command to modify the network interface resource has not been completed, executing, using the privileged host controller, an incomplete portion of the command to modify the network interface resource. Method according to claim 14, wherein the network interface resource comprises a transport object or network property. Method according to claim 15, wherein the transport object is one of a queue pair, a storage area or a final queue. A method according to claim 14, 15 or 16, further comprising: identifying, using the privileged host controller, a second instruction of the host device to modify a second network interface resource of the network interface; if it is determined that the second network interface resource is not modifiable according to the second instruction, generating a third instruction to modify a third network interface resource as an alternative to the second network interface resource; and forwarding the third instruction to the network interface card. Method according to claims 14-17, wherein the identification, using the privileged host controller of the host device, of the application command further comprises: intercepting the application command sent to the network interface card. The method of claims 14-18, wherein causing the second hardware configuration to be determined using the privileged host controller, the network interface card, further comprises: determining, using the privileged host controller, an executable section of the command to modify the network interface resource; and providing the executable section of the command to the network interface card for execution. The method according to claims 14-19, wherein causing the network interface card to determine the second hardware configuration using the privileged host controller, further comprises: causing the network interface card to determine an executable portion of the command by making the command available to the network interface card for execution.