On Wed, Jan 28, 2015 at 12:02:45PM -0500, Mike Holmes wrote: > Any resolution, I know there have been discussions on going but I need to > know if this is in 0.10.0
According to Petri, Application expects to reuse the seg handle after push/pull operations. so, No need to change the existing specification hence this patch is not applicable. validation: buffer: check the return value of odp_packet_l?_offset_set can be included in 0.10 > > On 27 January 2015 at 09:12, Mike Holmes <mike.hol...@linaro.org> wrote: > > > Can we resolve this for 0.10.0 > > > > On 25 January 2015 at 22:40, Jerin Jacob <jerin.ja...@caviumnetworks.com> > > wrote: > > > >> On Sun, Jan 25, 2015 at 03:01:24PM +0200, Taras Kondratiuk wrote: > >> > On 01/24/2015 08:06 PM, Bill Fischofer wrote: > >> > > The issue is not whether the number of segments is changed but whether > >> > > the pkt handle is changed. APIs that potentially substitute a new > >> > > handle must return a handle. If a handle is not returned then the > >> input > >> > > handle is unchanged, however behavior of subsequent APIs against that > >> > > handle may of course change. To take a trivial example, > >> > > odp_packet_len() will obviously change following a push/pull even > >> though > >> > > the same handle is used. > >> > > > >> > > I agree with Jerin that we really need to take care to not overspecify > >> > > behavior on ODP APIs. API observable effects should be minimally > >> > > specified to allow implementations latitude in how best to map the > >> > > required behavior to their platform. In the case of push/pull the > >> > > purpose is simply to add or subtract bytes at the start or end of a > >> > > packet. That's the essential function of these APIs and is the only > >> > > thing that should be specified as required behavior. > >> > > > >> > > In the case of segmentation there are two philosophies one can adopt. > >> > > The first is that the application desires and needs to have explicit > >> > > control over packet segmentation. The second is that any packet > >> > > segmentation is the responsibility of the implementation and the > >> > > application need only be aware that packets may be segmented and take > >> > > that into account in its design, realizing that segments are the units > >> > > of contiguous addressability. The former is a very software-centric > >> > > view which provides limited opportunity for implementations to > >> optimize > >> > > performance, and may in fact be impossible to implement efficiently on > >> > > some platforms. The latter requires that existing software-centric > >> > > applications may need some more redesign to better adapt to ODP. But > >> > > the benefits of such adaptation is cleaner portability across a wider > >> > > range of platforms with optimal performance on each, and that's really > >> > > the goal of ODP. > >> > > >> > I agree on most of these items and I do understand Jerin's restrictions, > >> > but my main point: current test does follow specification. If it can't > >> > be implemented efficiently on a platform, then specification should be > >> > changed first. > >> > >> OK, How about following change in the specification ? > >> > >> diff --git a/platform/linux-generic/include/api/odp_packet.h > >> b/platform/linux-generic/include/api/odp_packet.h > >> index 920a593..e418e42 100644 > >> --- a/platform/linux-generic/include/api/odp_packet.h > >> +++ b/platform/linux-generic/include/api/odp_packet.h > >> @@ -244,7 +244,7 @@ void *odp_packet_tail(odp_packet_t pkt); > >> * headroom -= len > >> * data -= len > >> * > >> - * Operation does not modify packet segmentation or move data. Handles > >> and > >> + * Operation does not modify packet segmentation or move data. pkt > >> handle and > >> * pointers remain valid. User is responsible to update packet metadata > >> * offsets when needed. > >> * > >> @@ -272,7 +272,7 @@ void *odp_packet_push_head(odp_packet_t pkt, uint32_t > >> len); > >> * headroom += len > >> * data += len > >> * > >> - * Operation does not modify packet segmentation or move data. Handles > >> and > >> + * Operation does not modify packet segmentation or move data. pkt > >> handle and > >> * pointers remain valid. User is responsible to update packet metadata > >> * offsets when needed. > >> * > >> @@ -302,7 +302,7 @@ void *odp_packet_pull_head(odp_packet_t pkt, uint32_t > >> len); > >> * tail += len > >> * tailroom -= len > >> * > >> - * Operation does not modify packet segmentation or move data. Handles, > >> + * Operation does not modify packet segmentation or move data. pkt > >> handle, > >> * pointers and offsets remain valid. > >> * > >> * @param pkt Packet handle > >> @@ -331,7 +331,7 @@ void *odp_packet_push_tail(odp_packet_t pkt, uint32_t > >> len); > >> * tail -= len > >> * tailroom += len > >> * > >> - * Operation does not modify packet segmentation or move data. Handles > >> and > >> + * Operation does not modify packet segmentation or move data. pkt > >> handle and > >> * pointers remain valid. User is responsible to update packet metadata > >> * offsets when needed. > >> * > >> > >> > >> > >> > >> > >> _______________________________________________ > >> lng-odp mailing list > >> lng-odp@lists.linaro.org > >> http://lists.linaro.org/mailman/listinfo/lng-odp > >> > > > > > > > > -- > > *Mike Holmes* > > Linaro Sr Technical Manager > > LNG - ODP > > > > > > -- > *Mike Holmes* > Linaro Sr Technical Manager > LNG - ODP _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org http://lists.linaro.org/mailman/listinfo/lng-odp