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));
                       ^
                       ->

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

Attachment: .config.gz
Description: application/gzip

Reply via email to