Petri Savolainen(psavol) replied on github web page:

include/odp/api/spec/ipsec.h
line 167
@@ -1226,12 +1226,23 @@ typedef struct odp_ipsec_status_t {
  * e.g. RFC 4302 and 4303). Resulting packets are well formed, reconstructed
  * original IP packets, with IPSEC headers removed and valid header field 
values
  * restored. The amount and content of packet data before the IP header is
- * undefined.
+ * undefined. Some amount of TFC padding may follow the IP packet payload,
+ * in which case packet length is larger than protocol headers indicate.
+ * TFC dummy packets have l3_type set to ODP_PROTO_L3_TYPE_NONE in tunnel mode


Comment:
L3 types are basically what you find from L2 type field: ARP, RARP, IPV4, IPV6. 
There's no "no next header" type in e.g. ethernet types. So, NO_NEXT is defined 
only on L4 types. But that's OK since, for tunnel mode application just checks 
agaist l3_type == IPV4, IPV6 or NONE, where NONE == dummy. In transport mode, 
application just checks l4_type == NO_NEXT for dummy. Application L3 type in 
transport should always have either IPV4 or IPV6.

> Dmitry Eremin-Solenikov(lumag) wrote:
> And here.


>> Dmitry Eremin-Solenikov(lumag) wrote:
>> It also should be NO_NEXT, shouldn't it?


>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>> In fact I'm more biased towards 
>>> `odp_packet_get_l3_proto()`/`odp_packet_get_l4_proto()` functions.


>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>> @lumag Would exposing he next header byte also be acceptable? That would 
>>>> similarly seem to be future-proof and would also avoid having to introduce 
>>>> an `odp_packet_has_dummy()` predicate function.


>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>> It seems @bala-manoharan and me would still prefer separate is_dummy 
>>>>> flag. We don't even have to limit it to TFC dummy packets, but might use 
>>>>> it later for all kinds of dummy packets.


>>>>>> Balasubramanian Manoharan(bala-manoharan) wrote:
>>>>>> Yes. Just to be clear even if the implementation know that its a dummy 
>>>>>> packet in Transport mode the application/implementation will have to 
>>>>>> parse the IP header to know the dummy packet and drop the packet.


>>>>>>> JannePeltonen wrote
>>>>>>> Transport mode dummy packets _are_ IP packets. The protocol field of 
>>>>>>> the IP header (which is constructed based on the IP header of the ESP 
>>>>>>> packet) is 59.


>>>>>>>> Balasubramanian Manoharan(bala-manoharan) wrote:
>>>>>>>> In tunnel mode not setting ipv4/v6 flag for dummy packet should be 
>>>>>>>> fine. But how do Dummy packets get handled in transport mode? coz if 
>>>>>>>> the implementation does inner packet parsing then transport mode dummy 
>>>>>>>> packet will have the valid ipv4/v6 flag set.


>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>> After discussion during the call: this needs to be rephrased to point 
>>>>>>>>> that TFC dummy packets can be truncated by an implementation. Maybe 
>>>>>>>>> we should not mention that "restructured data" is returned for TFC 
>>>>>>>>> dummy packet.


>>>>>>>>>> JannePeltonen wrote
>>>>>>>>>> On January 17 [email protected] wrote in the lng-odp list:
>>>>>>>>>> 
>>>>>>>>>> "However, for the EIP96 - EIP197PP range of solutions our HW /is/ 
>>>>>>>>>> capable of TFC padding insertion, we would just need to expose this 
>>>>>>>>>> through our driver and firmware. So API-wise you might want to 
>>>>>>>>>> support adding n bytes of TFC padding for outbound. "
>>>>>>>>>> 
>>>>>>>>>> So apparently such HW exists. And even with pure SW solution, I do 
>>>>>>>>>> not see why buffer space would need to be allocated from application 
>>>>>>>>>> specific pools for the padding data.


>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>> I have mixed feelings towards this option. Allocating additional 
>>>>>>>>>>> buffer space from application-specific pools seems fragile to me. 
>>>>>>>>>>> Maybe we can leave this out for now till there is hardware which 
>>>>>>>>>>> actually supports generating additional TFC padding?


>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>> Limiting this option to tunnel mode only seems logical but not 
>>>>>>>>>>>> that effective for an application. Maybe we can allow using this 
>>>>>>>>>>>> option together with L3 header override to create transport mode 
>>>>>>>>>>>> dummy packets. Then it would be just easier to inject dummy 
>>>>>>>>>>>> packets in transport case.


>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>> @psavol I don't feel good about the 'if dummy flag is set, only 
>>>>>>>>>>>>> tfc_padding length defines the dummy packet length' proposal. 
>>>>>>>>>>>>> Your current phrase (`packet_len + tfc_padding` seems better to 
>>>>>>>>>>>>> me).
>>>>>>>>>>>>> @bala-manoharan if we do not provide a packet, how will 
>>>>>>>>>>>>> implementation allocate a packet for SYNC/ASYNC modes?


>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>> Also it should be documented that in INLINE mode hardware might 
>>>>>>>>>>>>>> drop dummy packets on its own, without reporting them to an 
>>>>>>>>>>>>>> application.


>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>> I'm actually thinking about adding special `is_dummy` flag 
>>>>>>>>>>>>>>> here. Transport mode TFC packets should have 
>>>>>>>>>>>>>>> `has_ipv4`/`has_ipv6` flag according to their headers. However 
>>>>>>>>>>>>>>> having special flag which can be checked by an application will 
>>>>>>>>>>>>>>> allow one to drop them without going to L3 headers.


>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>> This will cause troubles for NXP hardware, which does not 
>>>>>>>>>>>>>>>> output decrypted TFC packet, if I understand in right. 
>>>>>>>>>>>>>>>> @NikhilA-Linaro could you please comment?


>>>>>>>>>>>>>>>>> Balasubramanian Manoharan(bala-manoharan) wrote:
>>>>>>>>>>>>>>>>> We can also decide whether the application has to provide a 
>>>>>>>>>>>>>>>>> valid odp_packet_t handle when "tfc_dummy" flag is set.


>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>> done


>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>> About 2 vs. 3 level capability. Two levels should be enough 
>>>>>>>>>>>>>>>>>>> (no, yes). If there are 3 levels (no, yes in SW, yes in 
>>>>>>>>>>>>>>>>>>> HW), throughput would be optimized if application enables 
>>>>>>>>>>>>>>>>>>> checksumming only when it's done in HW. Application would 
>>>>>>>>>>>>>>>>>>> not request SW checksum for all packets, as it can filter 
>>>>>>>>>>>>>>>>>>> out those that actually need it (e.g. half of the packets) 
>>>>>>>>>>>>>>>>>>> and then do it in SW only for those.


>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>> I think the offset is already known (and possibly set into 
>>>>>>>>>>>>>>>>>>>> packet header) before implementation knows a packet is 
>>>>>>>>>>>>>>>>>>>> dummy, since that's part of decrypt operation (== start of 
>>>>>>>>>>>>>>>>>>>> cipher/clear text data). This spec allows L3 offset to be 
>>>>>>>>>>>>>>>>>>>> left at an implementation specific value, e.g. 0 if HW did 
>>>>>>>>>>>>>>>>>>>> drop the dummy content, e.g. 28 if HW does not recognize 
>>>>>>>>>>>>>>>>>>>> dummy packets (just another decrypted packet from HW point 
>>>>>>>>>>>>>>>>>>>> of view).
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> When dummy content is left there, application can see how 
>>>>>>>>>>>>>>>>>>>> much it is and the content. May be that helps in debugging 
>>>>>>>>>>>>>>>>>>>> dummy vs non-dummy packet, etc.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Result of an IPSEC decrypt transformation is always the 
>>>>>>>>>>>>>>>>>>>> original packet (== what the sender did send). L3 offset 
>>>>>>>>>>>>>>>>>>>> points to the first byte of the original data. If dummy 
>>>>>>>>>>>>>>>>>>>> data was dropped, then there's no data.


>>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>>> This should be clear for implementers already from RFC, 
>>>>>>>>>>>>>>>>>>>>> but it's also here since it's easy to forget that data 
>>>>>>>>>>>>>>>>>>>>> cannot be sent out from any random address (e.g. end of 
>>>>>>>>>>>>>>>>>>>>> an buffer). Implementation must be sure about the memory 
>>>>>>>>>>>>>>>>>>>>> content (zeros, rand, counter) before including that as 
>>>>>>>>>>>>>>>>>>>>> padding.


>>>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>>>> We can also decide to write the spec differently. I.e. 
>>>>>>>>>>>>>>>>>>>>>> if dummy flag is set, only tfc_padding length defines 
>>>>>>>>>>>>>>>>>>>>>> the dummy packet length. May be it's better spec and as 
>>>>>>>>>>>>>>>>>>>>>> easy to implement than the one above.


>>>>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>>>>> It has been specified that number of bytes to IPsec 
>>>>>>>>>>>>>>>>>>>>>>> encrypt is always: packet_len - l3_offset + 
>>>>>>>>>>>>>>>>>>>>>>> tfc_padding. In all other cases (than TFC dummy in 
>>>>>>>>>>>>>>>>>>>>>>> tunnel mode), L3 offset point to first byte of IP 
>>>>>>>>>>>>>>>>>>>>>>> header. With dummy, application is not required to form 
>>>>>>>>>>>>>>>>>>>>>>> an IP header and also packet data content is ignored. 
>>>>>>>>>>>>>>>>>>>>>>> So, application can e.g. set L3 offset = 0, packet_len 
>>>>>>>>>>>>>>>>>>>>>>> = 0 and tfc_padding = 512, OR L3 offset = 64, 
>>>>>>>>>>>>>>>>>>>>>>> packet_len = 320, tfc_padding = 256, OR L3 offset = 0, 
>>>>>>>>>>>>>>>>>>>>>>> packet_len = 512, tfc_padding= 0.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> All those examples would end up implementation creating 
>>>>>>>>>>>>>>>>>>>>>>> a 512 byte dummy packet.


>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>>>>>>>>>>>>> The implementation simply needs to ensure that it 
>>>>>>>>>>>>>>>>>>>>>>>> doesn't reuse application buffers, as they may contain 
>>>>>>>>>>>>>>>>>>>>>>>> residual confidential information. This can be done by 
>>>>>>>>>>>>>>>>>>>>>>>> inserting zeros or random bytes as the implementation 
>>>>>>>>>>>>>>>>>>>>>>>> chooses. Given the importance of security, it's 
>>>>>>>>>>>>>>>>>>>>>>>> appropriate to put this caveat in the spec as a 
>>>>>>>>>>>>>>>>>>>>>>>> reminder to implementations.


>>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>> OK


>>>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>> Please do. While padding is sometimes unavoidable, 
>>>>>>>>>>>>>>>>>>>>>>>>>> we should try not to introduce it in new structs.


>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>> OK


>>>>>>>>>>>>>>>>>>>>>>>>>>>> Balasubramanian Manoharan(bala-manoharan) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>> Does this mean the application will create a TFC 
>>>>>>>>>>>>>>>>>>>>>>>>>>>> dummy packet?
>>>>>>>>>>>>>>>>>>>>>>>>>>>> I thought we decided that the application will 
>>>>>>>>>>>>>>>>>>>>>>>>>>>> only provide the length and dummy packet flag and 
>>>>>>>>>>>>>>>>>>>>>>>>>>>> implementation will generate a dummy packet.
>>>>>>>>>>>>>>>>>>>>>>>>>>>> 


>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Balasubramanian Manoharan(bala-manoharan) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Does this mean we have to set L3 offset for Dummy 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packets? Is there any use-case for this scenario.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Balasubramanian Manoharan(bala-manoharan) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "Confidential information" How does the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> implementation guarantee this? Do we really need 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> this in the spec?


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3. Also regardless of TFC support. If inner 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packet is IPv4, but outer is IPv6 and e.g. 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> flabel has been configured to be copied from 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> inner to outer - there's no flabel in inner 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packet to copy. So, application is able to use 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> this option to pass per packet IPv6 parameters 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> when inner is IPv4, and vice versa. 


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Application needs to anyway check if packet is 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> v4 or v6. Today it's checking that from first 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> byte of the packet. With TFC tunnel mode, 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> first byte is garbage that cannot be used any 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> more. So, application uses these APIs instead 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> in if - else if - else fashion. There's no 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> more guessing than before.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> yes it could. I try to remember that if v2 is 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> needed.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Petri Savolainen(psavol) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Actually, today's pktio capa is too 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> permissive as all config options are 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> automatically capas. That should be changed 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> to align this: pkt input checksums have 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> capas, output not. Application does not ask 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> output checksum when not needed. On input 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> application does not have a change to filter 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packet checksum checking before it sees the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packet, but on output it can filter the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> checksum generation.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> JannePeltonen wrote
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> That is right, but there is no limitation 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> in this API.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> This bit is just for tunnel mode dummy 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packets that cannot otherwise be sent. 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Transport mode dummy TFC packets are sent 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> in the normal way: The input packet to an 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> oubound IPsec operation is a well formed IP 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packet just like in the normal packet case, 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> but the application just sets the protocol 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> field of the IP header to 59. The ODP 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> implementation needs the IP header to be 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> there since that IP header is used (after 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> some adjustments) in the resulting ESP/AH 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packet. This is different from tunnel mode 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> where the outer IP header is generated 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> based on the information in the SA.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> JannePeltonen wrote
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Two cases:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1) Enabling TFC dummy packet generation 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for tunnel-mode SAs that have been 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> configured to copy the fields from the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> inner header. This way the input packet to 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the IPsec operation does not have to 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> contain valid IP header for the copying to 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> work which would be difficult to specify 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for dummy packets (e.g. how to tell if the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> inner packet is IPv4 or IPv6). The fields 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cannot just be left to some default values 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> in dummy packets because that could allow 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> one to distinguish the dummy packets from 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> normal packets in the wire, rendering TFC 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dummy packets useless.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2) Making the current API more complete 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (regardless of TFC support). Currently it 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> is possible to set those fields only to 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the same SA-specific value or copy from 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the inner header, but not set the value 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> depending on the packet. I could imagine 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> that for DSCP there could be real use 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cases where the DSCP cannot just be copied 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (e.g. since if the inner and outer packet 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> belong to different QoS domains with 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> different DSCP interpretation) but the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DSCP cannot also be the same for all 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> packets of an SA (although It would be 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> better to you separate SAs in that case).  


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> JannePeltonen wrote
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Why? The rationale goes that if 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> checksumming is requested in the outbound 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> direction the implementation can always 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> calculate in in SW since that is what the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> application would have to do otherwise. 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Inbound direction is different since the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> need for L4 checksum checking (i.e. is 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the packet destined to this system of 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> just forwarded) is not yet known at the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> time of reception (so if an 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> implementation sets the inbound 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> capability, it should mean that it can do 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> checksumming clearly more efficiently 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> than pure SW).


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hmm. I think RFC 4303 does not limit TFC 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dummy packets to tunnel mode. One can 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> generate them in transport mode.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> What is the use case for these options?


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> There is one indeed.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Is there no need for a corresponding 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `chksums_out` capability?


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Fischofer(Bill-Fischofer-Linaro) 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I assume  this is referring to the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `odp_packet_has_ipv4()` and 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `odp_packet_has_ipv6()` accessor 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> functions? Since these bits are only 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> accessible via these functions, this 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> forces applications to play a 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> guessing game with them and their L4 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> counterparts. Might it be better to 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> consider having 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `odp_packet_l3_proto()` and 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `odp_packet_l4_proto()` functions?


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Fischofer(Bill-Fischofer-Linaro) 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Can `flabel` be placed after 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `dst_addr`? This would avoid the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> pad bytes that would otherwise be 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> inserted between `dspc` and 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `flabel`.


https://github.com/Linaro/odp/pull/403#discussion_r165284528
updated_at 2018-02-01 08:24:29

Reply via email to