On 10 May 2018 00:55:01 CEST, kbuild test robot <lkp@xxxxxxxxx> 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