Commit 36adb51a authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: usb-audio: Optimize the copy of packet sizes for implicit fb handling

We did manual copies over loop for the packet data update of the
implicit feedback, but this can be optimized with a simple memcpy().

Along with it, change the data type of snd_usb_packet_info struct to
align with other (from uint32_t to int).

No functional changes but only code optimizations.

Link: https://patch.msgid.link/20260216141209.1849200-3-tiwai@suse.de


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent cf044e44
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ struct snd_usb_endpoint {
	struct snd_urb_ctx urb[MAX_URBS];

	struct snd_usb_packet_info {
		uint32_t packet_size[MAX_PACKS_HS];
		int packet_size[MAX_PACKS_HS];
		int packets;
	} next_packet[MAX_URBS];
	unsigned int next_packet_head;	/* ring buffer offset to read */
+3 −3
Original line number Diff line number Diff line
@@ -462,7 +462,7 @@ int snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep,
	while (ep_state_running(ep)) {
		struct snd_usb_packet_info *packet;
		struct snd_urb_ctx *ctx = NULL;
		int err, i;
		int err;

		scoped_guard(spinlock_irqsave, &ep->lock) {
			if ((!implicit_fb || ep->next_packet_queued > 0) &&
@@ -482,8 +482,8 @@ int snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep,
		/* copy over the length information */
		if (implicit_fb) {
			ctx->packets = packet->packets;
			for (i = 0; i < packet->packets; i++)
				ctx->packet_size[i] = packet->packet_size[i];
			memcpy(ctx->packet_size, packet->packet_size,
			       packet->packets * sizeof(packet->packet_size[0]));
		}

		/* call the data handler to fill in playback data */