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 --- |