RE: Regarding skb and skb_frags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Pranay Srivastava [mailto:pranjas@xxxxxxxxx]
> Sent: Thursday, May 01, 2014 8:17 PM
> To: Jeff Haran
> Cc: Valdis.Kletnieks@xxxxxx; kernelnewbies
> Subject: Re: Regarding skb and skb_frags
> 
> On Thu, May 1, 2014 at 9:50 PM, Jeff Haran <Jeff.Haran@xxxxxxxxxx> wrote:
> >> -----Original Message-----
> >> From: kernelnewbies-bounces@xxxxxxxxxxxxxxxxx
> >> [mailto:kernelnewbies-bounces@xxxxxxxxxxxxxxxxx] On Behalf Of Pranay
> >> Srivastava
> >> Sent: Thursday, May 01, 2014 7:10 AM
> >> To: Valdis.Kletnieks@xxxxxx
> >> Cc: kernelnewbies
> >> Subject: Re: Regarding skb and skb_frags
> >>
> >> On Thu, May 1, 2014 at 7:29 PM,  <Valdis.Kletnieks@xxxxxx> 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

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux