Patents by Inventor Francesco R. DiMambro

Francesco R. DiMambro has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 11606302
    Abstract: Techniques are provided for managing a user space protocol stack are disclosed herein. A nexus in a kernel space can receive a packet from a packet pool, and extract information from the packet to generate a flow key indicating a particular flow for the packet. The nexus can further look up the flow key in a flow table to determine whether there is an existing flow key stored in the flow table matching the flow key of the packet, and store the packet into a batch of packets of the existing flow when the existing flow key matches the flow key of the packet. When a release condition being met, the nexus can release the batch of packets of the existing flow to a user space protocol stack within a user space application through a channel communicatively coupled to the nexus and the user space protocol stack.
    Type: Grant
    Filed: June 11, 2021
    Date of Patent: March 14, 2023
    Assignee: Apple Inc.
    Inventors: Wei Shen, Sandeep Nair, Vidhi Goel, Francesco R. Dimambro, Eric Tsz Leung Cheng, Cahya Adiansyah Masputra
  • Publication number: 20210392080
    Abstract: Techniques are provided for managing a user space protocol stack are disclosed herein. A nexus in a kernel space can receive a packet from a packet pool, and extract information from the packet to generate a flow key indicating a particular flow for the packet. The nexus can further look up the flow key in a flow table to determine whether there is an existing flow key stored in the flow table matching the flow key of the packet, and store the packet into a batch of packets of the existing flow when the existing flow key matches the flow key of the packet. When a release condition being met, the nexus can release the batch of packets of the existing flow to a user space protocol stack within a user space application through a channel communicatively coupled to the nexus and the user space protocol stack.
    Type: Application
    Filed: June 11, 2021
    Publication date: December 16, 2021
    Applicant: Apple Inc.
    Inventors: Wei SHEN, Sandeep NAIR, Vidhi GOEL, Francesco R. DIMAMBRO, Eric Tsz Leung CHENG, Cayha Adiansyah MASPUTRA
  • Patent number: 7512128
    Abstract: A kernel data transfer method and system for transmitting multiple packets of data in a single block of data presented by application programs to the kernel's network subsystem for processing in accordance with data transfer parameters set by the application program. The multi-packet transmit system includes logic that allows header information of the multiple packets of data to be generated in a single buffer and appended to a second buffer containing the data packets to be transmitted through the network stack. The multi-data transmit system allows a device driver to amortize the input/output memory management related overhead across a number of packets. With some assistance from the network stack, the device driver needs to only perform the necessary IOMMU operations on two contiguous memory blocks representing the header information and the data payload of multiple packets during each transmit call.
    Type: Grant
    Filed: May 9, 2003
    Date of Patent: March 31, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Francesco R. DiMambro, Cahya Adi Masputra
  • Patent number: 7463595
    Abstract: A configuration state of a networked system is automatically adjusted to achieve optimal performance. The networked system is defined by a plurality of data exchange entities having one or more tunable parameters. Networked system performance is monitored and performance metrics are stored to a database. The performance metrics are analyzed along with network and system rules and constraints, and the particular configuration of the networked system. The tunable parameters are automatically adjusted to achieve optimal networked system performance.
    Type: Grant
    Filed: June 29, 2004
    Date of Patent: December 9, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: Prafull Singhal, Francesco R. Dimambro
  • Patent number: 7379453
    Abstract: A method and apparatus for facilitating transfer of packets from communication hardware to a host computing device or software. After receiving s set of packets at a communication interface, the system writes in a hybrid buffer a type II completion line configured to identify a payload buffer in which payloads of packets are stored. For each packet, the system writes a type I completion line configured to indicate the length of a packet's header in the hybrid buffer and the length and/or offset of the packet's payload in the payload buffer. A type 0 completion line indicates that no more packets are stored in the payload buffer. The system then signals the host computing device by configuring a single completion descriptor to identify the hybrid buffer in which the completion lines are stored. The host computing device reads the single completion descriptor to process the packets.
    Type: Grant
    Filed: March 29, 2004
    Date of Patent: May 27, 2008
    Assignee: Sun Microsystems, Inc.
    Inventor: Francesco R. DiMambro
  • Patent number: 7356039
    Abstract: A system and method for describing multiple packets to a communication module or device without requiring descriptors for each packet. A device driver for the communication apparatus receives a set of packet headers and a set of packet payloads from an upper layer protocol. The headers may be received in a header buffer, and the payloads may be received in a separate data buffer. Or, the packets may be received, in assembled form, in a single buffer. The device driver configures a single descriptor to describe the multiple packets to the communication apparatus. The descriptor includes base address(es) of the buffer(s) in which the headers, payloads or assembled packets are stored, and the lengths of the individual headers, payloads or assembled packets. If the buffer contents are not packed, the descriptor may also include offsets of the headers, payloads or packets.
    Type: Grant
    Filed: September 22, 2003
    Date of Patent: April 8, 2008
    Assignee: Sun Microsystems, Inc.
    Inventor: Francesco R. DiMambro
  • Patent number: 7187676
    Abstract: An apparatus and method for expeditiously steering a received communication (e.g., packet, cell, frame) to one or more communication streams. When a new communication stream is opened on a network interface circuit or other Primary Point of Attachment (PPA), the protocol to which the stream is bound is used as a Service Access Point (SAP). A hierarchy of SAP nodes (e.g., a binary tree) is constructed, with each node corresponding to a unique SAP. Each node includes its corresponding SAP value, a count of the number of communication streams bound to the associated protocol, and a reference to those streams. When a communication is received, its SAP is extracted and the hierarchy is searched for a matching node. The communication is then forwarded to each referenced stream.
    Type: Grant
    Filed: June 4, 2002
    Date of Patent: March 6, 2007
    Assignee: Sun Microsystems, Inc.
    Inventor: Francesco R. DiMambro
  • Patent number: 7149820
    Abstract: An enhanced VPD structure includes a type field to indicate whether a particular property is a general property to be associated with an interface card or other computer system component, or a device- or function-specific property to be associated with one or more devices or functions. The enhanced VPD structure also includes fields for identifying the device(s) and/or function(s) to which a device- or function-specific property applies, along with the value of the property, a data type and length of the property, and a meaningful name of the property. The enhanced VPD structure may be accessed during system boot, during hot-swapping of an interface card or other component, or at other times.
    Type: Grant
    Filed: July 30, 2002
    Date of Patent: December 12, 2006
    Assignee: Sun Microsystems, Inc.
    Inventors: Asif H. Haswarey, Francesco R. DiMambro, Sumanth R. Kamatala, Anil Umarshi Visariya, David M. Kahn
  • Patent number: 7100038
    Abstract: A system and method for persisting device operating parameters through different phases of the boot process of a computer system. A boot command is entered to boot from a remote (or local) source through a boot device (e.g., a network interface, a disk controller), and is accompanied by one or more operating parameters (e.g., speed, duplex, link-clock). The parameters are converted to properties of the boot device and saved. Subsequently, one or more communication connections are established using the boot device properties. Using an initial boot program, the system may establish a first connection to access and load a secondary boot program, and another connection to load an operating system kernel. The boot device properties are thus used to establish communication connections at different times in the boot process, while the system is controlled by different programs (e.g., open boot PROM, secondary boot program, operating system kernel).
    Type: Grant
    Filed: March 13, 2003
    Date of Patent: August 29, 2006
    Assignee: Sun Microsystems, Inc.
    Inventors: Asif H. Haswarey, Francesco R. DiMambro, Anil Umarshi Visariya
  • Patent number: 7076545
    Abstract: A system and method for distributing a portion of the processing of a received packet among a plurality of service threads. When an ISR or similar process retrieves a packet from a communication interface via a receive descriptor ring, it places the packet on one of a plurality of service queues. Each queue has an associated service thread or process that initiates upper layer protocol processing for queued packets. The ISR may select a particular service queue based on the packet's communication flow or connection. Alternatively, the ISR may use a processor identifier provided by the communication interface to select a queue (e.g., in a multi-processor computer system). Or, other information provided by the interface may be used.
    Type: Grant
    Filed: July 31, 2002
    Date of Patent: July 11, 2006
    Assignee: Sun Microsystems, Inc.
    Inventor: Francesco R. DiMambro
  • Publication number: 20040181658
    Abstract: A system and method for persisting device operating parameters through different phases of the boot process of a computer system. A boot command is entered to boot from a remote (or local) source through a boot device (e.g., a network interface, a disk controller), and is accompanied by one or more operating parameters (e.g., speed, duplex, link-clock). The parameters are converted to properties of the boot device and saved. Subsequently, one or more communication connections are established using the boot device properties. Using an initial boot program, the system may establish a first connection to access and load a secondary boot program, and another connection to load an operating system kernel. The boot device properties are thus used to establish communication connections at different times in the boot process, while the system is controlled by different programs (e.g., open boot PROM, secondary boot program, operating system kernel).
    Type: Application
    Filed: March 13, 2003
    Publication date: September 16, 2004
    Inventors: Asif H. Haswarey, Francesco R. DiMambro, Anil Umarshi Visariya
  • Publication number: 20040024873
    Abstract: A system and method for distributing a portion of the processing of a received packet among a plurality of service threads. When an ISR or similar process retrieves a packet from a communication interface via a receive descriptor ring, it places the packet on one of a plurality of service queues. Each queue has an associated service thread or process that initiates upper layer protocol processing for queued packets. The ISR may select a particular service queue based on the packet's communication flow or connection. Alternatively, the ISR may use a processor identifier provided by the communication interface to select a queue (e.g., in a multi-processor computer system). Or, other information provided by the interface may be used.
    Type: Application
    Filed: July 31, 2002
    Publication date: February 5, 2004
    Inventor: Francesco R. DiMambro
  • Publication number: 20040025089
    Abstract: An enhanced VPD structure includes a type field to indicate whether a particular property is a general property to be associated with an interface card or other computer system component, or a device- or function-specific property to be associated with one or more devices or functions. The enhanced VPD structure also includes fields for identifying the device(s) and/or function(s) to which a device- or function-specific property applies, along with the value of the property, a data type and length of the property, and a meaningful name of the property. The enhanced VPD structure may be accessed during system boot, during hot-swapping of an interface card or other component, or at other times.
    Type: Application
    Filed: July 30, 2002
    Publication date: February 5, 2004
    Inventors: Asif H. Haswarey, Francesco R. DiMambro, Sumanth R. Kamatala, Anil Umarshi Visariya, David M. Kahn
  • Publication number: 20040024904
    Abstract: A system and method are provided for using multiple transmit descriptor rings to transmit packets from a computer system. A device driver for a communication interface (e.g., a NIC) receives a packet (e.g., from an upper layer protocol), selects one of the multiple rings and places the packet on the ring. Because the rings are managed in a mutually exclusive manner, packets can be placed on more than one ring at the same time (e.g., by different processors), thus allowing them to be populated in parallel, rather than serially. To select a ring, a packet's destination address, destination port or other characteristic may be hashed, or a modulo of that characteristic over the number of rings may be calculated. Illustratively, all packets in one connection or flow are transmitted through the same ring.
    Type: Application
    Filed: July 31, 2002
    Publication date: February 5, 2004
    Inventor: Francesco R. DiMambro
  • Publication number: 20030231659
    Abstract: A kernel data transfer method and system for transmitting multiple packets of data in a single block of data presented by application programs to the kernel's network subsystem for processing in accordance with data transfer parameters set by the application program. The multi-packet transmit system includes logic that allows header information of the multiple packets of data to be generated in a single buffer and appended to a second buffer containing the data packets to be transmitted through the network stack. The multi-data transmit system allows a device driver to amortize the input/output memory management related overhead across a number of packets. With some assistance from the network stack, the device driver needs to only perform the necessary IOMMU operations on two contiguous memory blocks representing the header information and the data payload of multiple packets during each transmit call.
    Type: Application
    Filed: May 9, 2003
    Publication date: December 18, 2003
    Inventors: Francesco R. DiMambro, Cahya Adi Masputra
  • Publication number: 20030223456
    Abstract: An apparatus and method for expeditiously steering a received communication (e.g., packet, cell, frame) to one or more communication streams. When a new communication stream is opened on a network interface circuit or other Primary Point of Attachment (PPA), the protocol to which the stream is bound is used as a Service Access Point (SAP). A hierarchy of SAP nodes (e.g., a binary tree) is constructed, with each node corresponding to a unique SAP. Each node includes its corresponding SAP value, a count of the number of communication streams bound to the associated protocol, and a reference to those streams. When a communication is received, its SAP is extracted and the hierarchy is searched for a matching node. The communication is then forwarded to each referenced stream.
    Type: Application
    Filed: June 4, 2002
    Publication date: December 4, 2003
    Inventor: Francesco R. DiMambro