IP Library › Granted Patent US 12,706,866
Granted Patent B2
US 12,706,866 · App. 18/791,653 · Granted Aug 11, 2026

Receive processing in communications between computing device(s) and a network interface card

Inventors: Bruce Ratcliff (Red Hook, NY); Stephen R. Valley (Valatie, NY); Patricia G. Driever (Poughkeepsie, NY); Dan Vangor (Mahopac, NY); Jerry Stevens (Raleigh, NC); Richard P. Tarcza (Kingston, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
H04L49/9068H04L49/901
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,706,866
App. No.
18/791,653
Filed
Aug 1, 2024
Granted
Aug 11, 2026
Kind
B2
Art Unit
2455
USPC
709/250
Abstract

An adapter module executing on a computing device of a computing environment is to be used to transmit packets from a network interface card of the computing environment to a control program executing within the computing environment. The adapter module obtains packet information of a packet received at the network interface card. Based on obtaining the packet information, a packet completion queue entry is generated in a packet completion queue and the packet information is stored in the packet completion queue entry. The packet information is to be used to locate a data buffer into which the packet is stored. The packet completion queue entry is provided to the control program to be used by the control program to retrieve the packet from the data buffer.

Claims (53)

1 . A computer-implemented method comprising:

executing an adapter module on a computing device of a computing environment to be used to transmit packets from a network interface card of the computing environment to a control program executing within the computing environment;

obtaining, by the adapter module executing on the computing device, packet information of a packet received at the network interface card;

generating, based on obtaining the packet information, a packet completion queue entry in a packet completion queue, the packet completion queue entry to include the packet information;

storing the packet information in the packet completion queue entry, the packet information to be used to locate a data buffer into which the packet is stored, wherein the packet information includes information to locate an entry of a receive data queue, the entry of the receive data queue including a buffer address of the data buffer into which the packet is stored, the packet completion queue and the receive data queue being part of a queue structure, the queue structure having a queue descriptor record, the queue descriptor record including an address used to locate the packet completion queue and another address used to locate the receive data queue; and

providing the packet completion queue entry to the control program to be used by the control program to retrieve the packet from the data buffer.

2 . The computer-implemented method of claim 1 , wherein the data buffer is owned by the adapter module and is available for packet consumption by the control program, the data buffer being shared by the adapter module and the control program.

3 . The computer-implemented method of claim 1 , wherein the data buffer includes a plurality of strides, and wherein the data buffer continues to have packets stored therein, based on a stride of the plurality of strides being available.

4 . The computer-implemented method of claim 3 , wherein the data buffer is owned by the adapter module and shared by the adapter module and the control program, and wherein based on consumption of the packet in a last stride of the plurality of strides, sharing of the data buffer ceases.

5 . The computer-implemented method of claim 1 , wherein the packet within the data buffer is aligned on a cache line boundary.

6 . The computer-implemented method of claim 1 , wherein the packet completion queue corresponds to the receive data queue, and a receive queue index is used to pass ownership of entries of the receive data queue and the packet completion queue between the control program and the adapter module.

7 . The computer-implemented method of claim 1 , further comprising obtaining, by the adapter module, an indication that additional buffers are to be allocated.

8 . The computer-implemented method of claim 7 , wherein the indication is included in a data structure component accessible to the adapter module.

9 . The computer-implemented method of claim 1 , further comprising obtaining by the adapter module an indication that the control program retrieved the packet from the data buffer.

10 . The computer-implemented method of claim 1 , further comprising signaling by the adapter module to the control program arrival of the packet in the data buffer.

11 . A computer system comprising:

at least one computing device;

a set of one or more computer-readable storage media; and

program instructions, collectively stored in the set of one or more computer-readable storage media, for causing the at least one computing device to perform computer operations including:

executing an adapter module on a computing device, the adapter module to be used to transmit packets from a network interface card to a control program executing within the computer system;

obtaining, by the adapter module executing on the computing device, packet information of a packet received at the network interface card;

generating, based on obtaining the packet information, a packet completion queue entry in a packet completion queue, the packet completion queue entry to include the packet information;

storing the packet information in the packet completion queue entry, the packet information to be used to locate a data buffer into which the packet is stored, wherein the packet information includes information to locate an entry of a receive data queue, the entry of the receive data queue including a buffer address of the data buffer into which the packet is stored, the packet completion queue and the receive data queue being part of a queue structure, the queue structure having a queue descriptor record, the queue descriptor record including an address used to locate the packet completion queue and another address used to locate the receive data queue; and

providing the packet completion queue entry to the control program to be used by the control program to retrieve the packet from the data buffer.

12 . The computer system of claim 11 , wherein the data buffer includes a plurality of strides, and wherein the data buffer continues to have packets stored therein, based on a stride of the plurality of strides being available.

13 . The computer system of claim 12 , wherein the data buffer is owned by the adapter module and shared by the adapter module and the control program, and wherein based on consumption of the packet in a last stride of the plurality of strides, sharing of the data buffer ceases.

14 . The computer system of claim 11 , wherein the packet completion queue corresponds to the receive data queue, and a receive queue index is used to pass ownership of entries of the receive data queue and the packet completion queue between the control program and the adapter module.

15 . The computer system of claim 11 , wherein the computer operations further comprise obtaining by the adapter module an indication that the control program retrieved the packet from the data buffer.

16 . The computer system of claim 11 , wherein the computer operations further comprise signaling by the adapter module to the control program arrival of the packet in the data buffer.

17 . A computer program product comprising:

a set of one or more computer-readable storage media; and

program instructions, collectively stored in the set of one or more computer-readable storage media, for causing at least one computing device to perform computer operations including:

executing an adapter module on a computing device of a computing environment to be used to transmit packets from a network interface card of the computing environment to a control program executing within the computing environment;

obtaining, by the adapter module executing on the computing device, packet information of a packet received at the network interface card;

generating, based on obtaining the packet information, a packet completion queue entry in a packet completion queue, the packet completion queue entry to include the packet information;

storing the packet information in the packet completion queue entry, the packet information to be used to locate a data buffer into which the packet is stored, wherein the packet information includes information to locate an entry of a receive data queue, the entry of the receive data queue including a buffer address of the data buffer into which the packet is stored, the packet completion queue and the receive da ta queue being part of a structure, the queue structure having a queue descriptor record, the queue descriptor record including an address used to locate the packet completion queue and another address used to locate the receive data queue; and

providing the packet completion queue entry to the control program to be used by the control program to retrieve the packet from the data buffer.

18 . The computer-program product of claim 17 , wherein the data buffer includes a plurality of strides, and wherein the data buffer continues to have packets stored therein, based on a stride of the plurality of strides being available.

19 . The computer-program product of claim 18 , wherein the data buffer is owned by the adapter module and shared by the adapter module and the control program, and wherein based on consumption of the packet in a last stride of the plurality of strides, sharing of the data buffer ceases.

20 . The computer-program product of claim 17 , wherein the packet completion queue corresponds to the receive data queue, and a receive queue index is used to pass ownership of entries of the receive data queue and the packet completion queue between the control program and the adapter module.

21 . The computer-program product of claim 17 , wherein the computer operations further comprise obtaining by the adapter module an indication that the control program retrieved the packet from the data buffer.

22 . The computer-program product of claim 17 , wherein the computer operations further comprise signaling by the adapter module to the control program arrival of the packet in the data buffer.

23 . A computer-implemented method comprising:

executing a control program on a computing device of a computing environment, the control program to receive packets transmitted from a network interface card of the computing environment;

obtaining, by the control program, packet information from a packet completion queue entry of a packet completion queue, the packet completion queue entry generated by an adapter module executing within the computing environment and the packet information to be used to locate a data buffer into which the packet is stored by the network interface card, wherein the packet information includes information to locate an entry of a receive data queue, the entry of the receive data queue including a buffer address of the data buffer into which the packet is stored, the packet completion queue and the receive data queue being part of a queue structure, the queue structure having a queue descriptor record, the queue descriptor record including an address used to locate the packet completion queue and another address used to locate the receive data queue; and

receiving, by the control program, the packet transmitted from the network interface card, the receiving including locating the packet in the data buffer using the packet information and consuming the packet from the data buffer.

24 . The computer-implemented method of claim 23 , wherein the packet information includes a starting alignment index and a receive data storage block page entry index, the starting alignment index specifying a starting location within the data buffer corresponding to the receive data storage block page entry index.

25 . A computer program product comprising:

a set of one or more computer-readable storage media; and

program instructions, collectively stored in the set of one or more computer-readable storage media, for causing at least one computing device to perform computer operations including:

executing a control program on a computing device of a computing environment, the control program to receive packets transmitted from a network interface card of the computing environment;

obtaining, by the control program, packet information from a packet completion queue entry of a packet completion queue, the packet completion queue entry generated by an adapter module executing within the computing environment and the packet information to be used to locate a data buffer into which the packet is stored by the network interface card, wherein the packet information includes information to locate an entry of a receive data queue, the entry of the receive data queue including a buffer address of the data buffer into which the packet is stored, the packet completion queue and the receive data queue being part of a queue structure, the queue structure having a queue descriptor record, the queue descriptor record including an address used to locate the packet completion queue and another address used to locate the receive data queue; and

receiving, by the control program, the packet transmitted from the network interface card, the receiving including locating the packet in the data buffer using the packet information and consuming the packet from the data buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2024
From: RATCLIFF, BRUCE; VALLEY, STEPHEN R.; DRIEVER, PATRICIA G.; VANGOR, DAN; STEVENS, JERRY; TARCZA, RICHARD P.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 068151/0282 →
Continuity (1)
Related Publication 20260039608A1 · Feb 5, 2026
References Cited (76)
US 4458316A · Fry et al. · 1984 [cited by applicant]
US 5444853A · Lentz · 1995 [cited by applicant]
US 5768621A · Young · 1998 [cited by applicant]
US 5901291A · Feeney et al. · 1999 [cited by applicant]
US 6006292A · Young · 1999 [cited by applicant]
US 6263388B1 · Cromer et al. · 2001 [cited by applicant]
US 6446150B1 · Morger et al. · 2002 [cited by applicant]
US 6519645B2 · Markos et al. · 2003 [cited by applicant]
US 6609161B1 · Young · 2003 [cited by applicant]
US 7089457B2 · Stevens · 2006 [cited by applicant]
US 8055817B2 · Higgs et al. · 2011 [cited by applicant]
US 8196139B2 · Easton et al. · 2012 [cited by applicant]
US 8271258B2 · Chan et al. · 2012 [cited by applicant]
US 8819393B2 · Blandy et al. · 2014 [cited by applicant]
US 8918559B2 · Amann et al. · 2014 [cited by applicant]
US 9154368B2 · Meyer et al. · 2015 [cited by applicant]
US 10686749B2 · Ji et al. · 2020 [cited by applicant]
US 11095758B2 · Masputra et al. · 2021 [cited by applicant]
US 11537432B2 · Khan et al. · 2022 [cited by applicant]
US 11765080B2 · Brar et al. · 2023 [cited by applicant]
US 11876773B2 · Jiang et al. · 2024 [cited by applicant]
US 11979459B1 · Ratcliff · 2024 [cited by examiner]
US 20030023786A1 · Craddock et al. · 2003 [cited by applicant]
US 20040078480A1 · Boucher · 2004 [cited by examiner]
US 20040249957A1 · Ekis et al. · 2004 [cited by applicant]
US 20050080869A1 · Bender · 2005 [cited by examiner]
US 20060215670A1 · Sampath et al. · 2006 [cited by applicant]
US 20070253430A1 · Minami et al. · 2007 [cited by applicant]
US 20110106990A1 · Higgs · 2011 [cited by examiner]
US 20110173615A1 · Easton · 2011 [cited by examiner]
US 20110179416A1 · Patale et al. · 2011 [cited by applicant]
US 20150019781A1 · Gomes · 2015 [cited by applicant]
US 20180011635A1 · Shin · 2018 [cited by applicant]
US 20180267919A1 · Burstein · 2018 [cited by examiner]
US 20190303159A1 · Fryman et al. · 2019 [cited by applicant]
US 20200042479A1 · Wang et al. · 2020 [cited by applicant]
US 20230030241A1 · Driever et al. · 2023 [cited by applicant]
US 20230031131A1 · Ryu et al. · 2023 [cited by applicant]
US 20230370382A1 · Wijnands et al. · 2023 [cited by applicant]
US 20250030649A1 · Moshe · 2025 [cited by examiner]
US 20250112968A1 · Ratcliff et al. · 2025 [cited by applicant]
US 20250123871A1 · Ratcliff · 2025 [cited by examiner]
US 20250260596A1 · Rao · 2025 [cited by applicant]
CN 103440171B · 2016 [cited by applicant]
CN 103559045B · 2017 [cited by applicant]
CN 107729050A · 2021 [cited by applicant]
CN 111008100B · 2021 [cited by applicant]
CN 117707651A · 2024 [cited by applicant]
JP S61122756A · 1986 [cited by applicant]
KR 100324126B1 · 2002 [cited by applicant]
KR 100919273B1 · 2009 [cited by applicant]
WO 2026027348A1 · 2026 [cited by applicant]
WO 2026027350A1 · 2026 [cited by applicant]
WO 2026027353A1 · 2026 [cited by applicant]
Anonymous: “z/OS Communications Server 2.5—IP Configuration Guide—Chapters 1, 2”, Jun. 26, 2023, 124 pages, URL: https://www.ibm.com/docs/en/SSLTBW_2.5.0/pdf/halz002_v2r5.pdf. [cited by applicant]
International Searching Authority, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or Declaration,” Patent Cooperation Treaty, Oct. 23, 2… [cited by applicant]
International Searching Authority, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or Declaration,” Patent Cooperation Treaty, Oct. 27, 2… [cited by applicant]
International Searching Authority, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or Declaration,” Patent Cooperation Treaty, Oct. 15, 2… [cited by applicant]
Anonymous, “Denying the Address Resolution Protocol ARP Reply in Response to an ARP Request,” IP.com No. IPCOM000155829D, Jul. 20, 2007, pp. 1-2 (+ cover). [cited by applicant]
Anonymous, “Method of Avoiding ARP in a Cloud Network,” IP.com No. IPCOM000248946D, Jan. 24, 2017, pp. 1-8 (+ cover). [cited by applicant]
Anonymous, “Method to Eliminate Network Packet Loss During Live Kernel Update Blackout Time Through Use of a Service Proxy,” IP.com No. IPCOM000256682D, Dec. 19, 2018, pp. 1-5 (+ cover). [cited by applicant]
Intel, “Intel Ethernet Controller I210 Datasheet—Revision Number 3.7,” Order No. 333016-011, Jan. 2021, pp. 1-870. [cited by applicant]
Venkateswaran, R. et al., “Improved VC-Merging for Multiway Communications in ATM Networks,” Proceedings 7th International Conference on Computer Communications and Networks, Nov. 1998, pp. 1-8. [cited by applicant]
Cisco Inc., “IP Addressing: ARP Configuration Guide, Cisco IOS XE Release 3S,” 2020 (no further date information available), https://www.cisco.com > xe-3s >arp-xe-3s-book, pp. 1-18. [cited by applicant]
Shashidhara, Rajath et al., “FlexTOE: Flexible TCP Offload with Fine-Grained Parallelism,” Symposium on Network System Design and Implementation, Oct. 2021, pp. 1-16. [cited by applicant]
Langlet, Jonatan, “Offloading Virtual Network Functions—Hierarchical Approach,” Karlstads Universitet, Jun. 2020, pp. 1-82. [cited by applicant]
Carstens, Juergen, “ARP Snooping,” IP.com No. IPCOM000174693D, Oct. 2008, pp. 1-2 (+ cover). [cited by applicant]
Alfredsson, Rebecka, “Multipath Transport Protocol Offloading,” Karlstads Universitet, Jun. 2022, pp. 1-69. [cited by applicant]
Anonymous, “Method for Avoiding ARP in a Cloud Network,” IP.com No. IPCOM000248946D, Jan. 2017, pp. 1-8 (+ cover). [cited by applicant]
Anonymous, “Efficient Address Resolution in DOVE Network,” IP.com No. IPCOM000236018D, Apr. 2014, pp. 1-2 (+ cover). [cited by applicant]
ETSI, “Interface Between the Control Plane and the User Plane Nodes,” Nov. 2020, pp. 1-317. [cited by applicant]
IBM, “z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-13, Fourteenth Edition, May 2022, pp. 1-2124. [cited by applicant]
Ratcliff, Bruce et al., “Address Resolution Protocol Processing Used In Communications Within a Computing Environment,” U.S. Appl. No. 18/791,690, filed Aug. 1, 2024, pp. 1-128. [cited by applicant]
Ratcliff, Bruce et al., “Instructions Used In Communications Between Computing Device(s) and a Shared Adapter,” U.S. Appl. No. 18/791,721, filed Aug. 1, 2024, pp. 1-129. [cited by applicant]
Ratcliff, Bruce et al., “Data Constructs for a Shared Network Adapter,” U.S. Appl. No. 18/478,070, filed Sep. 29, 2023, pp. 1-36. [cited by applicant]
List of IBM Patents or Patent Applications Treated as Related, dated Sep. 24, 2 pages. [cited by applicant]