On Fri, May 22, 2015 at 10:26:48AM +0000, Joao Martins wrote:
[...]
> >>    return IRQ_HANDLED;
> >> }
> >> @@ -168,8 +169,12 @@ static int xenvif_start_xmit(struct sk_buff *skb, 
> >> struct net_device *dev)
> >>    cb = XENVIF_RX_CB(skb);
> >>    cb->expires = jiffies + vif->drain_timeout;
> >> 
> >> -  xenvif_rx_queue_tail(queue, skb);
> >> -  xenvif_kick_thread(queue);
> >> +  if (!queue->vif->persistent_grants) {
> >> +          xenvif_rx_queue_tail(queue, skb);
> >> +          xenvif_kick_thread(queue);
> >> +  } else if (xenvif_rx_map(queue, skb)) {
> >> +          return NETDEV_TX_BUSY;
> >> +  }
> >> 
> > 
> > We now have two different functions for guest RX, one is xenvif_rx_map,
> > the other is xenvif_rx_action. They look very similar. Can we only have
> > one?
> I think I can merge this into xenvif_rx_action, and I notice that the stall
> detection its missing. I will also add that.
> Perhaps I could also disable the RX kthread, since this doesn't get used with
> persistent grants?
> 

Disabling that kthread is fine. But we do need to make sure we can do
the same things in start_xmit as we are in kthread. I.e. what context
does start_xmit run in and what are the restrictions.

Wei.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to