Re: Interrupt Handler of Ethernet Device

2013-04-07 Thread Rami Rosen
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@gmail.com 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 cloverob...@gmail.com 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@kernelnewbies.org
  http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
 

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

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


simple question about the function memcmp in kernel

2013-04-07 Thread Ben Wu
Dear All:
 
   
int memcmp(const void *cs, const void *ct, size_t count)
{
 const unsigned char *su1, *su2;
 int res = 0;

 for (su1 = cs, su2 = ct; 0  count; ++su1, ++su2, count--)
  if ((res = *su1 - *su2) != 0)
   break;
 return res;
}

I want to know why it use the temp pointer su1, su2? why it doesn't directly 
use the cs and ct pointer?


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


Re: simple question about the function memcmp in kernel

2013-04-07 Thread Valdis . Kletnieks
On Mon, 08 Apr 2013 08:57:01 +0800, Ben Wu said:

 int memcmp(const void *cs, const void *ct, size_t count)
 {

 I want to know why it use the temp pointer su1, su2? why it doesn't directly
 use the cs and ct pointer?

This is a C 101 question, not a kernel question.  But anyhow..

They're declared const, so the compiler will whine about ++'ing them.



pgp54ftb3974m.pgp
Description: PGP signature
___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: simple question about the function memcmp in kernel

2013-04-07 Thread Max Filippov
On Mon, Apr 8, 2013 at 5:33 AM,  valdis.kletni...@vt.edu wrote:
 On Mon, 08 Apr 2013 08:57:01 +0800, Ben Wu said:

 int memcmp(const void *cs, const void *ct, size_t count)
 {

 I want to know why it use the temp pointer su1, su2? why it doesn't directly
 use the cs and ct pointer?

 This is a C 101 question, not a kernel question.  But anyhow..

 They're declared const, so the compiler will whine about ++'ing them.

const is the the object they point to, not the pointers themselves
(that would be
void * const cs).

memcmp compares bytes at which cs and ct point, but these are void pointers,
and the expression res = *cs - *ct is thus meaningless. One must convert them
to (const unsigned char *), which looks ugly, otherwise such implementation
looks like pretty much valid:

int memcmp(const void *cs, const void *ct, size_t count)
{
 int res = 0;

 for (; 0  count; ++cs, ++ct, count--)
  if ((res =*(const unsigned char *)cs - *(const unsigned char
*)ct) != 0)
   break;
 return res;
}

-- 
Thanks.
-- Max

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


Re: simple question about the function memcmp in kernel

2013-04-07 Thread Valdis . Kletnieks
On Mon, 08 Apr 2013 05:56:29 +0400, Max Filippov said:

 const is the the object they point to, not the pointers themselves
 (that would be
 void * const cs).

 memcmp compares bytes at which cs and ct point, but these are void pointers,
 and the expression res = *cs - *ct is thus meaningless.

Max is right, and I'm obviously under-caffienated or something. :)


pgpBklAZO3h8m.pgp
Description: PGP signature
___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: simple question about the function memcmp in kernel

2013-04-07 Thread Burke
于 2013-4-8 10:29, valdis.kletni...@vt.edu 写道:
 On Mon, 08 Apr 2013 05:56:29 +0400, Max Filippov said:

 const is the the object they point to, not the pointers themselves
 (that would be
 void * const cs).

 memcmp compares bytes at which cs and ct point, but these are void pointers,
 and the expression res = *cs - *ct is thus meaningless.
 Max is right, and I'm obviously under-caffienated or something. :)
Dear Max,Valdis:
I got it, many thanks for your kindly reply.


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


Re: Interrupt Handler of Ethernet Device

2013-04-07 Thread Robert Clove
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 roszenr...@gmail.com 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@gmail.com 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 cloverob...@gmail.com
 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@kernelnewbies.org
   http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
  
 
  ___
  Kernelnewbies mailing list
  Kernelnewbies@kernelnewbies.org
  http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

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