From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff.Haran@citrix.com (Jeff Haran) Date: Fri, 2 May 2014 16:21:25 +0000 Subject: Regarding skb and skb_frags In-Reply-To: References: <30835.1398952794@turing-police.cc.vt.edu> <4E5779AD88B2F040B8A7E83ECF544D1A508E7B@SJCPEX01CL02.citrite.net> Message-ID: <4E5779AD88B2F040B8A7E83ECF544D1A5092E5@SJCPEX01CL02.citrite.net> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org > -----Original Message----- > From: Pranay Srivastava [mailto:pranjas at gmail.com] > Sent: Thursday, May 01, 2014 8:17 PM > To: Jeff Haran > Cc: Valdis.Kletnieks at vt.edu; kernelnewbies > Subject: Re: Regarding skb and skb_frags > > On Thu, May 1, 2014 at 9:50 PM, Jeff Haran wrote: > >> -----Original Message----- > >> From: kernelnewbies-bounces at kernelnewbies.org > >> [mailto:kernelnewbies-bounces at kernelnewbies.org] On Behalf Of Pranay > >> Srivastava > >> Sent: Thursday, May 01, 2014 7:10 AM > >> To: Valdis.Kletnieks at vt.edu > >> Cc: kernelnewbies > >> Subject: Re: Regarding skb and skb_frags > >> > >> On Thu, May 1, 2014 at 7:29 PM, wrote: > >> > On Thu, 01 May 2014 16:12:43 +0530, Pranay Srivastava said: > >> > > >> >> My question is that an Ethernet frame won't be bigger than 1500 > >> >> bytes [correct?] > >> > > >> > Incorrect. 10G and faster ethernet support jumbograms. We run our > >> > HPC 10G network with an MTU of 9000 (which is 2 pages and a bit more). > >> > > >> Ok. So in any case the driver won't poke past ethernet header to look > >> for the size [Correct?]. > >> So it means only when MTU is bigger than page size would there be a > >> possibility of skb_frags [Correct?]. > > > > I'm not sure what kernel version you are looking at, but when I do a search > for skb_frags in the latest kernel sources at http://lxr.linux.no, I don't see any > variables or structure members named skb_frags, though it shows up in > comments in one driver. > > > > That being said, I believe skb fragments are also used to implement > scatter/gather lists of packet payload data, even in packets less than or equal to > the usual 1500 bytes. > > > > On the systems I work with, I've seen this happening in packets originating > from the target system, i.e. egress path of local traffic. > I think i get it with egress path since you are actually sending out packet > possible via scatter/gather. But this skb won't be allocated by the driver, it'll be > given to the driver by upper networking subsystem. I'm confused about the > inbound packets, would they ever be having skb fragments [sorry to confuse > with skb_frags i wasn' > reffering to structure]? > > I'm more inclined to know from a device driver's perspective if it'll have to > create an skb when a packet arrives which is non-linear. I suppose that will be up to the driver and the hardware it supports. I've never worked with a driver that delivers non-linear packets on ingress, but I don't know of any requirement that they not do so. There's also the case of GRO where multiple ingress packets get combined into a single large skb. In that case it might make perfect sense to deliver non-linear skbs on ingress since the original frames may have been DMA'ed into different memory buffers, though I have to admit I don't know the details of the GRO implementation well enough to say whether this in fact happens. Jeff Haran