Message ID | 20240812120909.2721400-1-root@hissam.office.simonwunderlich.net |
---|---|
State | New |
Headers | show |
Series | cfg80211: Set the channel definition for the different Wi-Fi modes when starting CAC | expand |
Hi root, kernel test robot noticed the following build warnings: [auto build test WARNING on wireless-next/main] [also build test WARNING on wireless/main linus/master v6.11-rc3 next-20240812] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/root/cfg80211-Set-the-channel-definition-for-the-different-Wi-Fi-modes-when-starting-CAC/20240812-202257 base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main patch link: https://lore.kernel.org/r/20240812120909.2721400-1-root%40hissam.office.simonwunderlich.net patch subject: [PATCH] cfg80211: Set the channel definition for the different Wi-Fi modes when starting CAC config: arm-u8500_defconfig (https://download.01.org/0day-ci/archive/20240813/202408130125.u2jlMVQM-lkp@intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240813/202408130125.u2jlMVQM-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202408130125.u2jlMVQM-lkp@intel.com/ All warnings (new ones prefixed by >>): net/wireless/nl80211.c: In function 'nl80211_start_radar_detection': >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_UNSPECIFIED' not handled in switch [-Wswitch] 10146 | switch (wdev->iftype) { | ^~~~~~ >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_STATION' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_AP_VLAN' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_WDS' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_MONITOR' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_P2P_CLIENT' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_P2P_DEVICE' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_NAN' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NUM_NL80211_IFTYPES' not handled in switch [-Wswitch] >> net/wireless/nl80211.c:10146:17: warning: enumeration value 'NL80211_IFTYPE_MAX' not handled in switch [-Wswitch] vim +/NL80211_IFTYPE_UNSPECIFIED +10146 net/wireless/nl80211.c 10068 10069 static int nl80211_start_radar_detection(struct sk_buff *skb, 10070 struct genl_info *info) 10071 { 10072 struct cfg80211_registered_device *rdev = info->user_ptr[0]; 10073 struct net_device *dev = info->user_ptr[1]; 10074 struct wireless_dev *wdev = dev->ieee80211_ptr; 10075 struct wiphy *wiphy = wdev->wiphy; 10076 struct cfg80211_chan_def chandef; 10077 enum nl80211_dfs_regions dfs_region; 10078 unsigned int cac_time_ms; 10079 int err = -EINVAL; 10080 10081 flush_delayed_work(&rdev->dfs_update_channels_wk); 10082 10083 switch (wdev->iftype) { 10084 case NL80211_IFTYPE_AP: 10085 case NL80211_IFTYPE_P2P_GO: 10086 case NL80211_IFTYPE_MESH_POINT: 10087 case NL80211_IFTYPE_ADHOC: 10088 break; 10089 default: 10090 /* caution - see cfg80211_beaconing_iface_active() below */ 10091 return -EINVAL; 10092 } 10093 10094 wiphy_lock(wiphy); 10095 10096 dfs_region = reg_get_dfs_region(wiphy); 10097 if (dfs_region == NL80211_DFS_UNSET) 10098 goto unlock; 10099 10100 err = nl80211_parse_chandef(rdev, info, &chandef); 10101 if (err) 10102 goto unlock; 10103 10104 err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype); 10105 if (err < 0) 10106 goto unlock; 10107 10108 if (err == 0) { 10109 err = -EINVAL; 10110 goto unlock; 10111 } 10112 10113 if (!cfg80211_chandef_dfs_usable(wiphy, &chandef)) { 10114 err = -EINVAL; 10115 goto unlock; 10116 } 10117 10118 if (nla_get_flag(info->attrs[NL80211_ATTR_RADAR_BACKGROUND])) { 10119 err = cfg80211_start_background_radar_detection(rdev, wdev, 10120 &chandef); 10121 goto unlock; 10122 } 10123 10124 if (cfg80211_beaconing_iface_active(wdev) || wdev->cac_started) { 10125 err = -EBUSY; 10126 goto unlock; 10127 } 10128 10129 /* CAC start is offloaded to HW and can't be started manually */ 10130 if (wiphy_ext_feature_isset(wiphy, NL80211_EXT_FEATURE_DFS_OFFLOAD)) { 10131 err = -EOPNOTSUPP; 10132 goto unlock; 10133 } 10134 10135 if (!rdev->ops->start_radar_detection) { 10136 err = -EOPNOTSUPP; 10137 goto unlock; 10138 } 10139 10140 cac_time_ms = cfg80211_chandef_dfs_cac_time(&rdev->wiphy, &chandef); 10141 if (WARN_ON(!cac_time_ms)) 10142 cac_time_ms = IEEE80211_DFS_MIN_CAC_TIME_MS; 10143 10144 err = rdev_start_radar_detection(rdev, dev, &chandef, cac_time_ms); 10145 if (!err) { 10146 switch (wdev->iftype) { 10147 case NL80211_IFTYPE_MESH_POINT: 10148 wdev->u.mesh.chandef = chandef; 10149 break; 10150 case NL80211_IFTYPE_ADHOC: 10151 wdev->u.ibss.chandef = chandef; 10152 break; 10153 case NL80211_IFTYPE_OCB: 10154 wdev->u.ocb.chandef = chandef; 10155 break; 10156 case NL80211_IFTYPE_AP: 10157 case NL80211_IFTYPE_P2P_GO: 10158 wdev->links[0].ap.chandef = chandef; 10159 break; 10160 } 10161 wdev->cac_started = true; 10162 wdev->cac_start_time = jiffies; 10163 wdev->cac_time_ms = cac_time_ms; 10164 } 10165 unlock: 10166 wiphy_unlock(wiphy); 10167 10168 return err; 10169 } 10170
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 7397a372c78e..d200c365339a 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -10143,7 +10143,21 @@ static int nl80211_start_radar_detection(struct sk_buff *skb, err = rdev_start_radar_detection(rdev, dev, &chandef, cac_time_ms); if (!err) { - wdev->links[0].ap.chandef = chandef; + switch (wdev->iftype) { + case NL80211_IFTYPE_MESH_POINT: + wdev->u.mesh.chandef = chandef; + break; + case NL80211_IFTYPE_ADHOC: + wdev->u.ibss.chandef = chandef; + break; + case NL80211_IFTYPE_OCB: + wdev->u.ocb.chandef = chandef; + break; + case NL80211_IFTYPE_AP: + case NL80211_IFTYPE_P2P_GO: + wdev->links[0].ap.chandef = chandef; + break; + } wdev->cac_started = true; wdev->cac_start_time = jiffies; wdev->cac_time_ms = cac_time_ms;