hello, i have made some measurements and it looks like rx_interrupt() called to: - read packet from eth - alloc skb - enqueue skb in backlog ...is not atomic (interrupt context can not be interrupted by sth else...?...). I though that reading packet into memory (skb) when packet comes into NIC is done in interrupt context, so (i thought) once rx_interrupt is called for a packet entering kernel, it can not be interrupted until skb is allocated and enqueued for later processing (in backlog). Please see attached figure (Dok1.doc) showing cycles count for the rx_interrupt phase (until packet is put to backlog) (plot only shows "200 Kbps" flow packets). Test configuration details: IPv4, Router with 3 NIC, 2-INPUTS, 1-OUTPUT (with bottleneck 2Mbps to stimulate diffserv mechanisms input flows (both PERIODIC): 200Kbps (pkt_size = 96B)and 2Mbps (pkt_size=1000B) are sent one for each input NIC respectively I wonder what the monotonical line (looks like some kind of artefact) on cycles plot means??? Could someone figure out (i suspect either 2Mbps synchronises somehow with 200Kbps reception causing rise in cycle count or real time clock interrupts synchronixe somehow) any comments on this??? regards adam
Attachment:
Dok1.doc
Description: MS-Word document