diff options
Diffstat (limited to 'include/xen/interface')
| -rw-r--r-- | include/xen/interface/io/blkif.h | 10 | ||||
| -rw-r--r-- | include/xen/interface/io/netif.h | 19 | ||||
| -rw-r--r-- | include/xen/interface/physdev.h | 6 |
3 files changed, 35 insertions, 0 deletions
diff --git a/include/xen/interface/io/blkif.h b/include/xen/interface/io/blkif.h index 01c3d62436ef..ffd4652de91c 100644 --- a/include/xen/interface/io/blkif.h +++ b/include/xen/interface/io/blkif.h | |||
| @@ -138,11 +138,21 @@ struct blkif_request_discard { | |||
| 138 | uint8_t _pad3; | 138 | uint8_t _pad3; |
| 139 | } __attribute__((__packed__)); | 139 | } __attribute__((__packed__)); |
| 140 | 140 | ||
| 141 | struct blkif_request_other { | ||
| 142 | uint8_t _pad1; | ||
| 143 | blkif_vdev_t _pad2; /* only for read/write requests */ | ||
| 144 | #ifdef CONFIG_X86_64 | ||
| 145 | uint32_t _pad3; /* offsetof(blkif_req..,u.other.id)==8*/ | ||
| 146 | #endif | ||
| 147 | uint64_t id; /* private guest value, echoed in resp */ | ||
| 148 | } __attribute__((__packed__)); | ||
| 149 | |||
| 141 | struct blkif_request { | 150 | struct blkif_request { |
| 142 | uint8_t operation; /* BLKIF_OP_??? */ | 151 | uint8_t operation; /* BLKIF_OP_??? */ |
| 143 | union { | 152 | union { |
| 144 | struct blkif_request_rw rw; | 153 | struct blkif_request_rw rw; |
| 145 | struct blkif_request_discard discard; | 154 | struct blkif_request_discard discard; |
| 155 | struct blkif_request_other other; | ||
| 146 | } u; | 156 | } u; |
| 147 | } __attribute__((__packed__)); | 157 | } __attribute__((__packed__)); |
| 148 | 158 | ||
diff --git a/include/xen/interface/io/netif.h b/include/xen/interface/io/netif.h index 9dfc12000980..3ef3fe05ee99 100644 --- a/include/xen/interface/io/netif.h +++ b/include/xen/interface/io/netif.h | |||
| @@ -13,6 +13,24 @@ | |||
| 13 | #include <xen/interface/grant_table.h> | 13 | #include <xen/interface/grant_table.h> |
| 14 | 14 | ||
| 15 | /* | 15 | /* |
| 16 | * Older implementation of Xen network frontend / backend has an | ||
| 17 | * implicit dependency on the MAX_SKB_FRAGS as the maximum number of | ||
| 18 | * ring slots a skb can use. Netfront / netback may not work as | ||
| 19 | * expected when frontend and backend have different MAX_SKB_FRAGS. | ||
| 20 | * | ||
| 21 | * A better approach is to add mechanism for netfront / netback to | ||
| 22 | * negotiate this value. However we cannot fix all possible | ||
| 23 | * frontends, so we need to define a value which states the minimum | ||
| 24 | * slots backend must support. | ||
| 25 | * | ||
| 26 | * The minimum value derives from older Linux kernel's MAX_SKB_FRAGS | ||
| 27 | * (18), which is proved to work with most frontends. Any new backend | ||
| 28 | * which doesn't negotiate with frontend should expect frontend to | ||
| 29 | * send a valid packet using slots up to this value. | ||
| 30 | */ | ||
| 31 | #define XEN_NETIF_NR_SLOTS_MIN 18 | ||
| 32 | |||
| 33 | /* | ||
| 16 | * Notifications after enqueuing any type of message should be conditional on | 34 | * Notifications after enqueuing any type of message should be conditional on |
| 17 | * the appropriate req_event or rsp_event field in the shared ring. | 35 | * the appropriate req_event or rsp_event field in the shared ring. |
| 18 | * If the client sends notification for rx requests then it should specify | 36 | * If the client sends notification for rx requests then it should specify |
| @@ -47,6 +65,7 @@ | |||
| 47 | #define _XEN_NETTXF_extra_info (3) | 65 | #define _XEN_NETTXF_extra_info (3) |
| 48 | #define XEN_NETTXF_extra_info (1U<<_XEN_NETTXF_extra_info) | 66 | #define XEN_NETTXF_extra_info (1U<<_XEN_NETTXF_extra_info) |
| 49 | 67 | ||
| 68 | #define XEN_NETIF_MAX_TX_SIZE 0xFFFF | ||
| 50 | struct xen_netif_tx_request { | 69 | struct xen_netif_tx_request { |
| 51 | grant_ref_t gref; /* Reference to buffer page */ | 70 | grant_ref_t gref; /* Reference to buffer page */ |
| 52 | uint16_t offset; /* Offset within buffer page */ | 71 | uint16_t offset; /* Offset within buffer page */ |
diff --git a/include/xen/interface/physdev.h b/include/xen/interface/physdev.h index 1844d31f4552..7000bb1f6e96 100644 --- a/include/xen/interface/physdev.h +++ b/include/xen/interface/physdev.h | |||
| @@ -251,6 +251,12 @@ struct physdev_pci_device_add { | |||
| 251 | 251 | ||
| 252 | #define PHYSDEVOP_pci_device_remove 26 | 252 | #define PHYSDEVOP_pci_device_remove 26 |
| 253 | #define PHYSDEVOP_restore_msi_ext 27 | 253 | #define PHYSDEVOP_restore_msi_ext 27 |
| 254 | /* | ||
| 255 | * Dom0 should use these two to announce MMIO resources assigned to | ||
| 256 | * MSI-X capable devices won't (prepare) or may (release) change. | ||
| 257 | */ | ||
| 258 | #define PHYSDEVOP_prepare_msix 30 | ||
| 259 | #define PHYSDEVOP_release_msix 31 | ||
| 254 | struct physdev_pci_device { | 260 | struct physdev_pci_device { |
| 255 | /* IN */ | 261 | /* IN */ |
| 256 | uint16_t seg; | 262 | uint16_t seg; |
