On Fri, Nov 22, 2024 at 04:21:43PM +0800, Zong-Zhe Yang wrote: > When MLD, wpa_driver_nl80211_set_supp_port() gets > `nl80211: Failed to set STA flag: -22 (Invalid argument)` > due to imprecise netlink attributes. Would you be able to share a debug log showing that? I was unable to reproduce that in my testing. > For MLD, NL80211_ATTR_MLO_LINK_ID is required. Otherwise, > sta_link_apply_parameters() cannot get the target link. That sounds wrong since Authorization status is at MLD level and mixing this with link ID would seem to imply this is being done at a different level, but it is possible that there are some inconvenient constraints in how NL80211_CMD_SET_STATION might need to be used. > Additionally, for MLD, NL80211_ATTR_MAC describes "link" address. > And, NL80211_ATTR_MLD_ADDR describes MLD address. Adding NL80211_ATTR_MLD_ADDR would seem reasonable, but that need for link specific information needs to be documented more clearly since this function is for an MLD level operation and specifying a link ID here is quite confusing. > diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c > @@ -7730,6 +7732,16 @@ static int wpa_driver_nl80211_set_supp_port(void *priv, int authorized) > + if (!mld) > + goto send; > + > + if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, mld->assoc_link_id) || > + nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN, mld->ap_mld_addr)) { > + nlmsg_free(msg); > + return -ENOBUFS; > + } > + > +send: > ret = send_and_recv_cmd(drv, msg); That would look nicer if the unnecessary goto were removed: if (mld && (nla_put_u8(...) || nla_put(...)) { ... } -- Jouni Malinen PGP id EFC895FA _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap