virtio: Decouple virtqueues and vrings

Add struct virtqueue_ops back into the virtio core code to facilitate
the use of virtqueue implementations other than vrings. This allows
virtqueue implementations that use SMD drivers, USB drivers, or other
mechanisms for transport.

Add a new virtqueue operation, virtqueue_get_impl_size, to provide the
functionality of virtqueue_get_vring_size from the previous collapsed
implementation.

This commit partially reverts commit
7c5e9ed0c8.

Change-Id: I1219c4f203879658dce5800f405291bf311564b4
Signed-off-by: Yatin Manerkar <yatinm@codeaurora.org>
This commit is contained in:
Yatin Manerkar
2012-06-12 15:27:41 -07:00
committed by Stephen Boyd
parent 96be649682
commit 80098d52d5
3 changed files with 277 additions and 70 deletions

View File

@@ -900,8 +900,8 @@ static void virtnet_get_ringparam(struct net_device *dev,
{
struct virtnet_info *vi = netdev_priv(dev);
ring->rx_max_pending = virtqueue_get_vring_size(vi->rvq);
ring->tx_max_pending = virtqueue_get_vring_size(vi->svq);
ring->rx_max_pending = virtqueue_get_impl_size(vi->rvq);
ring->tx_max_pending = virtqueue_get_impl_size(vi->svq);
ring->rx_pending = ring->rx_max_pending;
ring->tx_pending = ring->tx_max_pending;