virtio-net.c (e22f0603fb2fc274920a9e3a1d1306260b9a4cc4) virtio-net.c (e41b711485e5b2dcf747ef27cf252a940e09247f)
1/*
2 * Virtio Network Device
3 *
4 * Copyright IBM, Corp. 2007
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *

--- 2763 unchanged lines hidden (view full) ---

2772 if (n->announce_timer.round) {
2773 timer_mod(n->announce_timer.tm,
2774 qemu_clock_get_ms(n->announce_timer.type));
2775 } else {
2776 qemu_announce_timer_del(&n->announce_timer, false);
2777 }
2778 }
2779
1/*
2 * Virtio Network Device
3 *
4 * Copyright IBM, Corp. 2007
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *

--- 2763 unchanged lines hidden (view full) ---

2772 if (n->announce_timer.round) {
2773 timer_mod(n->announce_timer.tm,
2774 qemu_clock_get_ms(n->announce_timer.type));
2775 } else {
2776 qemu_announce_timer_del(&n->announce_timer, false);
2777 }
2778 }
2779
2780 if (n->rss_data.enabled) {
2781 trace_virtio_net_rss_enable(n->rss_data.hash_types,
2782 n->rss_data.indirections_len,
2783 sizeof(n->rss_data.key));
2784 } else {
2785 trace_virtio_net_rss_disable();
2786 }
2780 return 0;
2781}
2782
2783static int virtio_net_post_load_virtio(VirtIODevice *vdev)
2784{
2785 VirtIONet *n = VIRTIO_NET(vdev);
2786 /*
2787 * The actual needed state is now in saved_guest_offloads,

--- 161 unchanged lines hidden (view full) ---

2949 .post_load = virtio_net_vnet_post_load,
2950 .pre_save = virtio_net_vnet_pre_save,
2951 .fields = (VMStateField[]) {
2952 VMSTATE_UINT32(has_vnet_hdr, struct VirtIONetMigTmp),
2953 VMSTATE_END_OF_LIST()
2954 },
2955};
2956
2787 return 0;
2788}
2789
2790static int virtio_net_post_load_virtio(VirtIODevice *vdev)
2791{
2792 VirtIONet *n = VIRTIO_NET(vdev);
2793 /*
2794 * The actual needed state is now in saved_guest_offloads,

--- 161 unchanged lines hidden (view full) ---

2956 .post_load = virtio_net_vnet_post_load,
2957 .pre_save = virtio_net_vnet_pre_save,
2958 .fields = (VMStateField[]) {
2959 VMSTATE_UINT32(has_vnet_hdr, struct VirtIONetMigTmp),
2960 VMSTATE_END_OF_LIST()
2961 },
2962};
2963
2964static bool virtio_net_rss_needed(void *opaque)
2965{
2966 return VIRTIO_NET(opaque)->rss_data.enabled;
2967}
2968
2969static const VMStateDescription vmstate_virtio_net_rss = {
2970 .name = "virtio-net-device/rss",
2971 .version_id = 1,
2972 .minimum_version_id = 1,
2973 .needed = virtio_net_rss_needed,
2974 .fields = (VMStateField[]) {
2975 VMSTATE_BOOL(rss_data.enabled, VirtIONet),
2976 VMSTATE_BOOL(rss_data.redirect, VirtIONet),
2977 VMSTATE_BOOL(rss_data.populate_hash, VirtIONet),
2978 VMSTATE_UINT32(rss_data.hash_types, VirtIONet),
2979 VMSTATE_UINT16(rss_data.indirections_len, VirtIONet),
2980 VMSTATE_UINT16(rss_data.default_queue, VirtIONet),
2981 VMSTATE_UINT8_ARRAY(rss_data.key, VirtIONet,
2982 VIRTIO_NET_RSS_MAX_KEY_SIZE),
2983 VMSTATE_VARRAY_UINT16_ALLOC(rss_data.indirections_table, VirtIONet,
2984 rss_data.indirections_len, 0,
2985 vmstate_info_uint16, uint16_t),
2986 VMSTATE_END_OF_LIST()
2987 },
2988};
2989
2957static const VMStateDescription vmstate_virtio_net_device = {
2958 .name = "virtio-net-device",
2959 .version_id = VIRTIO_NET_VM_VERSION,
2960 .minimum_version_id = VIRTIO_NET_VM_VERSION,
2961 .post_load = virtio_net_post_load_device,
2962 .fields = (VMStateField[]) {
2963 VMSTATE_UINT8_ARRAY(mac, VirtIONet, ETH_ALEN),
2964 VMSTATE_STRUCT_POINTER(vqs, VirtIONet,

--- 34 unchanged lines hidden (view full) ---

2999 vmstate_info_uint16_equal, uint16_t),
3000 VMSTATE_UINT16_TEST(curr_queues, VirtIONet, max_queues_gt_1),
3001 VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
3002 vmstate_virtio_net_tx_waiting),
3003 VMSTATE_UINT64_TEST(curr_guest_offloads, VirtIONet,
3004 has_ctrl_guest_offloads),
3005 VMSTATE_END_OF_LIST()
3006 },
2990static const VMStateDescription vmstate_virtio_net_device = {
2991 .name = "virtio-net-device",
2992 .version_id = VIRTIO_NET_VM_VERSION,
2993 .minimum_version_id = VIRTIO_NET_VM_VERSION,
2994 .post_load = virtio_net_post_load_device,
2995 .fields = (VMStateField[]) {
2996 VMSTATE_UINT8_ARRAY(mac, VirtIONet, ETH_ALEN),
2997 VMSTATE_STRUCT_POINTER(vqs, VirtIONet,

--- 34 unchanged lines hidden (view full) ---

3032 vmstate_info_uint16_equal, uint16_t),
3033 VMSTATE_UINT16_TEST(curr_queues, VirtIONet, max_queues_gt_1),
3034 VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
3035 vmstate_virtio_net_tx_waiting),
3036 VMSTATE_UINT64_TEST(curr_guest_offloads, VirtIONet,
3037 has_ctrl_guest_offloads),
3038 VMSTATE_END_OF_LIST()
3039 },
3040 .subsections = (const VMStateDescription * []) {
3041 &vmstate_virtio_net_rss,
3042 NULL
3043 }
3007};
3008
3009static NetClientInfo net_virtio_info = {
3010 .type = NET_CLIENT_DRIVER_NIC,
3011 .size = sizeof(NICState),
3012 .can_receive = virtio_net_can_receive,
3013 .receive = virtio_net_receive,
3014 .link_status_changed = virtio_net_set_link_status,

--- 553 unchanged lines hidden ---
3044};
3045
3046static NetClientInfo net_virtio_info = {
3047 .type = NET_CLIENT_DRIVER_NIC,
3048 .size = sizeof(NICState),
3049 .can_receive = virtio_net_can_receive,
3050 .receive = virtio_net_receive,
3051 .link_status_changed = virtio_net_set_link_status,

--- 553 unchanged lines hidden ---