Skip to contentSkip to conversation

mac80211: use eth_hw_addr_set()

PATCH In review Jakub Kicinski 2 participants 5 messages Oct 19, 2021

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 mac80211: use eth_hw_addr_set()

Commit 406f42fa0d3c ("net-next: When a bond have a massive amount of VLANs...") introduced a rbtree for faster Ethernet address look up. To maintain netdev->dev_addr in this tree we need to make all the writes to it got through appropriate helpers.

Convert mac80211 from memcpy(... ETH_ADDR) to eth_hw_addr_set():

@@
expression dev, np;
@@
- memcpy(dev->dev_addr, np, ETH_ALEN)
+ eth_hw_addr_set(dev, np)

---
 net/mac80211/iface.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
net/mac80211/iface.c +3 -5
index 62c95597704b..878b919f22bb 100644
@@ -1108,9 +1108,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
 	 * this interface, if it has the special null one.
 	 */
 	if (dev && is_zero_ether_addr(dev->dev_addr)) {
-		memcpy(dev->dev_addr,
-		       local->hw.wiphy->perm_addr,
-		       ETH_ALEN);
+		eth_hw_addr_set(dev, local->hw.wiphy->perm_addr);
 		memcpy(dev->perm_addr, dev->dev_addr, ETH_ALEN);
 
 		if (!is_valid_ether_addr(dev->dev_addr)) {
@@ -1964,9 +1962,9 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 
 		ieee80211_assign_perm_addr(local, ndev->perm_addr, type);
 		if (is_valid_ether_addr(params->macaddr))
-			memcpy(ndev->dev_addr, params->macaddr, ETH_ALEN);
+			eth_hw_addr_set(ndev, params->macaddr);
 		else
-			memcpy(ndev->dev_addr, ndev->perm_addr, ETH_ALEN);
+			eth_hw_addr_set(ndev, ndev->perm_addr);
 		SET_NETDEV_DEV(ndev, wiphy_dev(local->hw.wiphy));
 
 		/* don't use IEEE80211_DEV_TO_SUB_IF -- it checks too much */
Signature · 1 line
2.31.1
#1 lore raw

PATCH 2/2 cfg80211: prepare for const netdev->dev_addr

netdev->dev_addr will be const soon.
All callers of wdev_address() can take const already.

---
CC: [email protected]
CC: [email protected]

---
 include/net/cfg80211.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
include/net/cfg80211.h +1 -1
index 62dd8422e0dc..61c87d8e7f2a 100644
@@ -5492,7 +5492,7 @@ struct wireless_dev {
 	unsigned long unprot_beacon_reported;
 };
 
-static inline u8 *wdev_address(struct wireless_dev *wdev)
+static inline const u8 *wdev_address(struct wireless_dev *wdev)
 {
 	if (wdev->netdev)
 		return wdev->netdev->dev_addr;
Signature · 1 line
2.31.1
maintainer
#2 lore raw
In reply to Jakub Kicinski
Quoted 5 lines · Jakub Kicinski

Commit 406f42fa0d3c ("net-next: When a bond have a massive amount of VLANs...") introduced a rbtree for faster Ethernet address look up. To maintain netdev->dev_addr in this tree we need to make all the writes to it got through appropriate helpers.

Looks fine. Do you expect me to apply this (and if so where), or will you?

johannes

#3 lore raw
Quoted 8 lines · On Tue, 19 Oct 2021 19:53:01 +0200 Johannes Berg wrote:
Quoted 5 lines · Jakub Kicinski

Commit 406f42fa0d3c ("net-next: When a bond have a massive amount of VLANs...") introduced a rbtree for faster Ethernet address look up. To maintain netdev->dev_addr in this tree we need to make all the writes to it got through appropriate helpers.

Looks fine. Do you expect me to apply this (and if so where), or will you?

I was expecting you to take these, there will be another -next PR before the merge window, right?

maintainer
#4 lore raw
Quoted 8 lines · Jakub Kicinski
Quoted 7 lines · On Tue, 19 Oct 2021 19:53:01 +0200 Johannes Berg wrote:
Quoted 6 lines · Jakub Kicinski

Commit 406f42fa0d3c ("net-next: When a bond have a massive amount of VLANs...") introduced a rbtree for faster Ethernet address look up. To maintain netdev->dev_addr in this tree we need to make all the writes to it got through appropriate helpers.

Quoted 6 lines
Quoted 2 lines

Looks fine. Do you expect me to apply this (and if so where), or will you?

I was expecting you to take these, there will be another -next PR before the merge window, right?

Yeah, I should have one.

johannes