From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6CDAC433B4 for ; Mon, 12 Apr 2021 10:06:00 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 208F861245 for ; Mon, 12 Apr 2021 10:05:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 208F861245 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id A65091657; Mon, 12 Apr 2021 12:05:07 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz A65091657 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1618221957; bh=BxGRNp0WJ2qTV8kxsssc171kArEuohETDuxiHJdSTgI=; h=Date:From:To:Subject:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=U1d0kChmajuqn/tspcd3aP0PG8Qj/gQhW3Sz0+G0vR3+Ye5jfFAm0BlQfS+g/idaO RYf55mdZGs7pc2z6oQPgxCMuMFf32IcuPwCZrLd94s9OQZSV6E1jEAWjpGRwYH+YnG Hd4j8pW0WJzdUXkoBYr9jQjO+BBN+rVFoPaeTRvk= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 3123EF80269; Mon, 12 Apr 2021 12:05:07 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 0B723F80273; Mon, 12 Apr 2021 12:05:06 +0200 (CEST) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 4B709F8025B for ; Mon, 12 Apr 2021 12:04:58 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 4B709F8025B X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id F2788AF1A; Mon, 12 Apr 2021 10:04:57 +0000 (UTC) Date: Mon, 12 Apr 2021 12:04:57 +0200 Message-ID: From: Takashi Iwai To: Jaroslav Kysela Subject: Re: [PATCH v4] sound: rawmidi: Add framing mode In-Reply-To: <822b7ebf-71ac-2f84-731d-65e772eea1ff@perex.cz> References: <20210410120229.1172054-1-coding@diwic.se> <87f906a5-b77f-d3e8-29d7-7ce6e35c452a@perex.cz> <822b7ebf-71ac-2f84-731d-65e772eea1ff@perex.cz> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Cc: alsa-devel@alsa-project.org, David Henningsson X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" On Mon, 12 Apr 2021 11:43:02 +0200, Jaroslav Kysela wrote: > > Dne 12. 04. 21 v 11:31 Takashi Iwai napsal(a): > > On Sun, 11 Apr 2021 19:52:21 +0200, > > Jaroslav Kysela wrote: > >>>>> struct snd_rawmidi_params { > >>>>> int stream; > >>>>> size_t buffer_size; /* queue size in bytes */ > >>>>> size_t avail_min; /* minimum avail bytes for wakeup */ > >>>>> unsigned int no_active_sensing: 1; /* do not send active sensing byte in close() */ > >>>>> - unsigned char reserved[16]; /* reserved for future use */ > >>>>> + unsigned char framing; /* For input data only, frame incoming data */ > >>>> We can move this flag to above 32-bit word (no_active_sensing). I'm not sure, > >>>> if we need 8 bits for this. It's first change after 20 years. Another flag may > >>>> obsolete this one. > >>> > >>> Not sure what you mean by this, could you show the code? Framing is an > >>> enum rather than a flag, in case we find other framing formats with > >>> other sizes that would obsolete this one. > >> > >> unsigned int no_active_sensing: 1; > >> unsigned int framing32: 1; > >> unsigned int framing64: 1; /* future extension, framing32 == 0 in this case */ > >> > >> or: > >> > >> unsigned int framing_mode: 3; /* three bits for future types */ > >> > >> perhaps also: > >> > >> unsigned int clock_type: 3; /* three bits for the clock type selection */ > > > > The usage of bit fields in an ioctl struct is a bad idea from the > > compat layer POV. Let's avoid it. > > What exactly do you mean? The compat layer has the hard time to deal with the conversion of bit fields to a different struct. And, it's a nightmare for the emulator like QEMU. If it has to convert the ioctl struct, it has to consider about the byte order as well (and there is no strict definition how to put the bit fields in C language). That said, a bit field can be useful for the internal object definition (if there is no racy access), but not for an object for the communication that may be interpreted among different architectures. Takashi