net: remove single-byte netdev->dev_addr writes
authorJakub Kicinski <kuba@kernel.org>
Tue, 12 Oct 2021 14:27:57 +0000 (07:27 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 13 Oct 2021 17:03:59 +0000 (10:03 -0700)
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>
13 files changed:
drivers/hsi/clients/ssi_protocol.c
drivers/net/appletalk/cops.c
drivers/net/appletalk/ltpc.c
drivers/net/arcnet/arc-rimi.c
drivers/net/arcnet/arcdevice.h
drivers/net/arcnet/com20020-isa.c
drivers/net/arcnet/com20020-pci.c
drivers/net/arcnet/com20020.c
drivers/net/arcnet/com20020_cs.c
drivers/net/arcnet/com90io.c
drivers/net/arcnet/com90xx.c
drivers/net/usb/cdc-phonet.c
drivers/usb/gadget/function/f_phonet.c

index 96d0eccca3aa74a5871b386f5dc369735e58745b..21f11a5b965b11b97fcebbb384e42a9092927bbd 100644 (file)
@@ -1055,14 +1055,16 @@ static const struct net_device_ops ssip_pn_ops = {
 
 static void ssip_pn_setup(struct net_device *dev)
 {
+       static const u8 addr = PN_MEDIA_SOS;
+
        dev->features           = 0;
        dev->netdev_ops         = &ssip_pn_ops;
        dev->type               = ARPHRD_PHONET;
        dev->flags              = IFF_POINTOPOINT | IFF_NOARP;
        dev->mtu                = SSIP_DEFAULT_MTU;
        dev->hard_header_len    = 1;
-       dev->dev_addr[0]        = PN_MEDIA_SOS;
        dev->addr_len           = 1;
+       dev_addr_set(dev, &addr);
        dev->tx_queue_len       = SSIP_TXQUEUE_LEN;
 
        dev->needs_free_netdev  = true;
index f0695d68c47e662b4cc66ceaeeda732730f554e0..97f254bdbb16099dfea268c1f57115be068c50e9 100644 (file)
@@ -945,8 +945,8 @@ static int cops_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                         dev->broadcast[0]       = 0xFF;
                        
                        /* Set hardware address. */
-                        dev->dev_addr[0]        = aa->s_node;
                         dev->addr_len           = 1;
+                       dev_addr_set(dev, &aa->s_node);
                         return 0;
 
                 case SIOCGIFADDR:
index 1f8925e75b3fe337d41e3412dcae67184318b135..388d7b3bd4c234e62bf86207e18e365e80ffb912 100644 (file)
@@ -846,9 +846,8 @@ static int ltpc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                        set_30 (dev,ltflags);  
 
                        dev->broadcast[0] = 0xFF;
-                       dev->dev_addr[0] = aa->s_node;
-
                        dev->addr_len=1;
+                       dev_addr_set(dev, &aa->s_node);
    
                        return 0;
 
index 12d085405bd052c3621280d97bd3b92575466379..8c3ccc7c83cd3cd92e73c44ebd09a6fa8f8c0c41 100644 (file)
@@ -207,7 +207,8 @@ static int __init arcrimi_found(struct net_device *dev)
        }
 
        /* get and check the station ID from offset 1 in shmem */
-       dev->dev_addr[0] = arcnet_readb(lp->mem_start, COM9026_REG_R_STATION);
+       arcnet_set_addr(dev, arcnet_readb(lp->mem_start,
+                                         COM9026_REG_R_STATION));
 
        arc_printk(D_NORMAL, dev, "ARCnet RIM I: station %02Xh found at IRQ %d, ShMem %lXh (%ld*%d bytes)\n",
                   dev->dev_addr[0],
@@ -324,7 +325,7 @@ static int __init arc_rimi_init(void)
                return -ENOMEM;
 
        if (node && node != 0xff)
-               dev->dev_addr[0] = node;
+               arcnet_set_addr(dev, node);
 
        dev->mem_start = io;
        dev->irq = irq;
index 5d4a4c7efbbff3763193844e2052ca32dcb27490..19e996a829c9db8008e51becadc9acbc5b6e0832 100644 (file)
@@ -364,6 +364,11 @@ netdev_tx_t arcnet_send_packet(struct sk_buff *skb,
                               struct net_device *dev);
 void arcnet_timeout(struct net_device *dev, unsigned int txqueue);
 
+static inline void arcnet_set_addr(struct net_device *dev, u8 addr)
+{
+       dev_addr_set(dev, &addr);
+}
+
 /* I/O equivalents */
 
 #ifdef CONFIG_SA1100_CT6001
index be618e4b9ed5e0aa20f949ea23abf416ce5239b6..293a621e654ca91ee08fa02a410838a6fefc9a7d 100644 (file)
@@ -151,7 +151,7 @@ static int __init com20020_init(void)
                return -ENOMEM;
 
        if (node && node != 0xff)
-               dev->dev_addr[0] = node;
+               arcnet_set_addr(dev, node);
 
        dev->netdev_ops = &com20020_netdev_ops;
 
index 3c8f665c15580bcb4c0fcabe2a4c4c41369a59ef..6382e1937cca2e10b4c335bece56f8e84fe860bc 100644 (file)
@@ -194,7 +194,7 @@ static int com20020pci_probe(struct pci_dev *pdev,
 
                SET_NETDEV_DEV(dev, &pdev->dev);
                dev->base_addr = ioaddr;
-               dev->dev_addr[0] = node;
+               arcnet_set_addr(dev, node);
                dev->sysfs_groups[0] = &com20020_state_group;
                dev->irq = pdev->irq;
                lp->card_name = "PCI COM20020";
index 78043a9c5981e5a0b8d562879de0f77e0763aa75..06e1651b594ba813fc5a0d75931c12ec299c100a 100644 (file)
@@ -157,7 +157,7 @@ static int com20020_set_hwaddr(struct net_device *dev, void *addr)
        struct arcnet_local *lp = netdev_priv(dev);
        struct sockaddr *hwaddr = addr;
 
-       memcpy(dev->dev_addr, hwaddr->sa_data, 1);
+       dev_addr_set(dev, hwaddr->sa_data);
        com20020_set_subaddress(lp, ioaddr, SUB_NODE);
        arcnet_outb(dev->dev_addr[0], ioaddr, COM20020_REG_W_XREG);
 
@@ -220,7 +220,7 @@ int com20020_found(struct net_device *dev, int shared)
 
        /* FIXME: do this some other way! */
        if (!dev->dev_addr[0])
-               dev->dev_addr[0] = arcnet_inb(ioaddr, 8);
+               arcnet_set_addr(dev, arcnet_inb(ioaddr, 8));
 
        com20020_set_subaddress(lp, ioaddr, SUB_SETUP1);
        arcnet_outb(lp->setup, ioaddr, COM20020_REG_W_XREG);
index b88a109b3b150c4731b9cdb4173ea96a0bd080a0..24150c933fcbe96f02477bf581303702e49903c7 100644 (file)
@@ -133,7 +133,7 @@ static int com20020_probe(struct pcmcia_device *p_dev)
        lp->hw.owner = THIS_MODULE;
 
        /* fill in our module parameters as defaults */
-       dev->dev_addr[0] = node;
+       arcnet_set_addr(dev, node);
 
        p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
        p_dev->resource[0]->end = 16;
index 3856b447d38ed27ca5ef98a1d0b4191f92152d31..37b47749fc8b4afb24ae60151ac5b316554ab391 100644 (file)
@@ -252,7 +252,7 @@ static int __init com90io_found(struct net_device *dev)
 
        /* get and check the station ID from offset 1 in shmem */
 
-       dev->dev_addr[0] = get_buffer_byte(dev, 1);
+       arcnet_set_addr(dev, get_buffer_byte(dev, 1));
 
        err = register_netdev(dev);
        if (err) {
index d8dfb9ea0de89bf9929ee334d9f332c9156cef18..f49dae1942846d866d11aad4d619202fd7a8cb01 100644 (file)
@@ -531,7 +531,8 @@ static int __init com90xx_found(int ioaddr, int airq, u_long shmem,
        }
 
        /* get and check the station ID from offset 1 in shmem */
-       dev->dev_addr[0] = arcnet_readb(lp->mem_start, COM9026_REG_R_STATION);
+       arcnet_set_addr(dev, arcnet_readb(lp->mem_start,
+                                         COM9026_REG_R_STATION));
 
        dev->base_addr = ioaddr;
 
index e1da9102a540dda48c578a20357c69c7e008258c..ad5121e9cf5d6fe5dfcaa979e33b23ffc5706c63 100644 (file)
@@ -275,6 +275,8 @@ static const struct net_device_ops usbpn_ops = {
 
 static void usbpn_setup(struct net_device *dev)
 {
+       const u8 addr = PN_MEDIA_USB;
+
        dev->features           = 0;
        dev->netdev_ops         = &usbpn_ops;
        dev->header_ops         = &phonet_header_ops;
@@ -284,8 +286,8 @@ static void usbpn_setup(struct net_device *dev)
        dev->min_mtu            = PHONET_MIN_MTU;
        dev->max_mtu            = PHONET_MAX_MTU;
        dev->hard_header_len    = 1;
-       dev->dev_addr[0]        = PN_MEDIA_USB;
        dev->addr_len           = 1;
+       dev_addr_set(dev, &addr);
        dev->tx_queue_len       = 3;
 
        dev->needs_free_netdev  = true;
index 0b468f5d55bc5df968de2ab142ddcc2c8d50c3aa..068ed8417e5a9eccee4adc4847480e0810c8039e 100644 (file)
@@ -267,6 +267,8 @@ static const struct net_device_ops pn_netdev_ops = {
 
 static void pn_net_setup(struct net_device *dev)
 {
+       const u8 addr = PN_MEDIA_USB;
+
        dev->features           = 0;
        dev->type               = ARPHRD_PHONET;
        dev->flags              = IFF_POINTOPOINT | IFF_NOARP;
@@ -274,8 +276,9 @@ static void pn_net_setup(struct net_device *dev)
        dev->min_mtu            = PHONET_MIN_MTU;
        dev->max_mtu            = PHONET_MAX_MTU;
        dev->hard_header_len    = 1;
-       dev->dev_addr[0]        = PN_MEDIA_USB;
        dev->addr_len           = 1;
+       dev_addr_set(dev, &addr);
+
        dev->tx_queue_len       = 1;
 
        dev->netdev_ops         = &pn_netdev_ops;