Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: remove single-byte netdev->dev_addr writes

Make the drivers which use single-byte netdev addresses
(netdev->addr_len == 1) use the appropriate address setting
helpers.

arcnet copies from int variables and io reads a lot, so
add a helper for arcnet drivers to use.

Similar helper could be reused for phonet and appletalk
but there isn't any good central location where we could
put it, and netdevice.h is already very crowded.

Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com> # for HSI
Link: https://lore.kernel.org/r/20211012142757.4124842-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+28 -15
+3 -1
drivers/hsi/clients/ssi_protocol.c
··· 1055 1055 1056 1056 static void ssip_pn_setup(struct net_device *dev) 1057 1057 { 1058 + static const u8 addr = PN_MEDIA_SOS; 1059 + 1058 1060 dev->features = 0; 1059 1061 dev->netdev_ops = &ssip_pn_ops; 1060 1062 dev->type = ARPHRD_PHONET; 1061 1063 dev->flags = IFF_POINTOPOINT | IFF_NOARP; 1062 1064 dev->mtu = SSIP_DEFAULT_MTU; 1063 1065 dev->hard_header_len = 1; 1064 - dev->dev_addr[0] = PN_MEDIA_SOS; 1065 1066 dev->addr_len = 1; 1067 + dev_addr_set(dev, &addr); 1066 1068 dev->tx_queue_len = SSIP_TXQUEUE_LEN; 1067 1069 1068 1070 dev->needs_free_netdev = true;
+1 -1
drivers/net/appletalk/cops.c
··· 945 945 dev->broadcast[0] = 0xFF; 946 946 947 947 /* Set hardware address. */ 948 - dev->dev_addr[0] = aa->s_node; 949 948 dev->addr_len = 1; 949 + dev_addr_set(dev, &aa->s_node); 950 950 return 0; 951 951 952 952 case SIOCGIFADDR:
+1 -2
drivers/net/appletalk/ltpc.c
··· 846 846 set_30 (dev,ltflags); 847 847 848 848 dev->broadcast[0] = 0xFF; 849 - dev->dev_addr[0] = aa->s_node; 850 - 851 849 dev->addr_len=1; 850 + dev_addr_set(dev, &aa->s_node); 852 851 853 852 return 0; 854 853
+3 -2
drivers/net/arcnet/arc-rimi.c
··· 207 207 } 208 208 209 209 /* get and check the station ID from offset 1 in shmem */ 210 - dev->dev_addr[0] = arcnet_readb(lp->mem_start, COM9026_REG_R_STATION); 210 + arcnet_set_addr(dev, arcnet_readb(lp->mem_start, 211 + COM9026_REG_R_STATION)); 211 212 212 213 arc_printk(D_NORMAL, dev, "ARCnet RIM I: station %02Xh found at IRQ %d, ShMem %lXh (%ld*%d bytes)\n", 213 214 dev->dev_addr[0], ··· 325 324 return -ENOMEM; 326 325 327 326 if (node && node != 0xff) 328 - dev->dev_addr[0] = node; 327 + arcnet_set_addr(dev, node); 329 328 330 329 dev->mem_start = io; 331 330 dev->irq = irq;
+5
drivers/net/arcnet/arcdevice.h
··· 364 364 struct net_device *dev); 365 365 void arcnet_timeout(struct net_device *dev, unsigned int txqueue); 366 366 367 + static inline void arcnet_set_addr(struct net_device *dev, u8 addr) 368 + { 369 + dev_addr_set(dev, &addr); 370 + } 371 + 367 372 /* I/O equivalents */ 368 373 369 374 #ifdef CONFIG_SA1100_CT6001
+1 -1
drivers/net/arcnet/com20020-isa.c
··· 151 151 return -ENOMEM; 152 152 153 153 if (node && node != 0xff) 154 - dev->dev_addr[0] = node; 154 + arcnet_set_addr(dev, node); 155 155 156 156 dev->netdev_ops = &com20020_netdev_ops; 157 157
+1 -1
drivers/net/arcnet/com20020-pci.c
··· 194 194 195 195 SET_NETDEV_DEV(dev, &pdev->dev); 196 196 dev->base_addr = ioaddr; 197 - dev->dev_addr[0] = node; 197 + arcnet_set_addr(dev, node); 198 198 dev->sysfs_groups[0] = &com20020_state_group; 199 199 dev->irq = pdev->irq; 200 200 lp->card_name = "PCI COM20020";
+2 -2
drivers/net/arcnet/com20020.c
··· 157 157 struct arcnet_local *lp = netdev_priv(dev); 158 158 struct sockaddr *hwaddr = addr; 159 159 160 - memcpy(dev->dev_addr, hwaddr->sa_data, 1); 160 + dev_addr_set(dev, hwaddr->sa_data); 161 161 com20020_set_subaddress(lp, ioaddr, SUB_NODE); 162 162 arcnet_outb(dev->dev_addr[0], ioaddr, COM20020_REG_W_XREG); 163 163 ··· 220 220 221 221 /* FIXME: do this some other way! */ 222 222 if (!dev->dev_addr[0]) 223 - dev->dev_addr[0] = arcnet_inb(ioaddr, 8); 223 + arcnet_set_addr(dev, arcnet_inb(ioaddr, 8)); 224 224 225 225 com20020_set_subaddress(lp, ioaddr, SUB_SETUP1); 226 226 arcnet_outb(lp->setup, ioaddr, COM20020_REG_W_XREG);
+1 -1
drivers/net/arcnet/com20020_cs.c
··· 133 133 lp->hw.owner = THIS_MODULE; 134 134 135 135 /* fill in our module parameters as defaults */ 136 - dev->dev_addr[0] = node; 136 + arcnet_set_addr(dev, node); 137 137 138 138 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; 139 139 p_dev->resource[0]->end = 16;
+1 -1
drivers/net/arcnet/com90io.c
··· 252 252 253 253 /* get and check the station ID from offset 1 in shmem */ 254 254 255 - dev->dev_addr[0] = get_buffer_byte(dev, 1); 255 + arcnet_set_addr(dev, get_buffer_byte(dev, 1)); 256 256 257 257 err = register_netdev(dev); 258 258 if (err) {
+2 -1
drivers/net/arcnet/com90xx.c
··· 531 531 } 532 532 533 533 /* get and check the station ID from offset 1 in shmem */ 534 - dev->dev_addr[0] = arcnet_readb(lp->mem_start, COM9026_REG_R_STATION); 534 + arcnet_set_addr(dev, arcnet_readb(lp->mem_start, 535 + COM9026_REG_R_STATION)); 535 536 536 537 dev->base_addr = ioaddr; 537 538
+3 -1
drivers/net/usb/cdc-phonet.c
··· 275 275 276 276 static void usbpn_setup(struct net_device *dev) 277 277 { 278 + const u8 addr = PN_MEDIA_USB; 279 + 278 280 dev->features = 0; 279 281 dev->netdev_ops = &usbpn_ops; 280 282 dev->header_ops = &phonet_header_ops; ··· 286 284 dev->min_mtu = PHONET_MIN_MTU; 287 285 dev->max_mtu = PHONET_MAX_MTU; 288 286 dev->hard_header_len = 1; 289 - dev->dev_addr[0] = PN_MEDIA_USB; 290 287 dev->addr_len = 1; 288 + dev_addr_set(dev, &addr); 291 289 dev->tx_queue_len = 3; 292 290 293 291 dev->needs_free_netdev = true;
+4 -1
drivers/usb/gadget/function/f_phonet.c
··· 267 267 268 268 static void pn_net_setup(struct net_device *dev) 269 269 { 270 + const u8 addr = PN_MEDIA_USB; 271 + 270 272 dev->features = 0; 271 273 dev->type = ARPHRD_PHONET; 272 274 dev->flags = IFF_POINTOPOINT | IFF_NOARP; ··· 276 274 dev->min_mtu = PHONET_MIN_MTU; 277 275 dev->max_mtu = PHONET_MAX_MTU; 278 276 dev->hard_header_len = 1; 279 - dev->dev_addr[0] = PN_MEDIA_USB; 280 277 dev->addr_len = 1; 278 + dev_addr_set(dev, &addr); 279 + 281 280 dev->tx_queue_len = 1; 282 281 283 282 dev->netdev_ops = &pn_netdev_ops;