> > > On Sat, Apr 22, 2017 at 02:23:50PM +0800, Gonglei wrote: > > +Dataq requests for both session and stateless modes are as follows: > > + > > +\begin{lstlisting} > > +struct virtio_crypto_op_data_req_mux { > > + struct virtio_crypto_op_header header; > > + > > + union { > > + struct virtio_crypto_sym_data_req sym_req; > > + struct virtio_crypto_hash_data_req hash_req; > > + struct virtio_crypto_mac_data_req mac_req; > > + struct virtio_crypto_aead_data_req aead_req; > > + struct virtio_crypto_sym_data_req_stateless > sym_stateless_req; > > + struct virtio_crypto_hash_data_req_stateless > hash_stateless_req; > > + struct virtio_crypto_mac_data_req_stateless > mac_stateless_req; > > + struct virtio_crypto_aead_data_req_stateless > aead_stateless_req; > > + } u; > > +}; > > +\end{lstlisting} > > Halil touched on this in the discussion: this spec uses a C-like struct > syntax but does not define whether unions really affect sizeof(mystruct) > like they would in C or whether you just mean that any of the union > fields can be used. This distinction is important so device and driver > authors understand the exact memory layout of requests and responses. > > Please include an explanation about the meaning of "union" in the text. > Halil has different opinion in other thread, I replied.
I'll wait for his new response about it. Thanks! > > +Session mode MAC service requests are as follows: > > + > > +\begin{lstlisting} > > +struct virtio_crypto_mac_para { > > + struct virtio_crypto_hash_para hash; > > +}; > > + > > +struct virtio_crypto_mac_data_req { > > + /* Device-readable part */ > > + struct virtio_crypto_mac_para para; > > + /* Source data */ > > + u8 src_data[src_data_len]; > > + > > + /* Device-writable part */ > > + /* Hash result data */ > > + u8 hash_result[hash_result_len]; > > + struct virtio_crypto_inhdr inhdr; > > +}; > > +\end{lstlisting} > > + > > +Each data request uses virtio_crypto_mac_data_req structure to store > information > > "Each request uses the virtio_crypto_mac_data_req structure to store > information" > OK. > > +Session mode requests of symmetric algorithm are as follows: > > + > > +\begin{lstlisting} > > +struct virtio_crypto_sym_data_req { > > + union { > > + struct virtio_crypto_cipher_data_req cipher; > > + struct virtio_crypto_alg_chain_data_req chain; > > + } u; > > + > > + /* Device-readable part */ > > + > > + /* See above VIRTIO_CRYPTO_SYM_OP_* */ > > + le32 op_type; > > + le32 padding; > > +}; > > +\end{lstlisting} > > + > > +Each data request uses virtio_crypto_sym_data_req structure to store > information > > s/virtio_crypto_sym_data_req structure/the virtio_crypto_sym_data_req > structure/ OK. Thanks, -Gonglei