€•ålŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”ŒE/translations/zh_CN/networking/device_drivers/cellular/qualcomm/rmnet”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒE/translations/zh_TW/networking/device_drivers/cellular/qualcomm/rmnet”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒE/translations/it_IT/networking/device_drivers/cellular/qualcomm/rmnet”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒE/translations/ja_JP/networking/device_drivers/cellular/qualcomm/rmnet”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒE/translations/ko_KR/networking/device_drivers/cellular/qualcomm/rmnet”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒE/translations/pt_BR/networking/device_drivers/cellular/qualcomm/rmnet”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒE/translations/sp_SP/networking/device_drivers/cellular/qualcomm/rmnet”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/networking/device_drivers/cellular/qualcomm/rmnet.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ Rmnet Driver”h]”hŒ Rmnet Driver”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ1. Introduction”h]”hŒ1. Introduction”…””}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ«rmnet driver is used for supporting the Multiplexing and aggregation Protocol (MAP). This protocol is used by all recent chipsets using Qualcomm Technologies, Inc. modems.”h]”hŒ«rmnet driver is used for supporting the Multiplexing and aggregation Protocol (MAP). This protocol is used by all recent chipsets using Qualcomm Technologies, Inc. modems.”…””}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)”}”(hŒThis driver can be used to register onto any physical network device in IP mode. Physical transports include USB, HSIC, PCIe and IP accelerator.”h]”hŒThis driver can be used to register onto any physical network device in IP mode. Physical transports include USB, HSIC, PCIe and IP accelerator.”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)”}”(hXkMultiplexing allows for creation of logical netdevices (rmnet devices) to handle multiple private data networks (PDN) like a default internet, tethering, multimedia messaging service (MMS) or IP media subsystem (IMS). Hardware sends packets with MAP headers to rmnet. Based on the multiplexer id, rmnet routes to the appropriate PDN after removing the MAP header.”h]”hXkMultiplexing allows for creation of logical netdevices (rmnet devices) to handle multiple private data networks (PDN) like a default internet, tethering, multimedia messaging service (MMS) or IP media subsystem (IMS). Hardware sends packets with MAP headers to rmnet. Based on the multiplexer id, rmnet routes to the appropriate PDN after removing the MAP header.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)”}”(hŒÆAggregation is required to achieve high data rates. This involves hardware sending aggregated bunch of MAP frames. rmnet driver will de-aggregate these MAP frames and send them to appropriate PDN's.”h]”hŒÈAggregation is required to achieve high data rates. This involves hardware sending aggregated bunch of MAP frames. rmnet driver will de-aggregate these MAP frames and send them to appropriate PDN’s.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ1. introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ2. Packet format”h]”hŒ2. Packet format”…””}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj0h²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ!a. MAP packet v1 (data / control)”h]”hŒ!a. MAP packet v1 (data / control)”…””}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjAh²hh³hÇh´Kubhï)”}”(hŒ+MAP header fields are in big endian format.”h]”hŒ+MAP header fields are in big endian format.”…””}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K!hjAh²hubhï)”}”(hŒPacket format::”h]”hŒPacket format:”…””}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K#hjAh²hubhŒ literal_block”“”)”}”(hŒÄBit 0 1 2-7 8-15 16-31 Function Command / Data Reserved Pad Multiplexer ID Payload length Bit 32-x Function Raw bytes”h]”hŒÄBit 0 1 2-7 8-15 16-31 Function Command / Data Reserved Pad Multiplexer ID Payload length Bit 32-x Function Raw bytes”…””}”hjpsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jnh³hÇh´K%hjAh²hubhï)”}”(hŒ¼Command (1)/ Data (0) bit value is to indicate if the packet is a MAP command or data packet. Command packet is used for transport level flow control. Data packets are standard IP packets.”h]”hŒ¼Command (1)/ Data (0) bit value is to indicate if the packet is a MAP command or data packet. Command packet is used for transport level flow control. Data packets are standard IP packets.”…””}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K+hjAh²hubhï)”}”(hŒ?Reserved bits must be zero when sent and ignored when received.”h]”hŒ?Reserved bits must be zero when sent and ignored when received.”…””}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K/hjAh²hubhï)”}”(hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”h]”hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”…””}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K1hjAh²hubhï)”}”(hŒCMultiplexer ID is to indicate the PDN on which data has to be sent.”h]”hŒCMultiplexer ID is to indicate the PDN on which data has to be sent.”…””}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K4hjAh²hubhï)”}”(hŒRPayload length includes the padding length but does not include MAP header length.”h]”hŒRPayload length includes the padding length but does not include MAP header length.”…””}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K6hjAh²hubeh}”(h]”Œa-map-packet-v1-data-control”ah ]”h"]”Œ!a. map packet v1 (data / control)”ah$]”h&]”uh1hÈhj0h²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ!b. Map packet v4 (data / control)”h]”hŒ!b. Map packet v4 (data / control)”…””}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÌh²hh³hÇh´K:ubhï)”}”(hŒ+MAP header fields are in big endian format.”h]”hŒ+MAP header fields are in big endian format.”…””}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÌh²hubjo)”}”(hŒôBit 0 1 2-7 8-15 16-31 Function Command / Data Reserved Pad Multiplexer ID Payload length Bit 32-(x-33) (x-32)-x Function Raw bytes Checksum offload header”h]”hŒôBit 0 1 2-7 8-15 16-31 Function Command / Data Reserved Pad Multiplexer ID Payload length Bit 32-(x-33) (x-32)-x Function Raw bytes Checksum offload header”…””}”hjùsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jnh³hÇh´K@hjÌh²hubhï)”}”(hŒ¼Command (1)/ Data (0) bit value is to indicate if the packet is a MAP command or data packet. Command packet is used for transport level flow control. Data packets are standard IP packets.”h]”hŒ¼Command (1)/ Data (0) bit value is to indicate if the packet is a MAP command or data packet. Command packet is used for transport level flow control. Data packets are standard IP packets.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KFhjÌh²hubhï)”}”(hŒ?Reserved bits must be zero when sent and ignored when received.”h]”hŒ?Reserved bits must be zero when sent and ignored when received.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KJhjÌh²hubhï)”}”(hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”h]”hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”…””}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KLhjÌh²hubhï)”}”(hŒCMultiplexer ID is to indicate the PDN on which data has to be sent.”h]”hŒCMultiplexer ID is to indicate the PDN on which data has to be sent.”…””}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KOhjÌh²hubhï)”}”(hŒRPayload length includes the padding length but does not include MAP header length.”h]”hŒRPayload length includes the padding length but does not include MAP header length.”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KQhjÌh²hubhï)”}”(hŒ˜Checksum offload header, has the information about the checksum processing done by the hardware.Checksum offload header fields are in big endian format.”h]”hŒ˜Checksum offload header, has the information about the checksum processing done by the hardware.Checksum offload header fields are in big endian format.”…””}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KThjÌh²hubhï)”}”(hŒPacket format::”h]”hŒPacket format:”…””}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KWhjÌh²hubjo)”}”(hŒÔBit 0-14 15 16-31 Function Reserved Valid Checksum start offset Bit 31-47 48-64 Function Checksum length Checksum value”h]”hŒÔBit 0-14 15 16-31 Function Reserved Valid Checksum start offset Bit 31-47 48-64 Function Checksum length Checksum value”…””}”hjisbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jnh³hÇh´KYhjÌh²hubhï)”}”(hŒ?Reserved bits must be zero when sent and ignored when received.”h]”hŒ?Reserved bits must be zero when sent and ignored when received.”…””}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K_hjÌh²hubhï)”}”(hŒ{Valid bit indicates whether the partial checksum is calculated and is valid. Set to 1, if its is valid. Set to 0 otherwise.”h]”hŒ{Valid bit indicates whether the partial checksum is calculated and is valid. Set to 1, if its is valid. Set to 0 otherwise.”…””}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KahjÌh²hubhï)”}”(hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”h]”hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”…””}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KdhjÌh²hubhï)”}”(hŒ}Checksum start offset, Indicates the offset in bytes from the beginning of the IP header, from which modem computed checksum.”h]”hŒ}Checksum start offset, Indicates the offset in bytes from the beginning of the IP header, from which modem computed checksum.”…””}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KghjÌh²hubhï)”}”(hŒiChecksum length is the Length in bytes starting from CKSUM_START_OFFSET, over which checksum is computed.”h]”hŒiChecksum length is the Length in bytes starting from CKSUM_START_OFFSET, over which checksum is computed.”…””}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KjhjÌh²hubhï)”}”(hŒ0Checksum value, indicates the checksum computed.”h]”hŒ0Checksum value, indicates the checksum computed.”…””}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KmhjÌh²hubeh}”(h]”Œb-map-packet-v4-data-control”ah ]”h"]”Œ!b. map packet v4 (data / control)”ah$]”h&]”uh1hÈhj0h²hh³hÇh´K:ubhÉ)”}”(hhh]”(hÎ)”}”(hŒ!c. MAP packet v5 (data / control)”h]”hŒ!c. MAP packet v5 (data / control)”…””}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÓh²hh³hÇh´Kpubhï)”}”(hŒ+MAP header fields are in big endian format.”h]”hŒ+MAP header fields are in big endian format.”…””}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KrhjÓh²hubhï)”}”(hŒPacket format::”h]”hŒPacket format:”…””}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KthjÓh²hubjo)”}”(hŒÀBit 0 1 2-7 8-15 16-31 Function Command / Data Next header Pad Multiplexer ID Payload length Bit 32-x Function Raw bytes”h]”hŒÀBit 0 1 2-7 8-15 16-31 Function Command / Data Next header Pad Multiplexer ID Payload length Bit 32-x Function Raw bytes”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jnh³hÇh´KvhjÓh²hubhï)”}”(hŒ¼Command (1)/ Data (0) bit value is to indicate if the packet is a MAP command or data packet. Command packet is used for transport level flow control. Data packets are standard IP packets.”h]”hŒ¼Command (1)/ Data (0) bit value is to indicate if the packet is a MAP command or data packet. Command packet is used for transport level flow control. Data packets are standard IP packets.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K|hjÓh²hubhï)”}”(hŒhNext header is used to indicate the presence of another header, currently is limited to checksum header.”h]”hŒhNext header is used to indicate the presence of another header, currently is limited to checksum header.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K€hjÓh²hubhï)”}”(hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”h]”hŒXPadding is the number of bytes to be appended to the payload to ensure 4 byte alignment.”…””}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KƒhjÓh²hubhï)”}”(hŒCMultiplexer ID is to indicate the PDN on which data has to be sent.”h]”hŒCMultiplexer ID is to indicate the PDN on which data has to be sent.”…””}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K†hjÓh²hubhï)”}”(hŒRPayload length includes the padding length but does not include MAP header length.”h]”hŒRPayload length includes the padding length but does not include MAP header length.”…””}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KˆhjÓh²hubeh}”(h]”Œc-map-packet-v5-data-control”ah ]”h"]”Œ!c. map packet v5 (data / control)”ah$]”h&]”uh1hÈhj0h²hh³hÇh´KpubhÉ)”}”(hhh]”(hÎ)”}”(hŒd. Checksum offload header v5”h]”hŒd. Checksum offload header v5”…””}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj\h²hh³hÇh´KŒubhï)”}”(hŒ8Checksum offload header fields are in big endian format.”h]”hŒ8Checksum offload header fields are in big endian format.”…””}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KŽhj\h²hubhï)”}”(hŒPacket format::”h]”hŒPacket format:”…””}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj\h²hubjo)”}”(hŒŒBit 0 - 6 7 8-15 16-31 Function Header Type Next Header Checksum Valid Reserved”h]”hŒŒBit 0 - 6 7 8-15 16-31 Function Header Type Next Header Checksum Valid Reserved”…””}”hj‰sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jnh³hÇh´K’hj\h²hubhï)”}”(hŒNHeader Type is to indicate the type of header, this usually is set to CHECKSUM”h]”hŒNHeader Type is to indicate the type of header, this usually is set to CHECKSUM”…””}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K•hj\h²hubhï)”}”(hŒ Header types”h]”hŒ Header types”…””}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K—hj\h²hubhŒtable”“”)”}”(hhh]”hŒtgroup”“”)”}”(hhh]”(hŒcolspec”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j½hjºubj¾)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j½hjºubhŒtbody”“”)”}”(hhh]”(hŒrow”“”)”}”(hhh]”(hŒentry”“”)”}”(hhh]”hï)”}”(hŒ0”h]”hŒ0”…””}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kšhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÚubjÞ)”}”(hhh]”hï)”}”(hŒReserved”h]”hŒReserved”…””}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kšhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÕubjÙ)”}”(hhh]”(jÞ)”}”(hhh]”hï)”}”(hŒ1”h]”hŒ1”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjubjÞ)”}”(hhh]”hï)”}”(hŒReserved”h]”hŒReserved”…””}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K›hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÕubjÙ)”}”(hhh]”(jÞ)”}”(hhh]”hï)”}”(hŒ2”h]”hŒ2”…””}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KœhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjJubjÞ)”}”(hhh]”hï)”}”(hŒchecksum header”h]”hŒchecksum header”…””}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kœhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjºubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j¸hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hj\h²hh³hÇh´Nubhï)”}”(hŒÔChecksum Valid is to indicate whether the header checksum is valid. Value of 1 implies that checksum is calculated on this packet and is valid, value of 0 indicates that the calculated packet checksum is invalid.”h]”hŒÔChecksum Valid is to indicate whether the header checksum is valid. Value of 1 implies that checksum is calculated on this packet and is valid, value of 0 indicates that the calculated packet checksum is invalid.”…””}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KŸhj\h²hubhï)”}”(hŒ?Reserved bits must be zero when sent and ignored when received.”h]”hŒ?Reserved bits must be zero when sent and ignored when received.”…””}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K£hj\h²hubeh}”(h]”Œd-checksum-offload-header-v5”ah ]”h"]”Œd. checksum offload header v5”ah$]”h&]”uh1hÈhj0h²hh³hÇh´KŒubhÉ)”}”(hhh]”(hÎ)”}”(hŒ&e. MAP packet v1/v5 (command specific)”h]”hŒ&e. MAP packet v1/v5 (command specific)”…””}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¸h²hh³hÇh´K¦ubhï)”}”(hŒPacket format::”h]”hŒPacket format:”…””}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¨hj¸h²hubjo)”}”(hXpBit 0 1 2-7 8 - 15 16 - 31 Function Command Reserved Pad Multiplexer ID Payload length Bit 32 - 39 40 - 45 46 - 47 48 - 63 Function Command name Reserved Command Type Reserved Bit 64 - 95 Function Transaction ID Bit 96 - 127 Function Command data”h]”hXpBit 0 1 2-7 8 - 15 16 - 31 Function Command Reserved Pad Multiplexer ID Payload length Bit 32 - 39 40 - 45 46 - 47 48 - 63 Function Command name Reserved Command Type Reserved Bit 64 - 95 Function Transaction ID Bit 96 - 127 Function Command data”…””}”hj×sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jnh³hÇh´Kªhj¸h²hubhï)”}”(hŒ;Command 1 indicates disabling flow while 2 is enabling flow”h]”hŒ;Command 1 indicates disabling flow while 2 is enabling flow”…””}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K³hj¸h²hubhï)”}”(hŒ Command types”h]”hŒ Command types”…””}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kµhj¸h²hubj´)”}”(hhh]”j¹)”}”(hhh]”(j¾)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j½hjubj¾)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K*uh1j½hjubjÔ)”}”(hhh]”(jÙ)”}”(hhh]”(jÞ)”}”(hhh]”hï)”}”(hjäh]”hŒ0”…””}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¸hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjubjÞ)”}”(hhh]”hï)”}”(hŒfor MAP command request”h]”hŒfor MAP command request”…””}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¸hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjubjÙ)”}”(hhh]”(jÞ)”}”(hhh]”hï)”}”(hjh]”hŒ1”…””}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¹hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjTubjÞ)”}”(hhh]”hï)”}”(hŒ*is to acknowledge the receipt of a command”h]”hŒ*is to acknowledge the receipt of a command”…””}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¹hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjubjÙ)”}”(hhh]”(jÞ)”}”(hhh]”hï)”}”(hjRh]”hŒ2”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kºhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjŠubjÞ)”}”(hhh]”hï)”}”(hŒis for unsupported commands”h]”hŒis for unsupported commands”…””}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kºhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjubjÙ)”}”(hhh]”(jÞ)”}”(hhh]”hï)”}”(hŒ3”h]”hŒ3”…””}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K»hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÀubjÞ)”}”(hhh]”hï)”}”(hŒ*is for error during processing of commands”h]”hŒ*is for error during processing of commands”…””}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K»hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÓhjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j¸hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hj¸h²hh³hÇh´Nubeh}”(h]”Œ#e-map-packet-v1-v5-command-specific”ah ]”h"]”Œ&e. map packet v1/v5 (command specific)”ah$]”h&]”uh1hÈhj0h²hh³hÇh´K¦ubhÉ)”}”(hhh]”(hÎ)”}”(hŒf. Aggregation”h]”hŒf. Aggregation”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K¿ubhï)”}”(hŒèAggregation is multiple MAP packets (can be data or command) delivered to rmnet in a single linear skb. rmnet will process the individual packets and either ACK the MAP command or deliver the IP packet to the network stack as needed”h]”hŒèAggregation is multiple MAP packets (can be data or command) delivered to rmnet in a single linear skb. rmnet will process the individual packets and either ACK the MAP command or deliver the IP packet to the network stack as needed”…””}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÁhjh²hubhï)”}”(hŒPacket format::”h]”hŒPacket format:”…””}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÆhjh²hubjo)”}”(hŒ MAP header|IP Packet|Optional padding|MAP header|IP Packet|Optional padding.... MAP header|IP Packet|Optional padding|MAP header|Command Packet|Optional pad...”h]”hŒ MAP header|IP Packet|Optional padding|MAP header|IP Packet|Optional padding.... MAP header|IP Packet|Optional padding|MAP header|Command Packet|Optional pad...”…””}”hj?sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jnh³hÇh´KÈhjh²hubeh}”(h]”Œ f-aggregation”ah ]”h"]”Œf. aggregation”ah$]”h&]”uh1hÈhj0h²hh³hÇh´K¿ubeh}”(h]”Œ packet-format”ah ]”h"]”Œ2. packet format”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ3. Userspace configuration”h]”hŒ3. Userspace configuration”…””}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj]h²hh³hÇh´KÍubhï)”}”(hŒ‚rmnet userspace configuration is done through netlink using iproute2 https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/”h]”(hŒErmnet userspace configuration is done through netlink using iproute2 ”…””}”(hjnh²hh³Nh´NubhŒ reference”“”)”}”(hŒ=https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/”h]”hŒ=https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/”…””}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jzuh1jvhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÏhj]h²hubhï)”}”(hŒ0The driver uses rtnl_link_ops for communication.”h]”hŒ0The driver uses rtnl_link_ops for communication.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÒhj]h²hubeh}”(h]”Œuserspace-configuration”ah ]”h"]”Œ3. userspace configuration”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÍubeh}”(h]”Œ rmnet-driver”ah ]”h"]”Œ rmnet driver”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jÝŒfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÍŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j¨j¥j-j*jZjWjÉjÆjÐjÍjYjVjµj²jj jRjOj juŒ nametypes”}”(j¨‰j-‰jZ‰jɉjЉjY‰jµ‰j‰jR‰j ‰uh}”(j¥hÊj*hÝjWj0jÆjAjÍjÌjVjÓj²j\j j¸jOjjj]uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.