virtio_net.c (7c1453ab9550e45695a3edd6833108622e782e42) | virtio_net.c (39d591b0d618bd27a240a2d3da2fa1221e0cf133) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* A network driver using virtio. 3 * 4 * Copyright 2007 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation 5 */ 6//#define DEBUG 7#include <linux/netdevice.h> 8#include <linux/etherdevice.h> --- 2841 unchanged lines hidden (view full) --- 2850 struct virtnet_info *vi = netdev_priv(dev); 2851 2852 ring->rx_max_pending = vi->rq[0].vq->num_max; 2853 ring->tx_max_pending = vi->sq[0].vq->num_max; 2854 ring->rx_pending = virtqueue_get_vring_size(vi->rq[0].vq); 2855 ring->tx_pending = virtqueue_get_vring_size(vi->sq[0].vq); 2856} 2857 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* A network driver using virtio. 3 * 4 * Copyright 2007 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation 5 */ 6//#define DEBUG 7#include <linux/netdevice.h> 8#include <linux/etherdevice.h> --- 2841 unchanged lines hidden (view full) --- 2850 struct virtnet_info *vi = netdev_priv(dev); 2851 2852 ring->rx_max_pending = vi->rq[0].vq->num_max; 2853 ring->tx_max_pending = vi->sq[0].vq->num_max; 2854 ring->rx_pending = virtqueue_get_vring_size(vi->rq[0].vq); 2855 ring->tx_pending = virtqueue_get_vring_size(vi->sq[0].vq); 2856} 2857 |
2858static int virtnet_send_ctrl_coal_vq_cmd(struct virtnet_info *vi, 2859 u16 vqn, u32 max_usecs, u32 max_packets); 2860 |
|
2858static int virtnet_set_ringparam(struct net_device *dev, 2859 struct ethtool_ringparam *ring, 2860 struct kernel_ethtool_ringparam *kernel_ring, 2861 struct netlink_ext_ack *extack) 2862{ 2863 struct virtnet_info *vi = netdev_priv(dev); 2864 u32 rx_pending, tx_pending; 2865 struct receive_queue *rq; --- 19 unchanged lines hidden (view full) --- 2885 for (i = 0; i < vi->max_queue_pairs; i++) { 2886 rq = vi->rq + i; 2887 sq = vi->sq + i; 2888 2889 if (ring->tx_pending != tx_pending) { 2890 err = virtnet_tx_resize(vi, sq, ring->tx_pending); 2891 if (err) 2892 return err; | 2861static int virtnet_set_ringparam(struct net_device *dev, 2862 struct ethtool_ringparam *ring, 2863 struct kernel_ethtool_ringparam *kernel_ring, 2864 struct netlink_ext_ack *extack) 2865{ 2866 struct virtnet_info *vi = netdev_priv(dev); 2867 u32 rx_pending, tx_pending; 2868 struct receive_queue *rq; --- 19 unchanged lines hidden (view full) --- 2888 for (i = 0; i < vi->max_queue_pairs; i++) { 2889 rq = vi->rq + i; 2890 sq = vi->sq + i; 2891 2892 if (ring->tx_pending != tx_pending) { 2893 err = virtnet_tx_resize(vi, sq, ring->tx_pending); 2894 if (err) 2895 return err; |
2896 2897 /* Upon disabling and re-enabling a transmit virtqueue, the device must 2898 * set the coalescing parameters of the virtqueue to those configured 2899 * through the VIRTIO_NET_CTRL_NOTF_COAL_TX_SET command, or, if the driver 2900 * did not set any TX coalescing parameters, to 0. 2901 */ 2902 err = virtnet_send_ctrl_coal_vq_cmd(vi, txq2vq(i), 2903 vi->intr_coal_tx.max_usecs, 2904 vi->intr_coal_tx.max_packets); 2905 if (err) 2906 return err; 2907 2908 vi->sq[i].intr_coal.max_usecs = vi->intr_coal_tx.max_usecs; 2909 vi->sq[i].intr_coal.max_packets = vi->intr_coal_tx.max_packets; |
|
2893 } 2894 2895 if (ring->rx_pending != rx_pending) { 2896 err = virtnet_rx_resize(vi, rq, ring->rx_pending); 2897 if (err) 2898 return err; | 2910 } 2911 2912 if (ring->rx_pending != rx_pending) { 2913 err = virtnet_rx_resize(vi, rq, ring->rx_pending); 2914 if (err) 2915 return err; |
2916 2917 /* The reason is same as the transmit virtqueue reset */ 2918 err = virtnet_send_ctrl_coal_vq_cmd(vi, rxq2vq(i), 2919 vi->intr_coal_rx.max_usecs, 2920 vi->intr_coal_rx.max_packets); 2921 if (err) 2922 return err; 2923 2924 vi->rq[i].intr_coal.max_usecs = vi->intr_coal_rx.max_usecs; 2925 vi->rq[i].intr_coal.max_packets = vi->intr_coal_rx.max_packets; |
|
2899 } 2900 } 2901 2902 return 0; 2903} 2904 2905static bool virtnet_commit_rss_command(struct virtnet_info *vi) 2906{ --- 1870 unchanged lines hidden --- | 2926 } 2927 } 2928 2929 return 0; 2930} 2931 2932static bool virtnet_commit_rss_command(struct virtnet_info *vi) 2933{ --- 1870 unchanged lines hidden --- |