On 17 August 2015 at 14:09, Zoltan Kiss <zoltan.k...@linaro.org> wrote: > > > On 17/08/15 07:24, Maxim Uvarov wrote: >> >> On 08/14/15 21:42, Zoltan Kiss wrote: >>> >>> This platform doesn't compute it, packet_init set it to 0, which happens >>> to be ODP_PACKET_RSS_INVALID. >>> >>> Signed-off-by: Zoltan Kiss <zoltan.k...@linaro.org> >>> --- >>> platform/linux-generic/include/odp/plat/packet_types.h | 2 ++ >>> platform/linux-generic/include/odp_packet_internal.h | 1 + >>> platform/linux-generic/odp_packet.c | 14 >>> ++++++++++++++ >>> 3 files changed, 17 insertions(+) >>> >>> diff --git a/platform/linux-generic/include/odp/plat/packet_types.h >>> b/platform/linux-generic/include/odp/plat/packet_types.h >>> index 45cb801..afc72f4 100644 >>> --- a/platform/linux-generic/include/odp/plat/packet_types.h >>> +++ b/platform/linux-generic/include/odp/plat/packet_types.h >>> @@ -36,6 +36,8 @@ typedef ODP_HANDLE_T(odp_packet_seg_t); >>> #define ODP_PACKET_SEG_INVALID _odp_cast_scalar(odp_packet_seg_t, >>> 0xffffffff) >>> +#define ODP_PACKET_RSS_INVALID _odp_cast_scalar(odp_packet_t, 0) > > > This define is incorrect, I think. > >>> + >>> /** Get printable format of odp_packet_t */ >>> static inline uint64_t odp_packet_to_u64(odp_packet_t hdl) >>> { >>> diff --git a/platform/linux-generic/include/odp_packet_internal.h >>> b/platform/linux-generic/include/odp_packet_internal.h >>> index 8c41491..6e52713 100644 >>> --- a/platform/linux-generic/include/odp_packet_internal.h >>> +++ b/platform/linux-generic/include/odp_packet_internal.h >>> @@ -136,6 +136,7 @@ typedef struct { >>> uint32_t tailroom; >>> odp_pktio_t input; >>> + uint32_t rss_hash; /**< RSS hash value*/ >> >> >> is rss_hash always and everywhere 32 bit? > > > I don't think it's guaranteed anywhere. Maybe we should rather use an opaque > type? But then we would need to provide operator functions for all the > possible uses, that would be an overkill. >
So far per my knowledge; Plenty of NIC's example e100/ixgbe/brcm etc provide 32bit word size. You could add opaque support, but make sure handle/method are inlined (less expensive); Because its per-pkt Otherwise overkill. I would prefer keeping it 32bit word size unless someone speaks / describe their experience on using rss_hash 64bit word size. >> >> Maxim. >> >> >>> odp_crypto_generic_op_result_t op_result; /**< Result for >>> crypto */ >>> } odp_packet_hdr_t; >>> diff --git a/platform/linux-generic/odp_packet.c >>> b/platform/linux-generic/odp_packet.c >>> index 5581cc4..649071f 100644 >>> --- a/platform/linux-generic/odp_packet.c >>> +++ b/platform/linux-generic/odp_packet.c >>> @@ -326,6 +326,20 @@ int odp_packet_l4_offset_set(odp_packet_t pkt, >>> uint32_t offset) >>> return 0; >>> } >>> +uint32_t odp_packet_rss_hash(odp_packet_t pkt) >>> +{ >>> + odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); >>> + >>> + return pkt_hdr->rss_hash; >>> +} >>> + >>> +void odp_packet_rss_hash_set(odp_packet_t pkt, uint32_t rss_hash) >>> +{ >>> + odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); >>> + >>> + pkt_hdr->rss_hash = rss_hash; >>> +} >>> + >>> int odp_packet_is_segmented(odp_packet_t pkt) >>> { >>> return odp_packet_hdr(pkt)->buf_hdr.segcount > 1; >> >> >> _______________________________________________ >> lng-odp mailing list >> lng-odp@lists.linaro.org >> https://lists.linaro.org/mailman/listinfo/lng-odp > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp