* Query on Rx Frame processing @ 2011-10-15 14:15 amit mehta 2011-10-15 19:28 ` michi1 at michaelblizek.twilightparadox.com 0 siblings, 1 reply; 2+ messages in thread From: amit mehta @ 2011-10-15 14:15 UTC (permalink / raw) To: kernelnewbies I'm trying to understand Linux Network subsystem and after reading some documents, my broad level understanding for Rx Path is as follows: 1: Card receives the packet. 2: Assume everything is fine, the card DMAs the frame for the driver to process it further. 3: Driver allocate an skb buffer, adjusts the headroom. 4: Fills the buffer and pass it to the Network layer. Now in step 4 above, driver passes this packet to the network layer by calling netif_receive_skb() which may return NET_RX_DROP (packet was dropped), but most (I checked some of the network driver code) of the network drivers do not do this check. Hence, Q1: Shouldn't drivers be doing that ? Q2: Suppose the Card keeps pushing the frames at very high rate (10 Gig adapters are already in the market and maybe in near future we might have even faster ethernet adapters) then how the driver and the networking stack will handle such rapid frames arrivals? Will NAPI, interrupt coalescing be enough ? I'm referring kernel version 2.6.31 -Amit ^ permalink raw reply [flat|nested] 2+ messages in thread
* Query on Rx Frame processing 2011-10-15 14:15 Query on Rx Frame processing amit mehta @ 2011-10-15 19:28 ` michi1 at michaelblizek.twilightparadox.com 0 siblings, 0 replies; 2+ messages in thread From: michi1 at michaelblizek.twilightparadox.com @ 2011-10-15 19:28 UTC (permalink / raw) To: kernelnewbies Hi! On 19:45 Sat 15 Oct , amit mehta wrote: ... > Now in step 4 above, driver passes this packet to the > network layer by calling netif_receive_skb() which may return > NET_RX_DROP (packet was dropped), but most > (I checked some of the network driver code) of the network > drivers do not do this check. > Hence, > Q1: Shouldn't drivers be doing that ? The return value NET_RX_DROP seems to be used in various places where no congestion exists: http://lxr.linux.no/linux+v3.0.4/net/ipv4/ip_forward.c#L131 http://lxr.linux.no/linux+v3.0.4/net/ipv4/ip_input.c#L369 http://lxr.linux.no/linux+v3.0.4/net/ipv4/ip_input.c#L451 What should network drivers do with this info? Also, there might be multiple layer 3 protocols. If one of them would signal congestion, should the driver slow down receiving? Maybe the question is rather why does this variable exist at all. I guess it is just to got statistic data. > Q2: Suppose the Card keeps pushing the frames at very high rate > (10 Gig adapters are already in the market and maybe in near future > we might have even faster ethernet adapters) then how the driver > and the networking stack will handle such rapid frames arrivals? > Will NAPI, interrupt coalescing be enough ? It seems like net_rx_action does some throttling: http://lxr.linux.no/linux+v3.0.4/net/core/dev.c#L3764 -Michi -- programing a layer 3+4 network protocol for mesh networks see http://michaelblizek.twilightparadox.com ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-10-15 19:28 UTC | newest] Thread overview: 2+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-10-15 14:15 Query on Rx Frame processing amit mehta 2011-10-15 19:28 ` michi1 at michaelblizek.twilightparadox.com
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.