Hi Donald,

Thanks you for response. Here i have one more question. I separated two
function for rx and tx Q vectors likes ixgbe_msix_clean_rx and
ixgbe_msix_clean_tx in the as below in a ixgbe_request_msix_irqs. Now it
didn't hits kdb. But i kept print statements in _clean_rx and _clean_tx.
But it prints q_vector->tx.ring and q_vector->rx.ring values were NULL. I
could see values of q_vector,q_vector->name,q_vector,q_vector->rx.ring and
q_vector->tx.ring values in ixgbe_request_msix_irqs. I don't understand why
q_vector->tx.ring value was NULL in the ixgbe_msix_clean_tx and
q_vector->rx.ring value was NULL ixgbe_msix_clean_rx.

#define SET_HANDLER(_v) (((_v)->rx.ring && (_v)->tx.ring)        \
                        ? &ixgbe_msix_clean_ring :             \
                    (_v)->rx.ring ? &ixgbe_msix_clean_rx   : \
                    (_v)->tx.ring ? &ixgbe_msix_clean_tx   : \
                    NULL)

if(handler == &ixgbe_msix_clean_rx) {
                        snprintf(q_vector->name, sizeof(q_vector->name) - 1,
                                 "%s-%s-%d", netdev->name, "rx", ri++);
    }else if(handler == &ixgbe_msix_clean_tx) {
                        snprintf(q_vector->name, sizeof(q_vector->name) - 1,
                                 "%s-%s-%d", netdev->name, "tx", ti++);
    }else if (handler == &ixgbe_msix_clean_rings){
                        snprintf(q_vector->name, sizeof(q_vector->name) - 1,
                                 "%s-%s-%d", netdev->name, "TxRx", ri++);
                        ti++;
    } else{
        /* skip this unused q_vector */
                        continue;
    }

err = request_irq(entry->vector, handler, 0,
                                  q_vector->name, q_vector);

Now I could see rx and tx interrupts in "cat /proc/interrupts" also.

Thanks and Regard's
venkat


On Tue, Oct 1, 2013 at 10:32 PM, Skidmore, Donald C <
[email protected]> wrote:

> > -----Original Message-----
> > From: venkatakrishna pari [mailto:[email protected]]
> > Sent: Tuesday, October 01, 2013 7:12 AM
> > To: [email protected]
> > Subject: [E1000-devel] ixgbe drivers went to KDB when enable separate Q
> > vector for rx and tx
> >
> > Hi ALl,
> >
> > I am working latest ixgbe driver of 3.16.1. I changed to code in the
> > ixgbe_set_interrupt_capability to generates separate Q vectors rx and
> tx. I
> > configured two queues rx and tx each. It able to generates four Q vector
> for
> > rx-0,rx-1,tx-0 and tx-1. But ixgbe driver went to KDB in
> > ixgbe_msix_clean_rings. I debugged ixge drivers. if found that q_vector-
> > >tx.ring and q_vector->rx.ring goes to NULL Values. I could  see values
> of
> > q_vector,q_vector->tx.ring and q_vector->rx.ring in the
> > ixgbe_request_msix_irqs.
> >
> > It is working fine when using single q_vector for TxRx. I don't see much
> code
> > difference between single Q vector TxRx and separate Q vector for rx and
> tx.
> >
> > Please i don't understand why q_vector->rx.ring and q_vector->tx.ring
> > values were zero.
> >
> > Please some one guide to debubg ixgbe driver of 3.16.1.
> >
> > Thanks and Regard's
> > venkat
>
> The ixgbe driver is designed to take advantage that we always assign
> queues in queue pairs.  In fact not doing so will mess up offloads that our
> on by default like ATR.  I'm not saying it can't be done just it will take
> more work than just modifying ixgbe_set_interrupt_capability().
>
> The reason you see the following conditional (if (q_vector->rx.ring ||
> q_vector->tx.ring)) hit in ixgbe_msix_clean_rings() is that you most likely
> only have one of the ring structures populated since now you only have an
> Tx or Rx queue on that vector.
>
> Thanks,
> -Don <[email protected]>
>
>
>
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to