net: ipa: extend endpoints in packet init command
The IP_PACKET_INIT immediate command defines the destination endpoint to which a packet should be sent. Prior to IPA v5.0, a 5 bit field in that command represents the endpoint, but starting with IPA v5.0, the field is extended to 8 bits to support more than 32 endpoints. Signed-off-by: Alex Elder <elder@linaro.org> Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
07abde549b
commit
c84ddc1197
@@ -94,11 +94,11 @@ struct ipa_cmd_register_write {
|
||||
/* IPA_CMD_IP_PACKET_INIT */
|
||||
|
||||
struct ipa_cmd_ip_packet_init {
|
||||
u8 dest_endpoint;
|
||||
u8 dest_endpoint; /* Full 8 bits used for IPA v5.0+ */
|
||||
u8 reserved[7];
|
||||
};
|
||||
|
||||
/* Field masks for ipa_cmd_ip_packet_init dest_endpoint field */
|
||||
/* Field mask for ipa_cmd_ip_packet_init dest_endpoint field (unused v5.0+) */
|
||||
#define IPA_PACKET_INIT_DEST_ENDPOINT_FMASK GENMASK(4, 0)
|
||||
|
||||
/* IPA_CMD_DMA_SHARED_MEM */
|
||||
@@ -491,8 +491,13 @@ static void ipa_cmd_ip_packet_init_add(struct gsi_trans *trans, u8 endpoint_id)
|
||||
cmd_payload = ipa_cmd_payload_alloc(ipa, &payload_addr);
|
||||
payload = &cmd_payload->ip_packet_init;
|
||||
|
||||
payload->dest_endpoint = u8_encode_bits(endpoint_id,
|
||||
IPA_PACKET_INIT_DEST_ENDPOINT_FMASK);
|
||||
if (ipa->version < IPA_VERSION_5_0) {
|
||||
payload->dest_endpoint =
|
||||
u8_encode_bits(endpoint_id,
|
||||
IPA_PACKET_INIT_DEST_ENDPOINT_FMASK);
|
||||
} else {
|
||||
payload->dest_endpoint = endpoint_id;
|
||||
}
|
||||
|
||||
gsi_trans_cmd_add(trans, payload, sizeof(*payload), payload_addr,
|
||||
opcode);
|
||||
|
||||
Reference in New Issue
Block a user