On Tue, 17 Mar 2009 17:12:48 -0700 Alexander Duyck <alexander.h.duyck@xxxxxxxxx> wrote:
Thanks for all the comments. I tried to incorporate most of them into the igbvf driver and also ended up porting some over to our other drivers, specifically igb since the igbvf driver copies much of the code.
I have added my comments inline below.
Thanks,
Alex
Andrew Morton wrote:On Tue, 10 Mar 2009 19:09:28 -0700 Jeff Kirsher <jeffrey.t.kirsher@xxxxxxxxx> wrote:
From: Alexander Duyck <alexander.h.duyck@xxxxxxxxx>The drive-by reader is now wondering what a "virtual function" is.
This adds an igbvf driver to handle virtual functions provided
by the igb driver.
^^ this comment was missed.
I was indirectly asking for an overview (preferably in the changelog) of
what the whole patch actually does.
This bit isn't set in interrupt context. This is always used out of interrupt context and is just to prevent multiple setting changes at the same time.+static int igbvf_set_ringparam(struct net_device *netdev,No timeout needed here? Interrupts might not be working, for example..
+ struct ethtool_ringparam *ring)
+{
+ struct igbvf_adapter *adapter = netdev_priv(netdev);
+ struct igbvf_ring *tx_ring, *tx_old;
+ struct igbvf_ring *rx_ring, *rx_old;
+ int err;
+
+ if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
+ return -EINVAL;
+
+ while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
+ msleep(1);
Oh. Can't use plain old mutex_lock()?