Petri Savolainen(psavol) replied on github web page: include/odp/api/spec/packet_io.h line 21 @@ -256,11 +256,27 @@ typedef struct odp_pktio_param_t { * belong to time synchronization protocol (PTP). * * Packet input checksum checking may be enabled or disabled. When it is - * enabled, implementation will verify checksum correctness on incoming packets - * and depending on drop configuration either deliver erroneous packets with - * appropriate flags set (e.g. odp_packet_has_l3_error()) or drop those. - * When packet dropping is enabled, application will never receive a packet - * with the specified error and may avoid to check the error flag. + * enabled, implementation will attempt to verify checksum correctness on + * incoming packets and depending on drop configuration either deliver erroneous + * packets with appropriate flags set (e.g. odp_packet_has_l3_error(), + * odp_packet_l3_chksum_status()) or drop those. When packet dropping is + * enabled, application will never receive a packet with the specified error + * and may avoid to check the error flag. + * + * If checksum checking is enabled, IPv4 header checksum checking is always + * done for packets that do not have IP options and L4 checksum checking + * is done for unfragmented packets that do not have IPv4 options or IPv6 + * extension headers. In other cases checksum checking may or may not + * be done. For example, L4 checksum of fragmented packets is typically + * not checked.
Comment: The intention is best effort on top of the minimum requirement that all basic IP packets must be checked. The wording says that quite clearly already (what needs to change ?). Again it's a fact that not all HW will check non-basic IP packets, or if they do (e.g. with firmware / SW) packet rate may be much lower for _all_ packets. Typically, these non-basic packets are a small fraction of all packets and belong to the slow path anyway. https://github.com/Linaro/odp/pull/167#discussion_r137724863 updated_at 2017-09-08 07:26:16