IXGB networl driver and locking

sivakumar.subramani at wipro.com sivakumar.subramani at wipro.com
Tue May 15 08:53:00 UTC 2007


Thanks for the reply. Sorry garbled URL in the previous message. 
 
Actually I was talk between the ixgb_start (Transmit function not the Transmit interrupt handler) and rx interrupt handler function ( Where we send the packet up using if_input function). 
 
We are using same lock between transmit and Rx_interrupt handler function, Will it affect the performance? Can we use seperate locks for these functions to increase the performance on multiproccessor system. 
 
For ex, if we assume that ixgb_start function is executed on CPU1 and it create the mbuf for transmit. We receive Rx interrupt and CPU2 is scheduled with Rx interrupt handler. Since we are holding the lock in ixgb_start function, the Rx interrupt handler can not proceed further as it needs ADAPTER LOCK.
 
Am I Correct ??
 
Thanks,
~Siva
 

________________________________

From: Jack Vogel [mailto:jfvogel at gmail.com]
Sent: Tue 5/15/2007 1:47 PM
To: SIVAKUMAR SUBRAMANI (WT01 - Computing Storage and Software Products)
Cc: freebsd-net at freebsd.org
Subject: Re: IXGB networl driver and locking



On 5/14/07, sivakumar.subramani at wipro.com <sivakumar.subramani at wipro.com> wrote:
>
> Hi all,
>
> Same lock is being used in ixgb_intr and ixgb_start. If we get Receive
> interrupt while processing Xmit (ixgb_start), Will the calling of
> ixgb_intr() handler be delayed as we will not be getting lock in
> ixgb_intr since it is already locked in ixgb_start. If it is the case,
> are we making it as Half duplex, I mean we are allowing either of one Tx
> (or) Rx. Please clarify.

What was all this garbled URLs in your message, something is messing
with your content.

In any case, the device only has ONE interrupt registered, it can be
caused by either RX or TX or whatever.

This as well as the em driver has always had a single lock as well,
and, while it could be made more sophisticated, it has been adequate.
The em driver in CURRENT handles some interrupts without the lock.

In any case, the hardware operates independently of the driver to some
extent, processing RX from the wire, and doing the DMA to memory
without the driver being in control, it interrupts when it gets done with
an packet, and even then it can continue.

So, I dont know what your real issue is, but the single adapter lock
does not make things half duplex.

Jack





The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. 

WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email.
 
www.wipro.com


More information about the freebsd-net mailing list