VMXNET3_CMD_GET_TXDATA_DESC_SIZE,
VMXNET3_CMD_GET_COALESCE,
VMXNET3_CMD_GET_RSS_FIELDS,
+ VMXNET3_CMD_GET_ENCAP_DSTPORT,
} Vmxnet3_Cmd;
/* Adaptive Ring Info Flags */
uint32 msscof:14; /* MSS, checksum offset, flags */
uint32 ext1:1;
uint32 dtype:1; /* descriptor type */
- uint32 rsvd:1;
+ uint32 oco:1; /* Outer csum offload */
uint32 gen:1; /* generation bit */
uint32 len:14;
#else
uint32 len:14;
uint32 gen:1; /* generation bit */
- uint32 rsvd:1;
+ uint32 oco:1; /* Outer csum offload */
uint32 dtype:1; /* descriptor type */
uint32 ext1:1;
uint32 msscof:14; /* MSS, checksum offset, flags */
Vmxnet3_TxDesc;
/* TxDesc.OM values */
-#define VMXNET3_OM_NONE 0
-#define VMXNET3_OM_CSUM 2
-#define VMXNET3_OM_TSO 3
+#define VMXNET3_OM_NONE 0 /* 0b00 */
+#define VMXNET3_OM_ENCAP 1 /* 0b01 */
+#define VMXNET3_OM_CSUM 2 /* 0b10 */
+#define VMXNET3_OM_TSO 3 /* 0b11 */
/* fields in TxDesc we access w/o using bit fields */
#define VMXNET3_TXD_EOP_SHIFT 12
uint8 segCnt; /* Number of aggregated packets */
uint8 dupAckCnt; /* Number of duplicate Acks */
__le16 tsDelta; /* TCP timestamp difference */
- __le32 dword2;
+
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint32 encap:1; /* LRO info refers to inner pkt */
+ uint32 reserved:31;
+#else
+ uint32 reserved:31;
+ uint32 encap:1; /* LRO info refers to inner pkt */
+#endif /* __BIG_ENDIAN_BITFIELD */
+
#ifdef __BIG_ENDIAN_BITFIELD
uint32 gen:1; /* generation bit */
uint32 type:7; /* completion type */
VMXNET3_RSS_FIELDS_ESPIP6 = 0x0020,
} Vmxnet3_RSSField;
+typedef
+#include "vmware_pack_begin.h"
+struct Vmxnet3_EncapDstPort {
+ __le16 geneveDstPort;
+ __le16 vxlanDstPort;
+}
+#include "vmware_pack_end.h"
+Vmxnet3_EncapDstPort;
+
/*
* If a command data does not exceed 16 bytes, it can use
* the shared memory directly. Otherwise use variable length
Vmxnet3_VariableLenConfDesc varConf;
Vmxnet3_SetPolling setPolling;
Vmxnet3_RSSField setRSSFields;
+ Vmxnet3_EncapDstPort encapDstPort;
__le64 data[2];
}
#include "vmware_pack_end.h"