Repeat steps 3 through 8 for all packet pages and set NETRXF_more_data in the N-1 slot.Ĭheck if the grant operations status was incorrect and if so set status of the struct netif_rx_response field to NETIF_RSP_ERR. Sets up extra info (e.g. GSO descriptor) repeat step 8). Gets a request from the ring for the first extra info Update the request consumer index ( req_cons) Prefill expected response ring with the request id and slot size. Gets a response from the ring for this data slot. Sets up flags/checksum info on first request. Gets a request from the ring for the first data slot and fetches the gref from it.Ĭreate grant copy op from packet page to gref. In essence the steps for receiving of a packet in a Linux frontend is as from backend to frontend network stack:Ĭhecks if there are enough rx ring slots that can accomodate the packet. Notice the lack of padding, and that is because it’s not used on Rx, as Rx request boundary is 8 octets. | type |flags| type specific data (gso, hash, etc)| ->'struct netif_extra_info' Additionally a struct netif_extra_info may overlay the rx request in which case the format is: +-+-+ NĮach entry in the ring occupies 16 octets which means a page fits 256 entries. | id | offset | flags | status | ->'struct netif_rx_response' | id | pad | gref | ->'struct netif_rx_request' The view of the shared receive ring is the following: 0 1 2 3 4 5 6 7 octet Hence on the case of the first region it is replaced by a memcpy on backend, as opposed to a grant copy. Linux netback implementation copies the first 128 bytes into its network buffer linear region. ^ here implies a holding a potential contended per CPU lock on theĭst_frame = _get_paged_frame(dst_domain, ) The motivation of this work is to eliminate grant ops for packet I/O intensive workloads such as those observed with smaller requests size (i.e. This document outlines the proposal covering motivation of this and applicability for other use-cases alongside the necessary changes. 4.2.3 XEN_NETIF_CTRL_TYPE_DEL_GREF_MAPPINGĪt the Xen hackaton ’16 networking session, we spoke about having a permanently mapped region to describe header/linear region of packet buffers.4.2.2 XEN_NETIF_CTRL_TYPE_ADD_GREF_MAPPING.4.2.1 XEN_NETIF_CTRL_TYPE_GET_GREF_MAPPING_SIZE.Staging grants for network I/O requests Staging grants for network I/O requests
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |