.. | .. |
---|
161 | 161 | */ |
---|
162 | 162 | |
---|
163 | 163 | /* |
---|
| 164 | + * "xdp-headroom" is used to request that extra space is added |
---|
| 165 | + * for XDP processing. The value is measured in bytes and passed by |
---|
| 166 | + * the frontend to be consistent between both ends. |
---|
| 167 | + * If the value is greater than zero that means that |
---|
| 168 | + * an RX response is going to be passed to an XDP program for processing. |
---|
| 169 | + * XEN_NETIF_MAX_XDP_HEADROOM defines the maximum headroom offset in bytes |
---|
| 170 | + * |
---|
| 171 | + * "feature-xdp-headroom" is set to "1" by the netback side like other features |
---|
| 172 | + * so a guest can check if an XDP program can be processed. |
---|
| 173 | + */ |
---|
| 174 | +#define XEN_NETIF_MAX_XDP_HEADROOM 0x7FFF |
---|
| 175 | + |
---|
| 176 | +/* |
---|
164 | 177 | * Control ring |
---|
165 | 178 | * ============ |
---|
166 | 179 | * |
---|
.. | .. |
---|
846 | 859 | #define XEN_NETIF_EXTRA_TYPE_MCAST_ADD (2) /* u.mcast */ |
---|
847 | 860 | #define XEN_NETIF_EXTRA_TYPE_MCAST_DEL (3) /* u.mcast */ |
---|
848 | 861 | #define XEN_NETIF_EXTRA_TYPE_HASH (4) /* u.hash */ |
---|
849 | | -#define XEN_NETIF_EXTRA_TYPE_MAX (5) |
---|
| 862 | +#define XEN_NETIF_EXTRA_TYPE_XDP (5) /* u.xdp */ |
---|
| 863 | +#define XEN_NETIF_EXTRA_TYPE_MAX (6) |
---|
850 | 864 | |
---|
851 | 865 | /* xen_netif_extra_info_t flags. */ |
---|
852 | 866 | #define _XEN_NETIF_EXTRA_FLAG_MORE (0) |
---|
.. | .. |
---|
879 | 893 | uint8_t algorithm; |
---|
880 | 894 | uint8_t value[4]; |
---|
881 | 895 | } hash; |
---|
| 896 | + struct { |
---|
| 897 | + uint16_t headroom; |
---|
| 898 | + uint16_t pad[2]; |
---|
| 899 | + } xdp; |
---|
882 | 900 | uint16_t pad[3]; |
---|
883 | 901 | } u; |
---|
884 | 902 | }; |
---|