firewire: core: replace local macros with common inline functions for isochronous...
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 28 Apr 2024 07:13:46 +0000 (16:13 +0900)
committerTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 6 May 2024 02:06:05 +0000 (11:06 +0900)
This commit replaces the local macros with the common inline functions
to serialize the packer header for Asynchronous Streaming Packet.

Link: https://lore.kernel.org/r/20240428071347.409202-9-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
drivers/firewire/core-transaction.c

index 45ea15342ab82978c8f638ed93cd4cce21d81f01..3ecb0b945083c6501836e43bc954dce1affdd5ae 100644 (file)
@@ -31,9 +31,6 @@
 #include "core.h"
 #include "packet-header-definitions.h"
 
-#define HEADER_TCODE(tcode)            ((tcode) << 4)
-#define HEADER_DATA_LENGTH(length)     ((length) << 16)
-
 #define HEADER_DESTINATION_IS_BROADCAST(header) \
        ((async_header_get_destination(header) & 0x3f) == 0x3f)
 
@@ -215,10 +212,11 @@ static void fw_fill_request(struct fw_packet *packet, int tcode, int tlabel,
        int ext_tcode;
 
        if (tcode == TCODE_STREAM_DATA) {
-               packet->header[0] =
-                       HEADER_DATA_LENGTH(length) |
-                       destination_id |
-                       HEADER_TCODE(TCODE_STREAM_DATA);
+               // The value of destination_id argument should include tag, channel, and sy fields
+               // as isochronous packet header has.
+               packet->header[0] = destination_id;
+               isoc_header_set_data_length(packet->header, length);
+               isoc_header_set_tcode(packet->header, TCODE_STREAM_DATA);
                packet->header_length = 4;
                packet->payload = payload;
                packet->payload_length = length;