WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] RE: [PATCH ixgbe] Fix VMDq operation when maxcpus=1

To: Mitch Williams <mitch.a.williams@xxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] RE: [PATCH ixgbe] Fix VMDq operation when maxcpus=1
From: "Santos, Jose Renato G" <joserenato.santos@xxxxxx>
Date: Thu, 19 Feb 2009 06:39:24 +0000
Accept-language: en-US
Acceptlanguage: en-US
Cc: "steven.smith@xxxxxxxxxxxxx" <steven.smith@xxxxxxxxxxxxx>
Delivery-date: Wed, 18 Feb 2009 22:41:09 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <b04b26320902171544r4c9d7560y7285fef09908c5ef@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <b04b26320902171544r4c9d7560y7285fef09908c5ef@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcmRWapMadxj0wyVTxSfmjtDf5IDKwBAO3Fg
Thread-topic: [PATCH ixgbe] Fix VMDq operation when maxcpus=1
Yes, this patch fixes the problem I was seeing when running dom0 with one CPU.
I am now able to use VMDq with the ixgbe driver using the current netchannel2 
tree.
Thanks Mitch

Renato

> -----Original Message-----
> From: cluemerchant@xxxxxxxxx [mailto:cluemerchant@xxxxxxxxx] 
> On Behalf Of Mitch Williams
> Sent: Tuesday, February 17, 2009 3:44 PM
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> Cc: Santos, Jose Renato G; steven.smith@xxxxxxxxxxxxx
> Subject: [PATCH ixgbe] Fix VMDq operation when maxcpus=1
> 
> Renato reported a crash in ixgbe when the Dom0 kernel was 
> booted with maxcpus=1.
> 
> Added checks to the single-vector code path to make sure we 
> don't call any vmq functions before the ring is activated.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@xxxxxxxxx>
> 
> (Patch is attached as well as inline due to previous issue 
> with mangled patches.)
> 
> diff -r 9681e69b222b drivers/net/ixgbe/ixgbe_main.c
> --- a/drivers/net/ixgbe/ixgbe_main.c  Thu Feb 12 17:38:15 2009 +0000
> +++ b/drivers/net/ixgbe/ixgbe_main.c  Tue Feb 17 14:06:44 2009 -0800
> @@ -541,6 +541,11 @@
> 
>       i = rx_ring->next_to_use;
>       bi = &rx_ring->rx_buffer_info[i];
> +#ifdef CONFIG_XEN_NETDEV2_VMQ
> +     if ((adapter->flags & IXGBE_FLAG_VMDQ_ENABLED) &&
> +         (!rx_ring->active))
> +             return;
> +#endif
> 
>       while (cleaned_count--) {
>               rx_desc = IXGBE_RX_DESC_ADV(*rx_ring, i); @@ 
> -1123,7 +1128,13 @@
> 
>               /* ERR_MASK will only have valid bits if EOP set */
>               if (unlikely(staterr & 
> IXGBE_RXDADV_ERR_FRAME_ERR_MASK)) {
> -                     dev_kfree_skb_irq(skb);
> +#ifdef CONFIG_XEN_NETDEV2_VMQ
> +                     if ((adapter->flags & 
> IXGBE_FLAG_VMDQ_ENABLED) &&
> +                          rx_ring->queue_index)
> +                             vmq_free_skb(skb, rx_ring->queue_index);
> +                     else
> +#endif
> +                             dev_kfree_skb_irq(skb);
>                       goto next_desc;
>               }
> 
> @@ -1600,7 +1611,8 @@
>               ixgbe_update_rx_dca(adapter, rx_ring);  #endif
> 
> -     ixgbe_clean_rx_irq(adapter, rx_ring, &work_done, budget);
> +     if (rx_ring->active)
> +             ixgbe_clean_rx_irq(adapter, rx_ring, 
> &work_done, budget);
> 
>       /* If all Rx work done, exit the polling mode */
>       if ((work_done == 0) || 
> !netif_running(adapter->netdev)) { @@ -1644,7 +1656,9 @@
>               if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
>                       ixgbe_update_rx_dca(adapter, rx_ring);  #endif
> -             ixgbe_clean_rx_irq(adapter, rx_ring, 
> &work_done, budget);
> +             if (rx_ring->active)
> +                     ixgbe_clean_rx_irq(adapter, rx_ring,
> +                                        &work_done, budget);
>               enable_mask |= rx_ring->v_idx;
>               r_idx = find_next_bit(q_vector->rxr_idx, 
> adapter->num_rx_queues,
>                                     r_idx + 1);
> 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>