linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dave <kilroyd@googlemail.com>
To: Pavel Roskin <proski@gnu.org>
Cc: linux-wireless@vger.kernel.org, orinoco-devel@lists.sourceforge.net
Subject: Re: [PATCH 00/19] orinoco: WPA for Agere based cards
Date: Wed, 06 Aug 2008 00:46:48 +0100	[thread overview]
Message-ID: <4898E668.9020604@gmail.com> (raw)
In-Reply-To: <1217977166.19480.2.camel@dv>

Pavel Roskin wrote:
> On Tue, 2008-08-05 at 00:09 +0100, Dave wrote:
>> Actually I meant the DECLARE_DEFAULT_PDA macro in hermes_dld.c:
                        ^^ DEFINE obviously.

>> dkilroy@borken /usr/src/wireless-testing $ git diff HEAD~20 | scripts/checkpatch.pl -
>> ERROR: Macros with multiple statements should be enclosed in a do - while loop
>> #933: FILE: drivers/net/wireless/hermes_dld.c:570:
>> +#define DEFINE_DEFAULT_PDR(pid, length, data)				\
>> +static const struct {							\
>> +	__le16 len;							\
>> +	__le16 id;							\
>> +	u8 val[length];							\
>> +} __attribute__ ((packed)) default_pdr_data_##pid = {			\
>> +	__constant_cpu_to_le16((sizeof(default_pdr_data_##pid)/		\
>> +				sizeof(__le16)) - 1),			\
>> +	__constant_cpu_to_le16(pid),					\
>> +	data								\
>> +}
> 
> I suggest that you take the structure definition outside the macro and
> give it a reasonable name.

The reason for defining it in this manner is to ensure the data is consistent. For those that are interested, this code is at the end of patch 08/19.

It allows (using pid 0x0005 and dummy data as an example throughout):

DEFINE_DEFAULT_PDR(0x0005, 7, "\x00\x01\x02\x03\x04\x05\x06");

instead of:

#define DEFINE_PDR(pid, len, data)                                      \
        __constant_cpu_to_le16((len/		                        \
				sizeof(__le16)) - 1),			\
	__constant_cpu_to_le16(pid),					\
	data

struct {
 __le16 len;
 __le16 id;
 u8 val[7];
} __attribute__ ((packed)) named_pdr = {
	DEFINE_PDR(0x0005, 7, "\x00\x01\x02\x03\x04\x05\x06")
};

or

#define DECLARE_PDA(len)
struct {                     \
 __le16 len;                 \
 __le16 id;                  \
 u8 val[7];                  \
} __attribute__ ((packed))

DECLARE_PDA(7) named_pdr = {
	DEFINE_PDR(0x0005, 7, "\x00\x01\x02\x03\x04\x05\x06")
};

There are 5 or 6 different structures declared in this manner, one for each pid. In one case the data element is 256 bytes. I think that the style in the patch is easier on the eye, and less likely to become inconsistent over time. It would be even better if I could omit the length and just provide pid and data, but I can't see how to do that.

The user only needs to know the variable name if trying to find it in a debugger or map file, since there is a

#define DEFAULT_PDR(pid) default_pdr_data_##pid 

The mapping from pid to functionality is then entirely restricted to where the definition occurs. The switch statement in hermes_apply_pdr_with_defaults is a straight pid to pid mapping, with comments just to keep track. If desired I can add

#define HWIF_COMPAT 0x0005

to use in place of wherever I've used 0x0005. The variable will end up being called default_pdr_data_HWIF_COMPAT, and everything else is unchanged.


Please provide an example of how you think the above could be done better - I've tried several things, and I still think that what is in the patch is the neatest.


Regards,

Dave.

  reply	other threads:[~2008-08-05 23:53 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-02 10:14 [PATCH 00/19] orinoco: WPA for Agere based cards kilroyd
2008-08-02 10:14 ` [PATCH 01/19] orinoco: Add ESSID specific scanning for Agere fw kilroyd
2008-08-02 10:14   ` [PATCH 02/19] orinoco: Update scan translation kilroyd
2008-08-02 10:14     ` [PATCH 03/19] orinoco: Specify all three parameters to every Hermes command kilroyd
2008-08-02 10:14       ` [PATCH 04/19] orinoco: Move EXPORT_SYMBOL declarations next to exported function kilroyd
2008-08-02 10:14         ` [PATCH 05/19] orinoco: Add function to execute Hermes initialisation commands synchronously kilroyd
2008-08-02 10:14           ` [PATCH 06/19] orinoco: Move firmware download functionality into new module kilroyd
2008-08-02 10:14             ` [PATCH 07/19] orinoco: Make firmware download logic more generic kilroyd
2008-08-02 10:14               ` [PATCH 08/19] orinoco: Extend hermes_dld routines for Agere firmware kilroyd
2008-08-02 10:14                 ` [PATCH 09/19] orinoco: Invoke firmware download in main driver kilroyd
2008-08-02 10:14                   ` [PATCH 10/19] orinoco: Fix transmit for Agere/Lucent with fw 9.x kilroyd
2008-08-02 10:14                     ` [PATCH 11/19] orinoco: address checkpatch typedef warning kilroyd
2008-08-02 10:14                       ` [PATCH 12/19] orinoco: Use extended Agere scans available on 9.x series firmwares kilroyd
2008-08-02 10:14                         ` [PATCH 13/19] orinoco: Don't use boolean parameter to record encoding type kilroyd
2008-08-02 10:14                           ` [PATCH 14/19] orinoco: Split wevent work thread from wevent sending kilroyd
2008-08-02 10:14                             ` [PATCH 15/19] orinoco: Use a macro to define wireless handlers kilroyd
2008-08-02 10:14                               ` [PATCH 16/19] orinoco: Add WE-18 ioctls for WPA kilroyd
2008-08-02 10:14                                 ` [PATCH 17/19] orinoco: Send association events to userspace kilroyd
2008-08-02 10:14                                   ` [PATCH 18/19] orinoco: Process bulk of receive interrupt in a tasklet kilroyd
2008-08-02 10:14                                     ` [PATCH 19/19] orinoco: Add MIC on TX and check on RX kilroyd
2008-08-02 10:22                               ` [PATCH 15/19] orinoco: Use a macro to define wireless handlers kilroyd
2008-08-04  4:48   ` [PATCH 01/19] orinoco: Add ESSID specific scanning for Agere fw Pavel Roskin
2008-08-04 15:34     ` Dan Williams
2008-08-05 16:22       ` Jean Tourrilhes
2008-09-02 23:06         ` Jean Tourrilhes
2008-09-08 12:48           ` Pavel Roskin
2008-09-08 16:45             ` Jean Tourrilhes
2008-09-08 18:32             ` Jean Tourrilhes
2008-09-09 18:37               ` Dave
2008-09-09 19:33                 ` Jean Tourrilhes
2008-09-09 21:20                   ` Tomas Winkler
2008-09-09 21:44                     ` Jean Tourrilhes
2008-09-13  4:17               ` Pavel Roskin
2008-09-15 21:17                 ` Jean Tourrilhes
2008-08-05 21:15       ` Pavel Roskin
2008-08-05 21:50         ` Dave
2008-08-05 21:55         ` Dan Williams
2008-08-05 22:48           ` Pavel Roskin
2008-08-06 13:13             ` Dan Williams
2008-08-06 13:48               ` Pavel Roskin
2008-08-06 19:26                 ` Dave
2008-08-06 19:29               ` Dave
2008-08-06 20:56                 ` Dan Williams
2008-08-06 21:03                   ` Dan Williams
2008-08-06 21:08                   ` Dave
2008-08-07  2:48                     ` Dan Williams
2008-08-07 18:43                       ` Dave
2008-08-07 19:42                         ` Dan Williams
2008-08-07 20:17                           ` Dave
2008-08-07 20:46                             ` Dan Williams
2008-08-07 21:08                           ` Dave
2008-08-08 14:51                             ` Dan Williams
2008-08-04  3:57 ` [PATCH 00/19] orinoco: WPA for Agere based cards Pavel Roskin
2008-08-04 23:09   ` Dave
2008-08-04 23:28     ` Dan Williams
2008-08-06  0:37       ` Pavel Roskin
2008-08-06 18:33         ` Dave
2008-08-06 21:01           ` Dan Williams
2008-08-07  8:06             ` Jouni Malinen
2008-08-06 21:28         ` [PATCH 12/19] orinoco: Use extended Agere scans available on 9.x series firmwares kilroyd
2008-08-05 22:38     ` [Orinoco-devel] [PATCH 00/19] orinoco: WPA for Agere based cards Pavel Roskin
2008-08-08  0:02       ` Dave
2008-08-05 22:59     ` Pavel Roskin
2008-08-05 23:46       ` Dave [this message]
2008-08-06  0:41         ` [Orinoco-devel] " Pavel Roskin
2008-08-05 22:22   ` [PATCH 07/19] orinoco: Make firmware download logic more generic kilroyd
2008-08-05 22:22     ` [PATCH 09/19] orinoco: Invoke firmware download in main driver kilroyd
2008-08-05 22:22       ` [PATCH 12/19] orinoco: Use extended Agere scans available on 9.x series firmwares kilroyd
2008-08-20 19:28 ` [PATCH 00/19] orinoco: WPA for Agere based cards John W. Linville
2008-08-20 20:49   ` Dave
2008-08-20 21:06     ` Larry Finger
2008-08-20 21:07     ` Johannes Berg
2008-08-20 21:22       ` Johannes Berg
2008-08-20 23:07         ` Dave
2008-08-21  6:42           ` Johannes Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4898E668.9020604@gmail.com \
    --to=kilroyd@googlemail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=orinoco-devel@lists.sourceforge.net \
    --cc=proski@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).