Hi, >When working in interrupt driven model, the nic registers an >interrupt handler; The nic registers an interrupt handle also when working in polling mode; See all the new drivers like e1000, e1000e and more. when working in interrupt mode, each packet received triggers an interrupt; when working in polling mode, we start in interrupt model; but only the first packet triggers interrupt, afterward we work in poll mode. If traffic is low we switch again to interrupt mode. There are cases when netif_rx() is used for interrupt driven driver; look in: http://lxr.free-electrons.com/source/drivers/net/ethernet/davicom/dm9000.c dm9000_rx() is called from the interrupt isr, dm9000_interrupt. And grepping for the network drivers subtree will easily find some more examples. Regards, Rami Rosen http://ramirose.wix.com/ramirosen On Mon, Apr 8, 2013 at 8:42 AM, Robert Clove <cloverobert@xxxxxxxxx> wrote: > As far i have read the packet reception i have found out that > When working in interrupt driven model, the nic registers an > interrupt handler; > • This interrupt handler will be called when a frame is received; > • Typically in the handler, we allocate sk buff by calling > dev alloc skb(); > • Copies data from nic’s buffer to this struct just created; > • nic call generic reception routine netif rx(); > • netif rx() put frame in per cpu queue; > • if queue is full, drop! > > BUT i didn't found the netif_rx() in the following link > http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/e100.c#L2204 > > > > > On Sun, Apr 7, 2013 at 8:52 PM, Rami Rosen <roszenrami@xxxxxxxxx> wrote: >> >> Hi, >> we have in : >> http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/e100.c >> >> struct nic { >> /* Begin: frequently used values: keep adjacent for cache effect >> */ >> u32 msg_enable ____cacheline_aligned; >> struct net_device *netdev; >> struct pci_dev *pdev; >> ... >> ... >> >> And indeed nic->netdev represents an Ethernet interface, which >> is the struct net_device (see: include/linux/netdevice.h) >> >> Regards, >> Rami Rosen >> http://ramirose.wix.com/ramirosen >> >> >> On Sun, Apr 7, 2013 at 5:52 AM, ishare <june.tune.sea@xxxxxxxxx> wrote: >> > On Fri, Apr 05, 2013 at 03:06:37PM +0300, Rami Rosen wrote: >> >> Robert, >> >> You should look for the request_irq() method in the driver. >> >> This method registers an interrupt handler. >> >> For example, you can look in: >> >> http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/e100.c >> >> ... >> >> ... >> >> if ((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED, >> >> nic->netdev->name, nic->netdev))) >> >> >> >> ... >> >> >> >> This means that e100_intr is registered as an interrupt handler. >> > >> > Is this nic->netdev represent a Ethernet interface ? >> > >> > >> >> >> >> Best, >> >> Rami Rosen >> >> http://ramirose.wix.com/ramirosen >> >> >> >> >> >> On Fri, Apr 5, 2013 at 11:50 AM, Robert Clove <cloverobert@xxxxxxxxx> >> >> wrote: >> >> > Hello All, >> >> > >> >> > >> >> > I am new here. >> >> > I want to know the interrupt handler of the ethernet card and where >> >> > can i >> >> > find the definition of it so as i can clear the flow of packet >> >> > reception. >> >> > >> >> > Thanks >> >> > Robert >> >> > >> >> > _______________________________________________ >> >> > Kernelnewbies mailing list >> >> > Kernelnewbies@xxxxxxxxxxxxxxxxx >> >> > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> >> > >> >> >> >> _______________________________________________ >> >> Kernelnewbies mailing list >> >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies