Re: [PATCH 1/4] virtio-net: convert rx mode setting to use workqueue

From: Jason Wang
Date: Tue Dec 27 2022 - 04:07:13 EST



在 2022/12/27 15:39, Michael S. Tsirkin 写道:
On Mon, Dec 26, 2022 at 03:49:05PM +0800, Jason Wang wrote:
@@ -2227,9 +2267,21 @@ static void virtnet_set_rx_mode(struct net_device *dev)
VIRTIO_NET_CTRL_MAC_TABLE_SET, sg))
dev_warn(&dev->dev, "Failed to set MAC filter table.\n");
+ rtnl_unlock();
+
kfree(buf);
}
+static void virtnet_set_rx_mode(struct net_device *dev)
+{
+ struct virtnet_info *vi = netdev_priv(dev);
+
+ spin_lock(&vi->rx_mode_lock);
+ if (vi->rx_mode_work_enabled)
+ schedule_work(&vi->rx_mode_work);
+ spin_unlock(&vi->rx_mode_lock);
+}
+
static int virtnet_vlan_rx_add_vid(struct net_device *dev,
__be16 proto, u16 vid)
{
Hmm so user tells us to e.g enable promisc. We report completion
but card is still dropping packets. I think this
has a chance to break some setups.


I think all those filters are best efforts, am I wrong?

Thanks