Don't memcpy() the user payload for DATA packets, instead use lodp_siv_encrypt_data(), which will do the gather.