Dmitry Eremin-Solenikov(lumag) replied on github web page:

include/odp/api/spec/ipsec.h
line 179
@@ -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
+ * or l4_type set to ODP_PROTO_L4_TYPE_NO_NEXT in transport mode. Dummy
+ * packets contain implementation specific amount of (dummy) data. Furthermore,
+ * inline IPSEC processing may drop dummy packets.
  *
  * Each successfully transformed packet has a valid value for these metadata
  * regardless of the inner packet parse configuration
  * (odp_ipsec_inbound_config_t):
- * - L3 offset: Offset to the first byte of the (outmost) IP header
+ * - l3_offset: Offset to the first byte of the original IP packet. The value
+ *              is implementation specific for tunnel mode TFC dummy packets.
+ * - l3_type:   Specifies if the original packet is IPv4 or IPv6. For tunnel
+ *              mode TFC dummy packets set to ODP_PROTO_L3_TYPE_NONE.


Comment:
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_r165119144
updated_at 2018-01-31 17:02:48

Reply via email to