On 10 May 2018 00:55:01 CEST, kbuild test robot <l...@intel.com> wrote:
>Hi Toke,
>
>Thank you for the patch! Yet something to improve:
>
>[auto build test ERROR on wireless-drivers-next/master]
>[also build test ERROR on v4.17-rc4 next-20180509]
>[if your patch is applied to the wrong git tree, please drop us a note
>to help improve the system]
>
>url:   
>https://github.com/0day-ci/linux/commits/Toke-H-iland-J-rgensen/wireless-drivers-Dynamically-allocate-struct-station_info/20180510-034416
>base:  
>https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
>master
>config: i386-randconfig-x000-201818 (attached as .config)
>compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
>reproduce:
>        # save the attached .config to linux build tree
>        make ARCH=i386 
>
>All errors (new ones prefixed by >>):
>
> net/batman-adv/bat_v_elp.c: In function 'batadv_v_elp_get_throughput':
>>> net/batman-adv/bat_v_elp.c:113:21: error: 'sinfo' is a pointer; did
>you mean to use '->'?
>      throughput = sinfo.expected_throughput / 100;
>                        ^
>                        ->
>net/batman-adv/bat_v_elp.c:114:20: error: 'sinfo' is a pointer; did you
>mean to use '->'?
> filled = !!(sinfo.filled & BIT(NL80211_STA_INFO_EXPECTED_THROUGHPUT));
>                       ^
>                       ->

Huh, I could swear I compile tested this. Will send another version tomorrow, 
sorry about that :/

-Toke

>
>vim +113 net/batman-adv/bat_v_elp.c
>
>    69 
>    70 /**
>71      * batadv_v_elp_get_throughput() - get the throughput towards a
>neighbour
>72      * @neigh: the neighbour for which the throughput has to be obtained
>    73  *
>74      * Return: The throughput towards the given neighbour in multiples
>of 100kpbs
>75      *         (a value of '1' equals to 0.1Mbps, '10' equals 1Mbps,
>etc).
>    76  */
>77     static u32 batadv_v_elp_get_throughput(struct
>batadv_hardif_neigh_node *neigh)
>    78 {
>    79         struct batadv_hard_iface *hard_iface = neigh->if_incoming;
>    80         struct ethtool_link_ksettings link_settings;
>    81         struct net_device *real_netdev;
>    82         struct station_info *sinfo;
>    83         u32 throughput;
>    84         bool filled;
>    85         int ret;
>    86 
>87             /* if the user specified a customised value for this interface,
>then
>    88          * return it directly
>    89          */
> 90            throughput =  
> atomic_read(&hard_iface->bat_v.throughput_override);
>    91         if (throughput != 0)
>    92                 return throughput;
>    93 
>   94          /* if this is a wireless device, then ask its throughput through
>    95          * cfg80211 API
>    96          */
>    97         if (batadv_is_wifi_hardif(hard_iface)) {
>    98                 if (!batadv_is_cfg80211_hardif(hard_iface))
>    99                         /* unsupported WiFi driver version */
>   100                         goto default_throughput;
>   101 
>   102                 real_netdev = 
> batadv_get_real_netdev(hard_iface->net_dev);
>   103                 if (!real_netdev)
>   104                         goto default_throughput;
>   105 
>   106                 sinfo = kzalloc(sizeof(*sinfo), GFP_KERNEL);
>   107                 if (!sinfo)
>   108                         goto default_throughput;
>   109 
>   110                 ret = cfg80211_get_station(real_netdev, neigh->addr, 
> sinfo);
>   111 
>112                    /* just save these here instead of having complex free 
>logic
>below */
> > 113                 throughput = sinfo.expected_throughput / 100;
>114                    filled = !!(sinfo.filled &
>BIT(NL80211_STA_INFO_EXPECTED_THROUGHPUT));
>   115 
>   116                 kfree(sinfo);
>   117 
>   118                 dev_put(real_netdev);
>   119                 if (ret == -ENOENT) {
>   120                         /* Node is not associated anymore! It would be
>   121                          * possible to delete this neighbor. For now set
>   122                          * the throughput metric to 0.
>   123                          */
>   124                         return 0;
>   125                 }
>   126                 if (ret || !filled)
>   127                         goto default_throughput;
>   128 
>   129                 return throughput;
>   130         }
>   131 
>132            /* if not a wifi interface, check if this device provides data 
>via
>   133          * ethtool (e.g. an Ethernet adapter)
>   134          */
>   135         memset(&link_settings, 0, sizeof(link_settings));
>   136         rtnl_lock();
>137            ret = __ethtool_get_link_ksettings(hard_iface->net_dev,
>&link_settings);
>   138         rtnl_unlock();
>   139         if (ret == 0) {
>   140                 /* link characteristics might change over time */
>   141                 if (link_settings.base.duplex == DUPLEX_FULL)
>   142                         hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX;
>   143                 else
>   144                         hard_iface->bat_v.flags &= ~BATADV_FULL_DUPLEX;
>   145 
>   146                 throughput = link_settings.base.speed;
>   147                 if (throughput && throughput != SPEED_UNKNOWN)
>   148                         return throughput * 10;
>   149         }
>   150 
>   151 default_throughput:
>   152         if (!(hard_iface->bat_v.flags & BATADV_WARNING_DEFAULT)) {
>   153                 batadv_info(hard_iface->soft_iface,
>154                                "WiFi driver or ethtool info does not 
>provide information
>about link speeds on interface %s, therefore defaulting to hardcoded
>throughput values of %u.%1u Mbps. Consider overriding the throughput
>manually or checking your driver.\n",
>   155                             hard_iface->net_dev->name,
>   156                             BATADV_THROUGHPUT_DEFAULT_VALUE / 10,
>   157                             BATADV_THROUGHPUT_DEFAULT_VALUE % 10);
>   158                 hard_iface->bat_v.flags |= BATADV_WARNING_DEFAULT;
>   159         }
>   160 
>161            /* if none of the above cases apply, return the base_throughput 
>*/
>   162         return BATADV_THROUGHPUT_DEFAULT_VALUE;
>   163 }
>   164 
>
>---
>0-DAY kernel test infrastructure                Open Source Technology
>Center
>https://lists.01.org/pipermail/kbuild-all                   Intel
>Corporation

Reply via email to