Re: [PATCH v2] virtio_net: Introduce extended RSC feature

2019-02-13 Thread Yuri Benditovich
Can you please let me know whether this patch accepted?
Is yes, I'll post similar change to qemu to prevent future compilation
error when linux header will be updated.

Thanks,
Yuri

On Fri, Feb 1, 2019 at 10:50 AM Yuri Benditovich
 wrote:
>
> VIRTIO_NET_F_RSC_EXT feature bit indicates that the device
> is able to provide extended RSC information. When the feature
> is active and 'gso_type' field in received packet is not GSO_NONE,
> the device reports number of coalesced packets in 'csum_start'
> field and number of duplicated acks in 'csum_offset' field
> and sets VIRTIO_NET_HDR_F_RSC_INFO in 'flags' field.
>
> Signed-off-by: Yuri Benditovich 
> ---
>  include/uapi/linux/virtio_net.h | 12 +++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h
> index a3715a3224c1..23e73d666fc2 100644
> --- a/include/uapi/linux/virtio_net.h
> +++ b/include/uapi/linux/virtio_net.h
> @@ -56,7 +56,7 @@
>  #define VIRTIO_NET_F_MQ22  /* Device supports Receive Flow
>  * Steering */
>  #define VIRTIO_NET_F_CTRL_MAC_ADDR 23  /* Set MAC address */
> -
> +#define VIRTIO_NET_F_RSC_EXT 61/* Provides extended RSC info */
>  #define VIRTIO_NET_F_STANDBY 62/* Act as standby for another device
>  * with the same MAC.
>  */
> @@ -104,6 +104,7 @@ struct virtio_net_config {
>  struct virtio_net_hdr_v1 {
>  #define VIRTIO_NET_HDR_F_NEEDS_CSUM1   /* Use csum_start, 
> csum_offset */
>  #define VIRTIO_NET_HDR_F_DATA_VALID2   /* Csum is valid */
> +#define VIRTIO_NET_HDR_F_RSC_INFO  4   /* rsc_ext data in csum_ fields */
> __u8 flags;
>  #define VIRTIO_NET_HDR_GSO_NONE0   /* Not a GSO frame */
>  #define VIRTIO_NET_HDR_GSO_TCPV4   1   /* GSO frame, IPv4 TCP (TSO) 
> */
> @@ -118,6 +119,15 @@ struct virtio_net_hdr_v1 {
> __virtio16 num_buffers; /* Number of merged rx buffers */
>  };
>
> +/* if VIRTIO_NET_HDR_F_RSC_INFO is set, the csum_start
> + * field contains number of coalesced segments
> + */
> +#define virtio_net_rsc_ext_num_packets csum_start
> +/* if VIRTIO_NET_HDR_F_RSC_INFO is set, the csum_offset
> + * field contains number of duplicated acks
> + */
> +#define virtio_net_rsc_ext_num_dupacks csum_offset
> +
>  #ifndef VIRTIO_NET_NO_LEGACY
>  /* This header comes first in the scatter-gather list.
>   * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must
> --
> 2.17.1
>


[PATCH v2] virtio_net: Introduce extended RSC feature

2019-02-01 Thread Yuri Benditovich
VIRTIO_NET_F_RSC_EXT feature bit indicates that the device
is able to provide extended RSC information. When the feature
is active and 'gso_type' field in received packet is not GSO_NONE,
the device reports number of coalesced packets in 'csum_start'
field and number of duplicated acks in 'csum_offset' field
and sets VIRTIO_NET_HDR_F_RSC_INFO in 'flags' field.

Signed-off-by: Yuri Benditovich 
---
 include/uapi/linux/virtio_net.h | 12 +++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h
index a3715a3224c1..23e73d666fc2 100644
--- a/include/uapi/linux/virtio_net.h
+++ b/include/uapi/linux/virtio_net.h
@@ -56,7 +56,7 @@
 #define VIRTIO_NET_F_MQ22  /* Device supports Receive Flow
 * Steering */
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23  /* Set MAC address */
-
+#define VIRTIO_NET_F_RSC_EXT 61/* Provides extended RSC info */
 #define VIRTIO_NET_F_STANDBY 62/* Act as standby for another device
 * with the same MAC.
 */
@@ -104,6 +104,7 @@ struct virtio_net_config {
 struct virtio_net_hdr_v1 {
 #define VIRTIO_NET_HDR_F_NEEDS_CSUM1   /* Use csum_start, csum_offset 
*/
 #define VIRTIO_NET_HDR_F_DATA_VALID2   /* Csum is valid */
+#define VIRTIO_NET_HDR_F_RSC_INFO  4   /* rsc_ext data in csum_ fields */
__u8 flags;
 #define VIRTIO_NET_HDR_GSO_NONE0   /* Not a GSO frame */
 #define VIRTIO_NET_HDR_GSO_TCPV4   1   /* GSO frame, IPv4 TCP (TSO) */
@@ -118,6 +119,15 @@ struct virtio_net_hdr_v1 {
__virtio16 num_buffers; /* Number of merged rx buffers */
 };
 
+/* if VIRTIO_NET_HDR_F_RSC_INFO is set, the csum_start
+ * field contains number of coalesced segments
+ */
+#define virtio_net_rsc_ext_num_packets csum_start
+/* if VIRTIO_NET_HDR_F_RSC_INFO is set, the csum_offset
+ * field contains number of duplicated acks
+ */
+#define virtio_net_rsc_ext_num_dupacks csum_offset
+
 #ifndef VIRTIO_NET_NO_LEGACY
 /* This header comes first in the scatter-gather list.
  * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must
-- 
2.17.1