Re: [PATCH v4 2/8] scpi: Add alternative legacy structures, functions and macros

From: Sudeep Holla
Date: Wed Oct 19 2016 - 12:22:59 EST

On 19/10/16 11:28, Neil Armstrong wrote:
On 10/17/2016 01:16 PM, Sudeep Holla wrote:


and the above 2 can be moved out of the conditions, no ?

if (scpi_info->is_legacy) {
struct legacy_scpi_shared_mem *mem = ch->rx_payload;
len = match->rx_len;
} else {
struct scpi_shared_mem *mem = ch->rx_payload;
len = min(match->rx_len, CMD_SIZE(cmd));
match->status = le32_to_cpu(mem->status);
memcpy_fromio(match->rx_buf, mem->payload, len);

should work.

Well, we will have "error: ‘mem’ undeclared (first use in this
function)" since mem is not declared outside the if/else.

I don't see good solutions even with an union.

Right, I missed to see that. You can leave it as you had before then.

if (t->rx_buf) {
if (!(++ch->token))
ADD_SCPI_TOKEN(t->cmd, ch->token);
+ if (scpi_info->is_legacy)
+ t->slot = t->cmd;

I thought passing token was not an issue from your previous response,
but you are overriding it here, why ?

Indeed, I can leave it, but it's useless since it won't serve to
distinguish multiple similar commands.

OK, I don't see any point in such micro optimization, so please retain it.

I misread my code, I leaved the token passing, but I copy back the
cmd to the slot which is used by the MHU.
If I remove the "t->slot = t->cmd;", the token won't be passed to the

Right, sorry I think I misled you :)