Joe Perches
2018-Mar-31 07:05 UTC
[Bridge] [PATCH 00/12] Ethernet: Add and use ether_<type>_addr globals
There are many local static and non-static arrays that are used for Ethernet broadcast address output or comparison. Centralize the array into a single separate file and remove the local arrays. Joe Perches (12): ethernet: Add generic ether_<foo>_addr addresses treewide/net: Rename eth_stp_addr to ether_stp_addr net: mac80211: Use global ether_broadcast_addr bridge: netfilter: Use the new global ether_<foo>_addr arrays net: atm: Use ether_broadcast_addr wireless: Convert simple uses of a static const Ethernet broadcast address brcmfmac: Convert ALLFFMAC to ether_broadcast_addr iwlegacy: Remove EXPORT_SYMBOL(il_bcast_addr) and use ether_broadcast_addr iwlwifi: Remove local iwl_bcast_addr and use ether_broadcast_addr mvpp2: Use ether_broadcast_addr instead of a local array qlogic: Convert local bcast_addr to global ether_broadcast_addr ethernet: Use ether_zero_addr instead of local statics drivers/net/dsa/lan9303-core.c | 4 ++-- drivers/net/ethernet/broadcom/b44.c | 5 ++--- drivers/net/ethernet/freescale/gianfar.c | 3 +-- drivers/net/ethernet/marvell/mvpp2.c | 4 +--- drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c | 5 +---- drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c | 6 ++---- .../net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 6 ++---- drivers/net/wireless/admtek/adm8211.c | 3 +-- drivers/net/wireless/ath/carl9170/mac.c | 4 +--- drivers/net/wireless/broadcom/b43/main.c | 3 +-- .../net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 -- .../net/wireless/broadcom/brcm80211/brcmfmac/common.h | 2 -- .../wireless/broadcom/brcm80211/brcmfmac/flowring.c | 8 ++++---- drivers/net/wireless/intel/iwlegacy/3945-mac.c | 2 +- drivers/net/wireless/intel/iwlegacy/4965-mac.c | 2 +- drivers/net/wireless/intel/iwlegacy/common.c | 3 --- drivers/net/wireless/intel/iwlegacy/common.h | 1 - drivers/net/wireless/intel/iwlwifi/dvm/dev.h | 1 - drivers/net/wireless/intel/iwlwifi/dvm/scan.c | 2 +- drivers/net/wireless/intel/iwlwifi/dvm/sta.c | 4 +--- drivers/net/wireless/marvell/mwifiex/cfg80211.c | 3 +-- drivers/net/wireless/realtek/rtlwifi/core.c | 5 ++--- drivers/net/wireless/rndis_wlan.c | 6 +----- drivers/net/wireless/ti/wl1251/main.c | 5 +---- drivers/net/wireless/ti/wlcore/main.c | 5 +---- include/linux/etherdevice.h | 13 +++++++++---- net/atm/lec.c | 12 +++++------- net/bridge/br_device.c | 4 ++-- net/bridge/netfilter/ebt_stp.c | 6 ++---- net/ethernet/Makefile | 2 +- net/ethernet/ether_addrs.c | 19 +++++++++++++++++++ net/mac80211/iface.c | 5 +---- net/mac80211/key.c | 6 ++---- net/mac80211/mesh_hwmp.c | 19 ++++++++++--------- net/mac80211/mesh_pathtbl.c | 8 ++++---- 35 files changed, 83 insertions(+), 105 deletions(-) create mode 100644 net/ethernet/ether_addrs.c -- 2.15.0
Joe Perches
2018-Mar-31 07:05 UTC
[Bridge] [PATCH 02/12] treewide/net: Rename eth_stp_addr to ether_stp_addr
eth_stp_addr is not in the same form as the other global ether_<foo>_addr addresses like ether_broadcast_addr. Convert it treewide. Miscellanea: o Add comment to the ether_stp_addr define to show it's for spanning-tree Signed-off-by: Joe Perches <joe at perches.com> --- drivers/net/dsa/lan9303-core.c | 4 ++-- include/linux/etherdevice.h | 3 ++- net/bridge/br_device.c | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/net/dsa/lan9303-core.c b/drivers/net/dsa/lan9303-core.c index fefa454f3e56..a6f015ef251a 100644 --- a/drivers/net/dsa/lan9303-core.c +++ b/drivers/net/dsa/lan9303-core.c @@ -789,7 +789,7 @@ static int lan9303_separate_ports(struct lan9303 *chip) { int ret; - lan9303_alr_del_port(chip, eth_stp_addr, 0); + lan9303_alr_del_port(chip, ether_stp_addr, 0); ret = lan9303_write_switch_reg(chip, LAN9303_SWE_PORT_MIRROR, LAN9303_SWE_PORT_MIRROR_SNIFFER_PORT0 | LAN9303_SWE_PORT_MIRROR_MIRRORED_PORT1 | @@ -814,7 +814,7 @@ static void lan9303_bridge_ports(struct lan9303 *chip) lan9303_write_switch_reg(chip, LAN9303_SWE_PORT_STATE, chip->swe_port_state); - lan9303_alr_add_port(chip, eth_stp_addr, 0, true); + lan9303_alr_add_port(chip, ether_stp_addr, 0, true); } static void lan9303_handle_reset(struct lan9303 *chip) diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 85d2486b2959..142da8043b24 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -70,7 +70,8 @@ extern const u8 ether_zero_addr[ETH_ALEN]; /* all zeros */ /* Reserved Ethernet Addresses per IEEE 802.1Q */ extern const u8 ether_reserved_addr_base[ETH_ALEN]; -#define eth_stp_addr ether_reserved_addr_base +/* Ethernet bridge - spanning tree protocol */ +#define ether_stp_addr ether_reserved_addr_base /** * is_link_local_ether_addr - Determine if given Ethernet address is link-local diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index 278fc999d355..3abcf69d1976 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -1,4 +1,4 @@ -/* +gg/* * Device handling code * Linux ethernet bridge * @@ -431,7 +431,7 @@ void br_dev_setup(struct net_device *dev) br->bridge_id.prio[0] = 0x80; br->bridge_id.prio[1] = 0x00; - ether_addr_copy(br->group_addr, eth_stp_addr); + ether_addr_copy(br->group_addr, ether_stp_addr); br->stp_enabled = BR_NO_STP; br->group_fwd_mask = BR_GROUPFWD_DEFAULT; -- 2.15.0
Joe Perches
2018-Mar-31 07:05 UTC
[Bridge] [PATCH 04/12] bridge: netfilter: Use the new global ether_<foo>_addr arrays
Remove the local consts and use the new globals. Signed-off-by: Joe Perches <joe at perches.com> --- net/bridge/netfilter/ebt_stp.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/bridge/netfilter/ebt_stp.c b/net/bridge/netfilter/ebt_stp.c index 3140eb912d7e..2b7479cc0140 100644 --- a/net/bridge/netfilter/ebt_stp.c +++ b/net/bridge/netfilter/ebt_stp.c @@ -153,8 +153,6 @@ ebt_stp_mt(const struct sk_buff *skb, struct xt_action_param *par) static int ebt_stp_mt_check(const struct xt_mtchk_param *par) { const struct ebt_stp_info *info = par->matchinfo; - const u8 bridge_ula[6] = {0x01, 0x80, 0xc2, 0x00, 0x00, 0x00}; - const u8 msk[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; const struct ebt_entry *e = par->entryinfo; if (info->bitmask & ~EBT_STP_MASK || info->invflags & ~EBT_STP_MASK || @@ -162,8 +160,8 @@ static int ebt_stp_mt_check(const struct xt_mtchk_param *par) return -EINVAL; /* Make sure the match only receives stp frames */ if (!par->nft_compat && - (!ether_addr_equal(e->destmac, bridge_ula) || - !ether_addr_equal(e->destmsk, msk) || + (!ether_addr_equal(e->destmac, ether_stp_addr) || + !ether_addr_equal(e->destmsk, ether_broadcast_addr) || !(e->bitmask & EBT_DESTMAC))) return -EINVAL; -- 2.15.0
Felix Fietkau
2018-Apr-05 13:27 UTC
[Bridge] [PATCH 00/12] Ethernet: Add and use ether_<type>_addr globals
On 2018-03-31 09:05, Joe Perches wrote:> There are many local static and non-static arrays that are used for > Ethernet broadcast address output or comparison. > > Centralize the array into a single separate file and remove the local > arrays.I suspect that for many targets and configurations, the local arrays might actually be smaller than exporting a global. You have to factor in not just the .text size, but the fact that referencing an exported symbol needs a .reloc entry as well, which also eats up some space (at least when the code is being built as module). In my opinion, your series probably causes more bloat in common configurations instead of reducing it. You're also touching several places that could easily use eth_broadcast_addr and eth_zero_addr. I think making those changes would be more productive than what you did in this series. - Felix