On Tue, Jun 21, 2016 at 9:58 PM, William Tu <u9012...@gmail.com> wrote: > Hi Pravin, > > Thanks for the feedback. > >>> @@ -4084,10 +4089,13 @@ dp_execute_cb(void *aux_, struct dp_packet_batch >>> *packets_, >>> int i; >>> >>> if (!may_steal) { >>> - dp_packet_batch_clone(&tnl_pkt, packets_); >>> - packets_ = &tnl_pkt; >>> + dp_packet_batch_clone(&tnl_pkt, packets_); >>> + packets_ = &tnl_pkt; >>> } >>> >>> + dp_packet_batch_cutlen(packets_); >>> + dp_packet_batch_reset_cutlen(orig_packets_); >>> + >> is there any need to call dp_packet_batch_reset_cutlen() function >> after dp_packet_batch_cutlen()? > > Yes, if may_steal == false, we need to clear the cutlen at the > original packets so that it won't leak to other actions. > Can you move this to the block which test for may_steal?
>>> @@ -4107,22 +4115,41 @@ dp_execute_cb(void *aux_, struct dp_packet_batch >>> *packets_, >>> >>> case OVS_ACTION_ATTR_USERSPACE: >>> if (!fat_rwlock_tryrdlock(&dp->upcall_rwlock)) { >>> + struct dp_packet_bat >>> @@ -1585,6 +1585,12 @@ netdev_dpdk_send__(struct netdev_dpdk *dev, int qid, >>> >>> for (i = 0; i < cnt; i++) { >>> int size = dp_packet_size(pkts[i]); >>> + uint32_t cutlen = dp_packet_get_cutlen(pkts[i]); >>> + >>> + if (cutlen > 0) { >>> + size -= cutlen; >>> + dp_packet_set_size(pkts[i], size); >>> + } >> No need to check if cutlen is positive value, subtracting zero does >> not matter anyways. > > Yes, no need to check. > I did this check on purpose since for dpdk, dp_packet_set_size() does > two assignment, set data_len and pkt_len. If cutlen is rarely used, I > feel it's more efficient adding this check. > It can be optimized using batch truncate flag. But this can be addressed later after the API changes. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev