Regards _Sugesh
> -----Original Message----- > From: Darrell Ball [mailto:db...@vmware.com] > Sent: Thursday, August 10, 2017 5:15 PM > To: Chandran, Sugesh <sugesh.chand...@intel.com>; Ben Pfaff > <b...@ovn.org> > Cc: d...@openvswitch.org > Subject: Re: [ovs-dev] [patch_v5] dp-packet: Reset DPDK HWOL checksum > flags on init. > > > > -----Original Message----- > From: Darrell Ball <db...@vmware.com> > Date: Wednesday, August 9, 2017 at 1:38 PM > To: "Chandran, Sugesh" <sugesh.chand...@intel.com>, Ben Pfaff > <b...@ovn.org> > Cc: "d...@openvswitch.org" <d...@openvswitch.org> > Subject: Re: [ovs-dev] [patch_v5] dp-packet: Reset DPDK HWOL checksum > flags on init. > > > > -----Original Message----- > From: "Chandran, Sugesh" <sugesh.chand...@intel.com> > Date: Wednesday, August 9, 2017 at 12:55 PM > To: Darrell Ball <db...@vmware.com>, Ben Pfaff <b...@ovn.org> > Cc: "d...@openvswitch.org" <d...@openvswitch.org> > Subject: RE: [ovs-dev] [patch_v5] dp-packet: Reset DPDK HWOL checksum > flags on init. > > > > Regards > _Sugesh > > <snip> > > > > > > > > Correct, I reused reset_dp_packet_checksum_ol_flags() > to do > the > > > initialization as well > > > > I could also have created a separate function. > > > > > > > > In case a DPDK dev is used, those flags will be managed > by > DPDK. > > > > > > > > That sounds like a > > > > bug in itself--is there a missing call to > initialize the mbuf > > somewhere? > > > > > > > > Are you suggesting to initialize the whole mbuf for > each packet > ? > > > > > > The issue that I'm raising is that it's unusual to take an > > > uninitialized, indeterminate field, and then initialize > it by clearing > a > > > few bits. It's much more conventional to initialize it > by setting it > to > > > zero, like this: > > > > > > p->mbuf.ol_flags = 0; > > > > > > > > > That is better; I will create a separate function then. > > > I will resend > > > Thanks > > [Sugesh] I also agree with Ben here. > > Currently OVS uses only checksum offload flags from mbuf(As I am > aware > > of). > > But there are other flag bits that may get used in future like > TSO. > > So its better to initialize the mbuf properly before using. > > > > Here is the mbuf reset function in DPDK that get called when an > existing > > memory is mapped to > > Mbuf. > > I believe only the ol_flags are relevant for now in OVS. > > > > There is no higher cost associated with initializing all the > ol_flags vs > some > > flags, so that is fine. > > It will be done twice in the case of a packet received from a dpdk > device, but > > it is a small cost. > > I was more concerned about the dual responsibility conflict when > packets are > > received from a DPDK device and this is why I wanted to limit the > scope > of > > the flag management in OVS; it should be ok, though. > > Hence, I mentioned that I will initialize all the ol_flags. > > > > JTBC, are you suggesting to initialize all the fields below ? > > This would mean when packets are received from a DPDK dev, both > the rte > > library and OVS would separately initialize all the fields below – > meaning, it > > would be done twice for each packet. > > > [Sugesh] No, we don’t have to initialize all the fields. But we can > have a > generic function > to init all mbuf fields that are relevant in OVS. > For now its only ol_flags. In the future this function must be updated > when we use more > fields from rte_mbuf. > > We are on the same page then. > I plan for the function to have a generic name, so this fine. > > > Sorry, I really didn’t get the case you mentioned above, where the > init > get called twice. > What I can see in the code is , during the dpdk mp init, the > the dp_packet_init is called for rte_mbuf initialization. This > happens at > port initiation. > > On packet reception, there wont any call to dp_packet_init. > > I meant for the memory related to packets that are received, not during > the reception time itself. > However, the memory will be reused for subsequent packets, right. You > can’t use a piece of memory > once and never use it again – this is called a memory leak. This means > each > mbuf will need to be initialized again and again. > > I did some background investigation around this Sugesh. > I originally expected that an init function ptr for OVS only portion of dp- > packet by passed and saved with the dpdk library to be used to opaquely init > when rte calls priv memory, which is ovs common memory, in this case. > The func ptr is used but only for init of the dpdk memory pools (which > confirms what you mentioned) and not later when mbuf memory is reused > for subsequent packets. Some OVS common memory (i.e. non-mbuf > portion) of dp-packet must still be initialized for every packet; the > transient > fields and seem to be otherwise done in other code paths during packet > processing. So, it made me wonder why we bother doing the non-mbuf (OVS > specific) init at pool creation time for the OVS specific transient fields. I > did > some initial testing and will follow up separately on this. [Sugesh] Sure. If the OVS specific fields(non mbuf) are initialed afterwards in packet processing (In all the cases) we may remove it from the mempool init. > > > > > static inline void rte_pktmbuf_reset(struct rte_mbuf *m) > > { > > m->next = NULL; > > m->pkt_len = 0; > > m->tx_offload = 0; > > m->vlan_tci = 0; > > m->vlan_tci_outer = 0; > > m->nb_segs = 1; > > m->port = 0xff; > > > > m->ol_flags = 0; > > m->packet_type = 0; > > rte_pktmbuf_reset_headroom(m); > > > > m->data_len = 0; > > __rte_mbuf_sanity_check(m, 1); > > } > > > > > > > > > > > That made me wonder whether there's a larger problem of a > failure to > > > initialize the mbuf more generally, although of course > that does > not > > > necessarily follow. > > > > > > > > > _______________________________________________ > > > dev mailing list > > > d...@openvswitch.org > > > https://urldefense.proofpoint.com/v2/url?u=https- > > 3A__mail.openvswitch.org_mailman_listinfo_ovs- > > > 2Ddev&d=DwIFAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih- > > > uZnsw&m=wM40bZgtG4Ul1nb53ufLGymPOplaXttP5W6_wL2w_XA&s=05T6d > > 75pGHINP78-6gwS87E3IhAXzHojsFzyNSDdaTY&e= > > > > > > > > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev