bogdanPricope replied on github web page:
example/generator/odp_generator.c
line 200
@@ -784,10 +811,33 @@ static void print_pkts(int thr, thread_args_t *thr_args,
unsigned i;
size_t offset;
char msg[1024];
+ interface_t *itfs, *itf;
+
+ itfs = thr_args->rx.ifs;
for (i = 0; i < len; ++i) {
pkt = pkt_tbl[i];
+ itf = &itfs[odp_pktio_index(odp_packet_input(pkt))];
+
+ if (odp_packet_has_ipv4(pkt)) {
+ if (itf->config.pktin.bit.ipv4_chksum) {
+ if (odp_packet_has_l3_error(pkt))
+ printf("HW detected L3 error\n");
+ }
+ }
+
+ if (odp_packet_has_udp(pkt)) {
+ if (itf->config.pktin.bit.udp_chksum) {
+ if (odp_packet_has_l4_error(pkt))
+ printf("HW detected L4 error\n");
+ }
+ }
+
+ /* Drop packets with errors */
+ if (odp_unlikely(odp_packet_has_error(pkt)))
Comment:
This csum check is done with newer API in API-NEXT
(odp_packet_l3_chksum_status()). No sense to optimize this part for this older
implementation
> bogdanPricope wrote
> Yes, this can be part of another PR.
>> bogdanPricope wrote
>> * @return Number of events outputted (0 ... num)
>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>> The new `odp_event_filter_packet()` API would be useful here.
>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>> Why `ODP_SCHED_NO_WAIT` vs. `ODP_SCHED_WAIT` here? You're just spinning if
>>>> no packets are available so why not let the scheduler do the waiting?
>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>> Agree with @muvarov, this could use some comments to explain why these
>>>>> calls are being used. You'd expect a dedicated RX thread to simply wait
>>>>> for packet input.
>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>> Checksum errors will result in `odp_packet_has_error()` being set as
>>>>>> well, so these checks can be done only if the summary packet error
>>>>>> predicate is set, avoiding unnecessary checks for known good packets.
>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>> Might be good to have options for controlling the queue sync type here
>>>>>>> as `ODP_SCHED_SYNC_PARALLEL` should result in highest throughput, and
>>>>>>> `ODP_SCHED_SYNC_ORDERED` would be useful in testing performance of
>>>>>>> scheduler implementations (in theory should be better than
>>>>>>> `ODP_SCHED_SYNC_ATOMIC`).
>>>>>>>
>>>>>>> Something to explore in another PR
>>>>>>>> muvarov wrote
>>>>>>>> ok
>>>>>>>>> muvarov wrote
>>>>>>>>> and why odp_pktin_recv_tmo() and not odp_pktin_recv() ?
>>>>>>>>>> muvarov wrote
>>>>>>>>>> why not ODP_PKTIN_WAIT?
>>>>>>>>>>> muvarov wrote
>>>>>>>>>>> not all events are packets.
>>>>>>>>>>>> muvarov wrote
>>>>>>>>>>>> ```
>>>>>>>>>>>> * @return Next highest priority event
>>>>>>>>>>>> * @retval ODP_EVENT_INVALID on timeout and no events available
>>>>>>>>>>>> ```
>>>>>>>>>>>>> muvarov wrote
>>>>>>>>>>>>> just separate rx function for scheduler and on thread start you
>>>>>>>>>>>>> just select scheduler or direct.
>>>>>>>>>>>>>> bogdanPricope wrote
>>>>>>>>>>>>>> This will complicate this already over-complicated code: we may
>>>>>>>>>>>>>> need to decide between ultimate performance and feature
>>>>>>>>>>>>>> richness.
>>>>>>>>>>>>>>> bogdanPricope wrote
>>>>>>>>>>>>>>> No - we need to print csum errors first.
>>>>>>>>>>>>>>> This part was significantly changed in api-next (csum checks
>>>>>>>>>>>>>>> use different/ new API) and it makes no sense to optimize it
>>>>>>>>>>>>>>> for the old (master) code. After integration in api-next, this
>>>>>>>>>>>>>>> part will be reworked to use less parser flags (reduce
>>>>>>>>>>>>>>> parsing level).
>>>>>>>>>>>>>>> For example, removing L4 parsing and locating interface is
>>>>>>>>>>>>>>> bringing an extra 1 mpps.
>>>>>>>>>>>>>>>> bogdanPricope wrote
>>>>>>>>>>>>>>>> '-r' may work.
>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>>>>>> Having an option to use direct mode seems reasonable, but
>>>>>>>>>>>>>>>>> shouldn't we retain schedule mode (perhaps as a command line
>>>>>>>>>>>>>>>>> switch)? This would provide an easy means of testing
>>>>>>>>>>>>>>>>> scheduler efficiency as it is tuned. At least in some
>>>>>>>>>>>>>>>>> environments we'd like schedule mode to show better
>>>>>>>>>>>>>>>>> performance than direct.
>>>>>>>>>>>>>>>>>> muvarov wrote
>>>>>>>>>>>>>>>>>> that has to be the first check.
>>>>>>>>>>>>>>>>>>> muvarov wrote
>>>>>>>>>>>>>>>>>>> -r ?
https://github.com/Linaro/odp/pull/343#discussion_r158211236
updated_at 2017-12-21 07:30:11