Message ID | bb29662337484ad8bd2350e6b68133d3@ausx13mpc120.AMER.DELL.COM (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Wed, Jan 31, 2018 at 6:46 PM, <Mario.Limonciello@dell.com> wrote: >> > for allocation: ..._alloc_request() >> > for filling: _fill_request() / _prepare_request() >> > >> > or alike. >> > >> > _set_arguments() not good enough to me. >> >> Ok. Then we need to stick with 5 arguments... What about name >> dell_fill_request()? E.g. >> >> struct calling_interface_buffer buffer; >> dell_fill_request(&buffer, 0x2, 0, 0, 0); >> ret = dell_send_request(&buffer, CLASS_INFO, SELECT_RFKILL); >> > > The other alternative is to just define the input of the structure immediately with > an initializer, no multi argument filler function. Like this: Either would work for me, though one comment below. > - struct calling_interface_buffer buffer; > + struct calling_interface_buffer buffer = {CLASS_INFO, > + SELECT_RFKILL, > + {0, 0, 0, 0}, > + {0, 0, 0, 0}}; Looking to this approach I would rather provide a macro then. #define FILL_REQUEST(a,b,c,d,...) \ // variant FILL_RFKILL_REQUEST(a,b,c,d) (struct calling_interface_buffer) { \ ... \ } But then it is macro(s) vs. function(s) debate. > - dell_set_arguments(&buffer, 0, 0, 0, 0); > - ret = dell_send_request(&buffer, CLASS_INFO, SELECT_RFKILL); > + ret = dell_send_request(&buffer);
On Wednesday 31 January 2018 18:53:19 Andy Shevchenko wrote: > On Wed, Jan 31, 2018 at 6:46 PM, <Mario.Limonciello@dell.com> wrote: > > >> > for allocation: ..._alloc_request() > >> > for filling: _fill_request() / _prepare_request() > >> > > >> > or alike. > >> > > >> > _set_arguments() not good enough to me. > >> > >> Ok. Then we need to stick with 5 arguments... What about name > >> dell_fill_request()? E.g. > >> > >> struct calling_interface_buffer buffer; > >> dell_fill_request(&buffer, 0x2, 0, 0, 0); > >> ret = dell_send_request(&buffer, CLASS_INFO, SELECT_RFKILL); > >> > > > > The other alternative is to just define the input of the structure immediately with > > an initializer, no multi argument filler function. Like this: > > Either would work for me, though one comment below. > > > - struct calling_interface_buffer buffer; > > > > + struct calling_interface_buffer buffer = {CLASS_INFO, > > + SELECT_RFKILL, > > + {0, 0, 0, 0}, > > + {0, 0, 0, 0}}; > > Looking to this approach I would rather provide a macro then. > > #define FILL_REQUEST(a,b,c,d,...) \ // variant FILL_RFKILL_REQUEST(a,b,c,d) > (struct calling_interface_buffer) { \ > ... \ > } > > But then it is macro(s) vs. function(s) debate. Does not matter, I'm fine with either macro or function. > > > - dell_set_arguments(&buffer, 0, 0, 0, 0); > > - ret = dell_send_request(&buffer, CLASS_INFO, SELECT_RFKILL); > > + ret = dell_send_request(&buffer); >
On Wed, Jan 31, 2018 at 7:06 PM, Pali Rohár <pali.rohar@gmail.com> wrote: > On Wednesday 31 January 2018 18:53:19 Andy Shevchenko wrote: >> On Wed, Jan 31, 2018 at 6:46 PM, <Mario.Limonciello@dell.com> wrote: >> >> Ok. Then we need to stick with 5 arguments... What about name >> >> dell_fill_request()? E.g. >> > + struct calling_interface_buffer buffer = {CLASS_INFO, >> > + SELECT_RFKILL, >> > + {0, 0, 0, 0}, >> > + {0, 0, 0, 0}}; >> >> Looking to this approach I would rather provide a macro then. >> >> #define FILL_REQUEST(a,b,c,d,...) \ // variant FILL_RFKILL_REQUEST(a,b,c,d) >> (struct calling_interface_buffer) { \ >> ... \ >> } >> >> But then it is macro(s) vs. function(s) debate. > > Does not matter, I'm fine with either macro or function. Mario, it's now up to you. Choose one of the option and send new version. Thanks!
diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c index ab58373..e7a971b 100644 --- a/drivers/platform/x86/dell-laptop.c +++ b/drivers/platform/x86/dell-laptop.c @@ -469,13 +469,15 @@ static int dell_rfkill_set(void *data, bool blocked) int disable = blocked ? 1 : 0; unsigned long radio = (unsigned long)data; int hwswitch_bit = (unsigned long)data - 1; - struct calling_interface_buffer buffer; + struct calling_interface_buffer buffer = {CLASS_INFO, + SELECT_RFKILL, + {0, 0, 0, 0}, + {0, 0, 0, 0}}; int hwswitch; int status; int ret; - dell_set_arguments(&buffer, 0, 0, 0, 0); - ret = dell_send_request(&buffer, CLASS_INFO, SELECT_RFKILL); + ret = dell_send_request(&buffer); if (ret) return ret; status = buffer.output[1];