2012/7/26 Oleksij Rempel <bug-tr...@fisher-privat.net>:
> Am 26.07.2012 08:50, schrieb Rafał Miłecki:
>> 2012/7/26 Oleksij Rempel <bug-tr...@fisher-privat.net>:
>>> Am 26.07.2012 08:10, schrieb Rafał Miłecki:
>>>> 2012/7/26 Gábor Stefanik <netrolller...@gmail.com>:
>>>>> On Thu, Jul 26, 2012 at 8:16 AM, Rafał Miłecki <zaj...@gmail.com> wrote:
>>>>>> First of all, use PHY names instead of magic numbers. It should make
>>>>>> configuring kernel easier in case of not enabled PHY type support.
>>>>>> Secondly, always print info about PHY. This is really basic info about
>>>>>> hardware and quite important for the support level.
>>>>>>
>>>>>> Signed-off-by: Rafał Miłecki <zaj...@gmail.com>
>>>>>> ---
>>>>>> V2: add new PHYTYPEs
>>>>>> V3: don't printk error in b43_phy_name, just return "UNKNOWN". We still
>>>>>>     can know PHY type thanks to change in caller, which prints both:
>>>>>>     %d and %s. Thanks Joe!
>>>>>> ---
>>>>>>  drivers/net/wireless/b43/b43.h  |    2 ++
>>>>>>  drivers/net/wireless/b43/main.c |   39 
>>>>>> ++++++++++++++++++++++++++++++++++-----
>>>>>>  2 files changed, 36 insertions(+), 5 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/net/wireless/b43/b43.h 
>>>>>> b/drivers/net/wireless/b43/b43.h
>>>>>> index 7c899fc..b0c7f47 100644
>>>>>> --- a/drivers/net/wireless/b43/b43.h
>>>>>> +++ b/drivers/net/wireless/b43/b43.h
>>>>>> @@ -415,6 +415,8 @@ enum {
>>>>>>  #define B43_PHYTYPE_HT                 0x07
>>>>>>  #define B43_PHYTYPE_LCN                        0x08
>>>>>>  #define B43_PHYTYPE_LCNXN              0x09
>>>>>> +#define B43_PHYTYPE_LCN40              0x0a
>>>>>> +#define B43_PHYTYPE_AC                 0x0b
>>>>>>
>>>>>>  /* PHYRegisters */
>>>>>>  #define B43_PHY_ILT_A_CTRL             0x0072
>>>>>> diff --git a/drivers/net/wireless/b43/main.c 
>>>>>> b/drivers/net/wireless/b43/main.c
>>>>>> index b80352b..a8f812b 100644
>>>>>> --- a/drivers/net/wireless/b43/main.c
>>>>>> +++ b/drivers/net/wireless/b43/main.c
>>>>>> @@ -4277,6 +4277,35 @@ out:
>>>>>>         return err;
>>>>>>  }
>>>>>>
>>>>>> +static char *b43_phy_name(struct b43_wldev *dev, u8 phy_type)
>>>>>> +{
>>>>>> +       switch (phy_type) {
>>>>>> +       case B43_PHYTYPE_A:
>>>>>> +               return "A";
>>>>>> +       case B43_PHYTYPE_B:
>>>>>> +               return "B";
>>>>>> +       case B43_PHYTYPE_G:
>>>>>> +               return "G";
>>>>>> +       case B43_PHYTYPE_N:
>>>>>> +               return "N";
>>>>>> +       case B43_PHYTYPE_LP:
>>>>>> +               return "LP";
>>>>>> +       case B43_PHYTYPE_SSLPN:
>>>>>> +               return "SSLPN";
>>>>>> +       case B43_PHYTYPE_HT:
>>>>>> +               return "HT";
>>>>>> +       case B43_PHYTYPE_LCN:
>>>>>> +               return "LCN";
>>>>>> +       case B43_PHYTYPE_LCNXN:
>>>>>> +               return "LCNXN";
>>>>>> +       case B43_PHYTYPE_LCN40:
>>>>>> +               return "LCN40";
>>>>>> +       case B43_PHYTYPE_AC:
>>>>>> +               return "AC";
>>>>>> +       }
>>>>>> +       return "UNKNOWN";
>>>>>
>>>>> How about putting the PHY type ID into the string in the Unknown case?
>>>>> Or will it be printed somewhere else?
>>>>
>>>> Hm, maybe I don't see something obvious. How would you do that? Using
>>>> which function?
>>>>
>>>
>>> No need to, it is done here:
>>> b43info(dev->wl, "Found PHY: Analog %u, Type %d (%s), Revision %u\n",
>>>         analog_type, phy_type, b43_phy_name(dev, phy_type), phy_rev);
>>
>> Still, at least for my curiosity, is there a way to achieve what Gabor
>> suggested? Can we return dynamically-filled string in a function?
>>
>
> int sprintf(char *str, const char *format, ...);
> int snprintf(char *str, size_t size, const char *format, ...);

Yeah, but I can't use sprintf on locally-declared (inside function)
char array. Well, I can, but I can't result such an array.

So the solution is to declare char array in called, and pass that
array (and it's size) to the b43_phy_name.

Well, I really prefer Joe's solution implemented in V3 :)

-- 
Rafał

_______________________________________________
b43-dev mailing list
b43-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/b43-dev

Reply via email to