Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UCP/ADDRESS: cleanup deprecated flags #10468

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 9 additions & 35 deletions src/ucp/wireup/address.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,12 +204,6 @@ UCS_ARRAY_DECLARE_TYPE(ucp_address_remote_device_array_t, unsigned,
UCP_ADDRESS_FLAG_LAST))

#define UCP_ADDRESS_FLAG_MD_EMPTY_DEV 0x80u /* Device without TL addresses */
#define UCP_ADDRESS_FLAG_MD_ALLOC 0x40u /* MD can register */
#define UCP_ADDRESS_FLAG_MD_REG 0x20u /* MD can allocate */
#define UCP_ADDRESS_FLAG_MD_MASK_V1 (UCS_MASK(8) ^ \
(UCP_ADDRESS_FLAG_MD_EMPTY_DEV | \
UCP_ADDRESS_FLAG_MD_ALLOC | \
UCP_ADDRESS_FLAG_MD_REG))
#define UCP_ADDRESS_FLAG_MD_MASK (UCS_MASK(8) ^ \
UCP_ADDRESS_FLAG_MD_EMPTY_DEV)

Expand Down Expand Up @@ -471,19 +465,16 @@ ucp_address_packed_size(ucp_worker_h worker,
ucp_object_version_t addr_version)
{
size_t size = 0;
size_t md_mask;
ssize_t value_size;
const ucp_address_packed_device_t *dev;
ucp_md_index_t md_index;
const ucp_tl_resource_desc_t *rsc;

/* header: version and flags */
if (addr_version == UCP_OBJECT_VERSION_V1) {
size += sizeof(uint8_t);
md_mask = UCP_ADDRESS_FLAG_MD_MASK_V1;
size += sizeof(uint8_t);
} else {
size += sizeof(uint16_t);
md_mask = UCP_ADDRESS_FLAG_MD_MASK;
size += sizeof(uint16_t);
}

if (pack_flags & UCP_ADDRESS_PACK_FLAG_WORKER_UUID) {
Expand All @@ -507,7 +498,8 @@ ucp_address_packed_size(ucp_worker_h worker,
/* device md_index */
md_index = rsc->md_index;
/* md index (+flags) can take 2 bytes with address version 2 */
value_size = ucp_address_packed_value_size(md_index, md_mask,
value_size = ucp_address_packed_value_size(md_index,
UCP_ADDRESS_FLAG_MD_MASK,
addr_version,
rsc->tl_rsc.dev_name);
if (value_size < 0) {
Expand Down Expand Up @@ -597,37 +589,21 @@ ucp_address_unpack_byte_extended(const void *ptr, size_t value_mask,
return (void*)ptr;
}

static size_t ucp_address_md_mask(ucp_object_version_t addr_version)
{
return (addr_version == UCP_OBJECT_VERSION_V1) ?
UCP_ADDRESS_FLAG_MD_MASK_V1 : UCP_ADDRESS_FLAG_MD_MASK;
}

static void *
ucp_address_pack_md_info(void *ptr, int is_empty_dev, uint64_t md_flags,
ucp_md_index_t md_index,
ucp_object_version_t addr_version)
{
uint8_t *flags_ptr = ptr;
size_t mask = ucp_address_md_mask(addr_version);

ptr = ucp_address_pack_byte_extended(ptr, md_index, mask, addr_version);
ptr = ucp_address_pack_byte_extended(ptr, md_index,
UCP_ADDRESS_FLAG_MD_MASK,
addr_version);

if (is_empty_dev) {
*flags_ptr |= UCP_ADDRESS_FLAG_MD_EMPTY_DEV;
}

if (addr_version == UCP_OBJECT_VERSION_V1) {
/* Preserve wire protocol even though these flags are not used */
if (md_flags & UCT_MD_FLAG_ALLOC) {
*flags_ptr |= UCP_ADDRESS_FLAG_MD_ALLOC;
}

if (md_flags & UCT_MD_FLAG_REG) {
*flags_ptr |= UCP_ADDRESS_FLAG_MD_REG;
}
}

return ptr;
}

Expand All @@ -637,12 +613,10 @@ static void *ucp_address_unpack_md_info(const void *ptr,
int *empty_dev)
{
uint8_t md_byte = *(uint8_t*)ptr;
size_t mask;

*empty_dev = md_byte & UCP_ADDRESS_FLAG_MD_EMPTY_DEV;
mask = ucp_address_md_mask(addr_version);

return ucp_address_unpack_byte_extended(ptr, mask, addr_version, md_index);
return ucp_address_unpack_byte_extended(ptr, UCP_ADDRESS_FLAG_MD_MASK,
addr_version, md_index);
Comment on lines +618 to +619
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there seems to be still a wire-compat issue - when old address arrives, we will initialize md_index as invalid

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you mean then any of UCP_ADDRESS_FLAG_MD_ALLOC | UCP_ADDRESS_FLAG_MD_REG was packed by remote side?

}

static uint32_t ucp_address_pack_flags(uint64_t input_flags,
Expand Down
Loading