static void owl_emac_set_hw_mac_addr(struct net_device *netdev)
 {
        struct owl_emac_priv *priv = netdev_priv(netdev);
-       u8 *mac_addr = netdev->dev_addr;
+       const u8 *mac_addr = netdev->dev_addr;
        u32 addr_high, addr_low;
 
        addr_high = mac_addr[0] << 8 | mac_addr[1];
 
        writew(0, ioaddr + PerfFilterTable + 4);
        writew(0, ioaddr + PerfFilterTable + 8);
        for (i = 1; i < 16; i++) {
-               __be16 *eaddrs = (__be16 *)dev->dev_addr;
+               const __be16 *eaddrs = (const __be16 *)dev->dev_addr;
                void __iomem *setup_frm = ioaddr + PerfFilterTable + i * 16;
                writew(be16_to_cpu(eaddrs[2]), setup_frm); setup_frm += 4;
                writew(be16_to_cpu(eaddrs[1]), setup_frm); setup_frm += 4;
        } else if (netdev_mc_count(dev) <= 14) {
                /* Use the 16 element perfect filter, skip first two entries. */
                void __iomem *filter_addr = ioaddr + PerfFilterTable + 2 * 16;
-               __be16 *eaddrs;
+               const __be16 *eaddrs;
                netdev_for_each_mc_addr(ha, dev) {
                        eaddrs = (__be16 *) ha->addr;
                        writew(be16_to_cpu(eaddrs[2]), filter_addr); filter_addr += 4;
                        writew(be16_to_cpu(eaddrs[1]), filter_addr); filter_addr += 4;
                        writew(be16_to_cpu(eaddrs[0]), filter_addr); filter_addr += 8;
                }
-               eaddrs = (__be16 *)dev->dev_addr;
+               eaddrs = (const __be16 *)dev->dev_addr;
                i = netdev_mc_count(dev) + 2;
                while (i++ < 16) {
                        writew(be16_to_cpu(eaddrs[0]), filter_addr); filter_addr += 4;
        } else {
                /* Must use a multicast hash table. */
                void __iomem *filter_addr;
-               __be16 *eaddrs;
+               const __be16 *eaddrs;
                __le16 mc_filter[32] __attribute__ ((aligned(sizeof(long))));   /* Multicast hash filter */
 
                memset(mc_filter, 0, sizeof(mc_filter));
                }
                /* Clear the perfect filter list, skip first two entries. */
                filter_addr = ioaddr + PerfFilterTable + 2 * 16;
-               eaddrs = (__be16 *)dev->dev_addr;
+               eaddrs = (const __be16 *)dev->dev_addr;
                for (i = 2; i < 16; i++) {
                        writew(be16_to_cpu(eaddrs[0]), filter_addr); filter_addr += 4;
                        writew(be16_to_cpu(eaddrs[1]), filter_addr); filter_addr += 4;
 
 
 static void slic_set_mac_address(struct slic_device *sdev)
 {
-       u8 *addr = sdev->netdev->dev_addr;
+       const u8 *addr = sdev->netdev->dev_addr;
        u32 val;
 
        val = addr[5] | addr[4] << 8 | addr[3] << 16 | addr[2] << 24;
 
        struct ace_private *ap = netdev_priv(dev);
        struct ace_regs __iomem *regs = ap->regs;
        struct sockaddr *addr=p;
-       u8 *da;
+       const u8 *da;
        struct cmd cmd;
 
        if(netif_running(dev))
 
        eth_hw_addr_set(dev, addr->sa_data);
 
-       da = (u8 *)dev->dev_addr;
+       da = (const u8 *)dev->dev_addr;
 
        writel(da[0] << 8 | da[1], ®s->MacAddrHi);
        writel((da[2] << 24) | (da[3] << 16) | (da[4] << 8) | da[5],
 
        return 0;
 }
 
-static void tse_update_mac_addr(struct altera_tse_private *priv, u8 *addr)
+static void tse_update_mac_addr(struct altera_tse_private *priv, const u8 *addr)
 {
        u32 msb;
        u32 lsb;
 
 mace_init
        Resets the MACE chip.
 ---------------------------------------------------------------------------- */
-static int mace_init(mace_private *lp, unsigned int ioaddr, char *enet_addr)
+static int mace_init(mace_private *lp, unsigned int ioaddr,
+                    const char *enet_addr)
 {
   int i;
   int ct = 0;
 
        return 0;
 }
 
-static int xgbe_set_mac_address(struct xgbe_prv_data *pdata, u8 *addr)
+static int xgbe_set_mac_address(struct xgbe_prv_data *pdata, const u8 *addr)
 {
        unsigned int mac_addr_hi, mac_addr_lo;
 
 
 struct xgbe_hw_if {
        int (*tx_complete)(struct xgbe_ring_desc *);
 
-       int (*set_mac_address)(struct xgbe_prv_data *, u8 *addr);
+       int (*set_mac_address)(struct xgbe_prv_data *, const u8 *addr);
        int (*config_rx_mode)(struct xgbe_prv_data *);
 
        int (*enable_rx_csum)(struct xgbe_prv_data *);
 
 
 void xge_mac_set_station_addr(struct xge_pdata *pdata)
 {
-       u8 *dev_addr = pdata->ndev->dev_addr;
+       const u8 *dev_addr = pdata->ndev->dev_addr;
        u32 addr0, addr1;
 
        addr0 = (dev_addr[3] << 24) | (dev_addr[2] << 16) |
 
 
 static void xgene_gmac_set_mac_addr(struct xgene_enet_pdata *pdata)
 {
+       const u8 *dev_addr = pdata->ndev->dev_addr;
        u32 addr0, addr1;
-       u8 *dev_addr = pdata->ndev->dev_addr;
 
        addr0 = (dev_addr[3] << 24) | (dev_addr[2] << 16) |
                (dev_addr[1] << 8) | dev_addr[0];
 
 
 static void xgene_sgmac_set_mac_addr(struct xgene_enet_pdata *p)
 {
+       const u8 *dev_addr = p->ndev->dev_addr;
        u32 addr0, addr1;
-       u8 *dev_addr = p->ndev->dev_addr;
 
        addr0 = (dev_addr[3] << 24) | (dev_addr[2] << 16) |
                (dev_addr[1] << 8) | dev_addr[0];
 
 
 static void xgene_xgmac_set_mac_addr(struct xgene_enet_pdata *pdata)
 {
+       const u8 *dev_addr = pdata->ndev->dev_addr;
        u32 addr0, addr1;
-       u8 *dev_addr = pdata->ndev->dev_addr;
 
        addr0 = (dev_addr[3] << 24) | (dev_addr[2] << 16) |
                (dev_addr[1] << 8) | dev_addr[0];
 
 {
        struct bmac_data *bp = netdev_priv(dev);
        volatile unsigned short regValue;
-       unsigned short *pWord16;
+       const unsigned short *pWord16;
        int i;
 
        /* XXDEBUG(("bmac: enter init_registers\n")); */
        bmwrite(dev, BHASH1, bp->hash_table_mask[2]);   /* bits 47 - 32 */
        bmwrite(dev, BHASH0, bp->hash_table_mask[3]);   /* bits 63 - 48 */
 
-       pWord16 = (unsigned short *)dev->dev_addr;
+       pWord16 = (const unsigned short *)dev->dev_addr;
        bmwrite(dev, MADD0, *pWord16++);
        bmwrite(dev, MADD1, *pWord16++);
        bmwrite(dev, MADD2, *pWord16);
 {
        struct bmac_data *bp = netdev_priv(dev);
        unsigned char *p = addr;
-       unsigned short *pWord16;
+       const unsigned short *pWord16;
        unsigned long flags;
        int i;
 
                dev->dev_addr[i] = p[i];
        }
        /* load up the hardware address */
-       pWord16  = (unsigned short *)dev->dev_addr;
+       pWord16  = (const unsigned short *)dev->dev_addr;
        bmwrite(dev, MADD0, *pWord16++);
        bmwrite(dev, MADD1, *pWord16++);
        bmwrite(dev, MADD2, *pWord16);
 
        int (*hw_ring_tx_head_update)(struct aq_hw_s *self,
                                      struct aq_ring_s *aq_ring);
 
-       int (*hw_set_mac_address)(struct aq_hw_s *self, u8 *mac_addr);
+       int (*hw_set_mac_address)(struct aq_hw_s *self, const u8 *mac_addr);
 
        int (*hw_soft_reset)(struct aq_hw_s *self);
 
 
        int (*hw_reset)(struct aq_hw_s *self);
 
-       int (*hw_init)(struct aq_hw_s *self, u8 *mac_addr);
+       int (*hw_init)(struct aq_hw_s *self, const u8 *mac_addr);
 
        int (*hw_start)(struct aq_hw_s *self);
 
        int (*set_phyloopback)(struct aq_hw_s *self, u32 mode, bool enable);
 
        int (*set_power)(struct aq_hw_s *self, unsigned int power_state,
-                        u8 *mac);
+                        const u8 *mac);
 
        int (*send_fw_request)(struct aq_hw_s *self,
                               const struct hw_fw_request_iface *fw_req,
 
 static int aq_apply_secy_cfg(struct aq_nic_s *nic,
                             const struct macsec_secy *secy);
 
-static void aq_ether_addr_to_mac(u32 mac[2], unsigned char *emac)
+static void aq_ether_addr_to_mac(u32 mac[2], const unsigned char *emac)
 {
        u32 tmp[2] = { 0 };
 
 
        return aq_hw_err_from_flags(self);
 }
 
-static int hw_atl_a0_hw_mac_addr_set(struct aq_hw_s *self, u8 *mac_addr)
+static int hw_atl_a0_hw_mac_addr_set(struct aq_hw_s *self, const u8 *mac_addr)
 {
        unsigned int h = 0U;
        unsigned int l = 0U;
        return err;
 }
 
-static int hw_atl_a0_hw_init(struct aq_hw_s *self, u8 *mac_addr)
+static int hw_atl_a0_hw_init(struct aq_hw_s *self, const u8 *mac_addr)
 {
        static u32 aq_hw_atl_igcr_table_[4][2] = {
                [AQ_HW_IRQ_INVALID] = { 0x20000000U, 0x20000000U },
 
        return aq_hw_err_from_flags(self);
 }
 
-int hw_atl_b0_hw_mac_addr_set(struct aq_hw_s *self, u8 *mac_addr)
+int hw_atl_b0_hw_mac_addr_set(struct aq_hw_s *self, const u8 *mac_addr)
 {
        unsigned int h = 0U;
        unsigned int l = 0U;
        return err;
 }
 
-static int hw_atl_b0_hw_init(struct aq_hw_s *self, u8 *mac_addr)
+static int hw_atl_b0_hw_init(struct aq_hw_s *self, const u8 *mac_addr)
 {
        static u32 aq_hw_atl_igcr_table_[4][2] = {
                [AQ_HW_IRQ_INVALID] = { 0x20000000U, 0x20000000U },
 
 
 void hw_atl_b0_hw_init_rx_rss_ctrl1(struct aq_hw_s *self);
 
-int hw_atl_b0_hw_mac_addr_set(struct aq_hw_s *self, u8 *mac_addr);
+int hw_atl_b0_hw_mac_addr_set(struct aq_hw_s *self, const u8 *mac_addr);
 
 int hw_atl_b0_set_fc(struct aq_hw_s *self, u32 fc, u32 tc);
 int hw_atl_b0_set_loopback(struct aq_hw_s *self, u32 mode, bool enable);
 
 }
 
 static int aq_fw1x_set_wake_magic(struct aq_hw_s *self, bool wol_enabled,
-                                 u8 *mac)
+                                 const u8 *mac)
 {
        struct hw_atl_utils_fw_rpc *prpc = NULL;
        unsigned int rpc_size = 0U;
 }
 
 static int aq_fw1x_set_power(struct aq_hw_s *self, unsigned int power_state,
-                            u8 *mac)
+                            const u8 *mac)
 {
        struct hw_atl_utils_fw_rpc *prpc = NULL;
        unsigned int rpc_size = 0U;
 
        return 0;
 }
 
-static int aq_fw2x_set_wol(struct aq_hw_s *self, u8 *mac)
+static int aq_fw2x_set_wol(struct aq_hw_s *self, const u8 *mac)
 {
        struct hw_atl_utils_fw_rpc *rpc = NULL;
        struct offload_info *info = NULL;
 }
 
 static int aq_fw2x_set_power(struct aq_hw_s *self, unsigned int power_state,
-                            u8 *mac)
+                            const u8 *mac)
 {
        int err = 0;
 
 
        return aq_hw_err_from_flags(self);
 }
 
-static int hw_atl2_hw_init(struct aq_hw_s *self, u8 *mac_addr)
+static int hw_atl2_hw_init(struct aq_hw_s *self, const u8 *mac_addr)
 {
        static u32 aq_hw_atl2_igcr_table_[4][2] = {
                [AQ_HW_IRQ_INVALID] = { 0x20000000U, 0x20000000U },
 
        data[1] = (val >> 0) & 0xFF;
 }
 
-static inline void __b44_cam_write(struct b44 *bp, unsigned char *data, int index)
+static inline void __b44_cam_write(struct b44 *bp,
+                                  const unsigned char *data, int index)
 {
        u32 val;
 
        }
 }
 
-static int b44_magic_pattern(u8 *macaddr, u8 *ppattern, u8 *pmask, int offset)
+static int b44_magic_pattern(const u8 *macaddr, u8 *ppattern, u8 *pmask,
+                            int offset)
 {
        int magicsync = 6;
        int k, j, len = offset;
 
 }
 
 static void umac_set_hw_addr(struct bcm_sysport_priv *priv,
-                            unsigned char *addr)
+                            const unsigned char *addr)
 {
        u32 mac0 = (addr[0] << 24) | (addr[1] << 16) | (addr[2] << 8) |
                    addr[3];
 
        udelay(2);
 }
 
-static void bgmac_write_mac_address(struct bgmac *bgmac, u8 *addr)
+static void bgmac_write_mac_address(struct bgmac *bgmac, const u8 *addr)
 {
        u32 tmp;
 
 
 }
 
 static void
-bnx2_set_mac_addr(struct bnx2 *bp, u8 *mac_addr, u32 pos)
+bnx2_set_mac_addr(struct bnx2 *bp, const u8 *mac_addr, u32 pos)
 {
        u32 val;
 
 
  * operation has been successfully scheduled and a negative - if a requested
  * operations has failed.
  */
-int bnx2x_set_mac_one(struct bnx2x *bp, u8 *mac,
+int bnx2x_set_mac_one(struct bnx2x *bp, const u8 *mac,
                      struct bnx2x_vlan_mac_obj *obj, bool set,
                      int mac_type, unsigned long *ramrod_flags);
 
 
  * Init service functions
  */
 
-int bnx2x_set_mac_one(struct bnx2x *bp, u8 *mac,
+int bnx2x_set_mac_one(struct bnx2x *bp, const u8 *mac,
                      struct bnx2x_vlan_mac_obj *obj, bool set,
                      int mac_type, unsigned long *ramrod_flags)
 {
 
        else if (bp->wol) {
                u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
-               u8 *mac_addr = bp->dev->dev_addr;
+               const u8 *mac_addr = bp->dev->dev_addr;
                struct pci_dev *pdev = bp->pdev;
                u32 val;
                u16 pmc;
 
 void bnx2x_vfpf_close_vf(struct bnx2x *bp);
 int bnx2x_vfpf_setup_q(struct bnx2x *bp, struct bnx2x_fastpath *fp,
                       bool is_leading);
-int bnx2x_vfpf_config_mac(struct bnx2x *bp, u8 *addr, u8 vf_qid, bool set);
+int bnx2x_vfpf_config_mac(struct bnx2x *bp, const u8 *addr, u8 vf_qid,
+                         bool set);
 int bnx2x_vfpf_config_rss(struct bnx2x *bp,
                          struct bnx2x_config_rss_params *params);
 int bnx2x_vfpf_set_mcast(struct net_device *dev);
 
 }
 
 /* request pf to add a mac for the vf */
-int bnx2x_vfpf_config_mac(struct bnx2x *bp, u8 *addr, u8 vf_qid, bool set)
+int bnx2x_vfpf_config_mac(struct bnx2x *bp, const u8 *addr, u8 vf_qid, bool set)
 {
        struct vfpf_set_q_filters_tlv *req = &bp->vf2pf_mbox->req.set_q_filters;
        struct pfvf_general_resp_tlv *resp = &bp->vf2pf_mbox->resp.general_resp;
 
 #endif
 
 static int bnxt_hwrm_set_vnic_filter(struct bnxt *bp, u16 vnic_id, u16 idx,
-                                    u8 *mac_addr)
+                                    const u8 *mac_addr)
 {
        struct hwrm_cfa_l2_filter_alloc_output *resp;
        struct hwrm_cfa_l2_filter_alloc_input *req;
 
        }
 }
 
-int bnxt_approve_mac(struct bnxt *bp, u8 *mac, bool strict)
+int bnxt_approve_mac(struct bnxt *bp, const u8 *mac, bool strict)
 {
        struct hwrm_func_vf_cfg_input *req;
        int rc = 0;
 {
 }
 
-int bnxt_approve_mac(struct bnxt *bp, u8 *mac, bool strict)
+int bnxt_approve_mac(struct bnxt *bp, const u8 *mac, bool strict)
 {
        return 0;
 }
 
 void bnxt_sriov_disable(struct bnxt *);
 void bnxt_hwrm_exec_fwd_req(struct bnxt *);
 void bnxt_update_vf_mac(struct bnxt *);
-int bnxt_approve_mac(struct bnxt *, u8 *, bool);
+int bnxt_approve_mac(struct bnxt *, const u8 *, bool);
 #endif
 
 }
 
 static void bcmgenet_set_hw_addr(struct bcmgenet_priv *priv,
-                                unsigned char *addr)
+                                const unsigned char *addr)
 {
        bcmgenet_umac_writel(priv, get_unaligned_be32(&addr[0]), UMAC_MAC0);
        bcmgenet_umac_writel(priv, get_unaligned_be16(&addr[4]), UMAC_MAC1);
 #define MAX_MDF_FILTER 17
 
 static inline void bcmgenet_set_mdf_addr(struct bcmgenet_priv *priv,
-                                        unsigned char *addr,
+                                        const unsigned char *addr,
                                         int *i)
 {
        bcmgenet_umac_writel(priv, addr[0] << 8 | addr[1],
 
        writel(value, ioaddr + XGMAC_CONTROL);
 }
 
-static void xgmac_set_mac_addr(void __iomem *ioaddr, unsigned char *addr,
+static void xgmac_set_mac_addr(void __iomem *ioaddr, const unsigned char *addr,
                               int num)
 {
        u32 data;
 
        const struct cmac_statistics *(*statistics_update)(struct cmac *, int);
 
        int (*macaddress_get)(struct cmac *, u8 mac_addr[6]);
-       int (*macaddress_set)(struct cmac *, u8 mac_addr[6]);
+       int (*macaddress_set)(struct cmac *, const u8 mac_addr[6]);
 };
 
 typedef struct _cmac_instance cmac_instance;
 
        return 0;
 }
 
-static int pm3393_macaddress_set(struct cmac *cmac, u8 ma[6])
+static int pm3393_macaddress_set(struct cmac *cmac, const u8 ma[6])
 {
        u32 val, lo, mid, hi, enabled = cmac->instance->enabled;
 
 
 }
 
 /* Expect MAC address to be in network byte order. */
-static int mac_set_address(struct cmac* mac, u8 addr[6])
+static int mac_set_address(struct cmac* mac, const u8 addr[6])
 {
        u32 val;
        int port = mac->instance->index;
 
 int t3_mac_disable(struct cmac *mac, int which);
 int t3_mac_set_mtu(struct cmac *mac, unsigned int mtu);
 int t3_mac_set_rx_mode(struct cmac *mac, struct net_device *dev);
-int t3_mac_set_address(struct cmac *mac, unsigned int idx, u8 addr[6]);
+int t3_mac_set_address(struct cmac *mac, unsigned int idx, const u8 addr[6]);
 int t3_mac_set_num_ucast(struct cmac *mac, int n);
 const struct mac_stats *t3_mac_update_stats(struct cmac *mac);
 int t3_mac_set_speed_duplex_fc(struct cmac *mac, int speed, int duplex, int fc);
 
 }
 
 /* Set one of the station's unicast MAC addresses. */
-int t3_mac_set_address(struct cmac *mac, unsigned int idx, u8 addr[6])
+int t3_mac_set_address(struct cmac *mac, unsigned int idx, const u8 addr[6])
 {
        if (idx >= mac->nucast)
                return -EINVAL;
 
        struct vic_provinfo *vp;
        const u8 oui[3] = VIC_PROVINFO_CISCO_OUI;
        const __be16 os_type = htons(VIC_GENERIC_PROV_OS_TYPE_LINUX);
+       const u8 *client_mac;
        char uuid_str[38];
        char client_mac_str[18];
-       u8 *client_mac;
        int err;
 
        ENIC_PP_BY_INDEX(enic, vf, pp, &err);
 
         */
        for (i = 0; i < 3; i++)
                dw16(StationAddr0 + 2 * i,
-                    cpu_to_le16(((u16 *)dev->dev_addr)[i]));
+                    cpu_to_le16(((const u16 *)dev->dev_addr)[i]));
 
        set_multicast (dev);
        if (np->coalesce) {
 
 {
        u16 tmp;
 
-       tmp = be16_to_cpup((__be16 *)bp->dev->dev_addr);
+       tmp = be16_to_cpup((const __be16 *)bp->dev->dev_addr);
        dnet_writew_mac(bp, DNET_INTERNAL_MAC_ADDR_0_REG, tmp);
-       tmp = be16_to_cpup((__be16 *)(bp->dev->dev_addr + 2));
+       tmp = be16_to_cpup((const __be16 *)(bp->dev->dev_addr + 2));
        dnet_writew_mac(bp, DNET_INTERNAL_MAC_ADDR_1_REG, tmp);
-       tmp = be16_to_cpup((__be16 *)(bp->dev->dev_addr + 4));
+       tmp = be16_to_cpup((const __be16 *)(bp->dev->dev_addr + 4));
        dnet_writew_mac(bp, DNET_INTERNAL_MAC_ADDR_2_REG, tmp);
 }
 
 
 }
 
 /* Uses synchronous MCCQ */
-int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr,
+int be_cmd_pmac_add(struct be_adapter *adapter, const u8 *mac_addr,
                    u32 if_id, u32 *pmac_id, u32 domain)
 {
        struct be_mcc_wrb *wrb;
 
 int be_fw_wait_ready(struct be_adapter *adapter);
 int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr,
                          bool permanent, u32 if_handle, u32 pmac_id);
-int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, u32 if_id,
+int be_cmd_pmac_add(struct be_adapter *adapter, const u8 *mac_addr, u32 if_id,
                    u32 *pmac_id, u32 domain);
 int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, int pmac_id,
                    u32 domain);
 
        iowrite32(val, adapter->db + DB_CQ_OFFSET);
 }
 
-static int be_dev_mac_add(struct be_adapter *adapter, u8 *mac)
+static int be_dev_mac_add(struct be_adapter *adapter, const u8 *mac)
 {
        int i;
 
 
 
 static void ethoc_do_set_mac_address(struct net_device *dev)
 {
+       const unsigned char *mac = dev->dev_addr;
        struct ethoc *priv = netdev_priv(dev);
-       unsigned char *mac = dev->dev_addr;
 
        ethoc_write(priv, MAC_ADDR0, (mac[2] << 24) | (mac[3] << 16) |
                                     (mac[4] <<  8) | (mac[5] <<  0));
 
                return -EAGAIN;
 
        for (i = 0; i < 3; i++)
-               iowrite16(((unsigned short*)dev->dev_addr)[i],
+               iowrite16(((const unsigned short *)dev->dev_addr)[i],
                                ioaddr + PAR0 + i*2);
 
        init_ring(dev);
 
        } else {
                eth_hw_addr_random(net_dev);
                err = priv->mac_dev->change_addr(priv->mac_dev->fman_mac,
-                       (enet_addr_t *)net_dev->dev_addr);
+                       (const enet_addr_t *)net_dev->dev_addr);
                if (err) {
                        dev_err(dev, "Failed to set random MAC address\n");
                        return -EINVAL;
        mac_dev = priv->mac_dev;
 
        err = mac_dev->change_addr(mac_dev->fman_mac,
-                                  (enet_addr_t *)net_dev->dev_addr);
+                                  (const enet_addr_t *)net_dev->dev_addr);
        if (err < 0) {
                netif_err(priv, drv, net_dev, "mac_dev->change_addr() = %d\n",
                          err);
 
        cfg->maximum_frame = DEFAULT_MAXIMUM_FRAME;
 }
 
-static void set_mac_address(struct dtsec_regs __iomem *regs, u8 *adr)
+static void set_mac_address(struct dtsec_regs __iomem *regs, const u8 *adr)
 {
        u32 tmp;
 
 
        if (addr) {
                MAKE_ENET_ADDR_FROM_UINT64(addr, eth_addr);
-               set_mac_address(regs, (u8 *)eth_addr);
+               set_mac_address(regs, (const u8 *)eth_addr);
        }
 
        /* HASH */
        return 0;
 }
 
-int dtsec_modify_mac_address(struct fman_mac *dtsec, enet_addr_t *enet_addr)
+int dtsec_modify_mac_address(struct fman_mac *dtsec, const enet_addr_t *enet_addr)
 {
        struct dtsec_regs __iomem *regs = dtsec->regs;
        enum comm_mode mode = COMM_MODE_NONE;
         * Station address have to be swapped (big endian to little endian
         */
        dtsec->addr = ENET_ADDR_TO_UINT64(*enet_addr);
-       set_mac_address(dtsec->regs, (u8 *)(*enet_addr));
+       set_mac_address(dtsec->regs, (const u8 *)(*enet_addr));
 
        graceful_start(dtsec, mode);
 
 
 
 struct fman_mac *dtsec_config(struct fman_mac_params *params);
 int dtsec_set_promiscuous(struct fman_mac *dtsec, bool new_val);
-int dtsec_modify_mac_address(struct fman_mac *dtsec, enet_addr_t *enet_addr);
+int dtsec_modify_mac_address(struct fman_mac *dtsec, const enet_addr_t *enet_addr);
 int dtsec_adjust_link(struct fman_mac *dtsec,
                      u16 speed);
 int dtsec_restart_autoneg(struct fman_mac *dtsec);
 
        bool allmulti_enabled;
 };
 
-static void add_addr_in_paddr(struct memac_regs __iomem *regs, u8 *adr,
+static void add_addr_in_paddr(struct memac_regs __iomem *regs, const u8 *adr,
                              u8 paddr_num)
 {
        u32 tmp0, tmp1;
        return 0;
 }
 
-int memac_modify_mac_address(struct fman_mac *memac, enet_addr_t *enet_addr)
+int memac_modify_mac_address(struct fman_mac *memac, const enet_addr_t *enet_addr)
 {
        if (!is_init_done(memac->memac_drv_param))
                return -EINVAL;
 
-       add_addr_in_paddr(memac->regs, (u8 *)(*enet_addr), 0);
+       add_addr_in_paddr(memac->regs, (const u8 *)(*enet_addr), 0);
 
        return 0;
 }
        /* MAC Address */
        if (memac->addr != 0) {
                MAKE_ENET_ADDR_FROM_UINT64(memac->addr, eth_addr);
-               add_addr_in_paddr(memac->regs, (u8 *)eth_addr, 0);
+               add_addr_in_paddr(memac->regs, (const u8 *)eth_addr, 0);
        }
 
        fixed_link = memac_drv_param->fixed_link;
 
 
 struct fman_mac *memac_config(struct fman_mac_params *params);
 int memac_set_promiscuous(struct fman_mac *memac, bool new_val);
-int memac_modify_mac_address(struct fman_mac *memac, enet_addr_t *enet_addr);
+int memac_modify_mac_address(struct fman_mac *memac, const enet_addr_t *enet_addr);
 int memac_adjust_link(struct fman_mac *memac, u16 speed);
 int memac_cfg_max_frame_len(struct fman_mac *memac, u16 new_val);
 int memac_cfg_reset_on_init(struct fman_mac *memac, bool enable);
 
        bool allmulti_enabled;
 };
 
-static void set_mac_address(struct tgec_regs __iomem *regs, u8 *adr)
+static void set_mac_address(struct tgec_regs __iomem *regs, const u8 *adr)
 {
        u32 tmp0, tmp1;
 
        return 0;
 }
 
-int tgec_modify_mac_address(struct fman_mac *tgec, enet_addr_t *p_enet_addr)
+int tgec_modify_mac_address(struct fman_mac *tgec, const enet_addr_t *p_enet_addr)
 {
        if (!is_init_done(tgec->cfg))
                return -EINVAL;
 
        tgec->addr = ENET_ADDR_TO_UINT64(*p_enet_addr);
-       set_mac_address(tgec->regs, (u8 *)(*p_enet_addr));
+       set_mac_address(tgec->regs, (const u8 *)(*p_enet_addr));
 
        return 0;
 }
 
        if (tgec->addr) {
                MAKE_ENET_ADDR_FROM_UINT64(tgec->addr, eth_addr);
-               set_mac_address(tgec->regs, (u8 *)eth_addr);
+               set_mac_address(tgec->regs, (const u8 *)eth_addr);
        }
 
        /* interrupts */
 
 
 struct fman_mac *tgec_config(struct fman_mac_params *params);
 int tgec_set_promiscuous(struct fman_mac *tgec, bool new_val);
-int tgec_modify_mac_address(struct fman_mac *tgec, enet_addr_t *enet_addr);
+int tgec_modify_mac_address(struct fman_mac *tgec, const enet_addr_t *enet_addr);
 int tgec_cfg_max_frame_len(struct fman_mac *tgec, u16 new_val);
 int tgec_enable(struct fman_mac *tgec, enum comm_mode mode);
 int tgec_disable(struct fman_mac *tgec, enum comm_mode mode);
 
        int (*stop)(struct mac_device *mac_dev);
        void (*adjust_link)(struct mac_device *mac_dev);
        int (*set_promisc)(struct fman_mac *mac_dev, bool enable);
-       int (*change_addr)(struct fman_mac *mac_dev, enet_addr_t *enet_addr);
+       int (*change_addr)(struct fman_mac *mac_dev, const enet_addr_t *enet_addr);
        int (*set_allmulti)(struct fman_mac *mac_dev, bool enable);
        int (*set_tstamp)(struct fman_mac *mac_dev, bool enable);
        int (*set_multi)(struct net_device *net_dev,
 
 }
 
 static int hisi_femac_set_hw_mac_addr(struct hisi_femac_priv *priv,
-                                     unsigned char *mac)
+                                     const unsigned char *mac)
 {
        u32 reg;
 
 
 static void hix5hd2_hw_set_mac_addr(struct net_device *dev)
 {
        struct hix5hd2_priv *priv = netdev_priv(dev);
-       unsigned char *mac = dev->dev_addr;
+       const unsigned char *mac = dev->dev_addr;
        u32 val;
 
        val = mac[1] | (mac[0] << 8);
 
                                   u32 *tx_usecs_high, u32 *rx_usecs_high);
        void (*set_promisc_mode)(struct hnae_handle *handle, u32 en);
        int (*get_mac_addr)(struct hnae_handle *handle, void **p);
-       int (*set_mac_addr)(struct hnae_handle *handle, void *p);
+       int (*set_mac_addr)(struct hnae_handle *handle, const void *p);
        int (*add_uc_addr)(struct hnae_handle *handle,
                           const unsigned char *addr);
        int (*rm_uc_addr)(struct hnae_handle *handle,
 
                hns_rcb_reset_ring_hw(q);
 }
 
-static int hns_ae_set_mac_address(struct hnae_handle *handle, void *p)
+static int hns_ae_set_mac_address(struct hnae_handle *handle, const void *p)
 {
        int ret;
        struct hns_mac_cb *mac_cb = hns_get_mac_cb(handle);
 
                += dsaf_read_dev(drv, GMAC_TX_PAUSE_FRAMES_REG);
 }
 
-static void hns_gmac_set_mac_addr(void *mac_drv, char *mac_addr)
+static void hns_gmac_set_mac_addr(void *mac_drv, const char *mac_addr)
 {
        struct mac_driver *drv = (struct mac_driver *)mac_drv;
 
 
  *@addr:mac address
  */
 int hns_mac_change_vf_addr(struct hns_mac_cb *mac_cb,
-                          u32 vmid, char *addr)
+                          u32 vmid, const char *addr)
 {
        int ret;
        struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb);
 
        /*disable mac when disable nic or dsaf*/
        void (*mac_disable)(void *mac_drv, enum mac_commom_mode mode);
        /* config mac address*/
-       void (*set_mac_addr)(void *mac_drv,     char *mac_addr);
+       void (*set_mac_addr)(void *mac_drv,     const char *mac_addr);
        /*adjust mac mode of port,include speed and duplex*/
        int (*adjust_link)(void *mac_drv, enum mac_speed speed,
                           u32 full_duplex);
 void mac_adjust_link(struct net_device *net_dev);
 bool hns_mac_need_adjust_link(struct hns_mac_cb *mac_cb, int speed, int duplex);
 void hns_mac_get_link_status(struct hns_mac_cb *mac_cb,        u32 *link_status);
-int hns_mac_change_vf_addr(struct hns_mac_cb *mac_cb, u32 vmid, char *addr);
+int hns_mac_change_vf_addr(struct hns_mac_cb *mac_cb, u32 vmid,
+                          const char *addr);
 int hns_mac_set_multi(struct hns_mac_cb *mac_cb,
                      u32 port_num, char *addr, bool enable);
 int hns_mac_vm_config_bc_en(struct hns_mac_cb *mac_cb, u32 vm, bool enable);
 
        dsaf_write_dev(drv, XGMAC_MAC_PAUSE_CTRL_REG, origin);
 }
 
-static void hns_xgmac_set_pausefrm_mac_addr(void *mac_drv, char *mac_addr)
+static void hns_xgmac_set_pausefrm_mac_addr(void *mac_drv, const char *mac_addr)
 {
        struct mac_driver *drv = (struct mac_driver *)mac_drv;
 
 
                                   u32 *tx_usecs_high, u32 *rx_usecs_high);
 
        void (*get_mac_addr)(struct hnae3_handle *handle, u8 *p);
-       int (*set_mac_addr)(struct hnae3_handle *handle, void *p,
+       int (*set_mac_addr)(struct hnae3_handle *handle, const void *p,
                            bool is_first);
        int (*do_ioctl)(struct hnae3_handle *handle,
                        struct ifreq *ifr, int cmd);
 
        return 0;
 }
 
-static int hclge_set_mac_addr(struct hnae3_handle *handle, void *p,
+static int hclge_set_mac_addr(struct hnae3_handle *handle, const void *p,
                              bool is_first)
 {
        const unsigned char *new_addr = (const unsigned char *)p;
 
                ether_addr_copy(p, hdev->hw.mac.mac_addr);
 }
 
-static int hclgevf_set_mac_addr(struct hnae3_handle *handle, void *p,
+static int hclgevf_set_mac_addr(struct hnae3_handle *handle, const void *p,
                                bool is_first)
 {
        struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
 
        ias_cmd->cmd_cmd        = swab16(CMD_IASETUP | CMD_LAST);
        ias_cmd->cmd_link       = 0xffff;
 
-       memcpy((char *)&ias_cmd->iaddr,(char *) dev->dev_addr,ETH_ALEN);
+       memcpy((char *)&ias_cmd->iaddr,(const char *) dev->dev_addr,ETH_ALEN);
 
        p->scb->cbl_offset = make16(ias_cmd);
 
 
        return !!ch->fwd;
 }
 
-static inline u8 *i40e_channel_mac(struct i40e_channel *ch)
+static inline const u8 *i40e_channel_mac(struct i40e_channel *ch)
 {
        if (i40e_is_channel_macvlan(ch))
                return ch->fwd->netdev->dev_addr;
 
  *****************************************************************************/
 void
 ixgb_rar_set(struct ixgb_hw *hw,
-                 u8 *addr,
+                 const u8 *addr,
                  u32 index)
 {
        u32 rar_low, rar_high;
 
 void ixgb_check_for_link(struct ixgb_hw *hw);
 bool ixgb_check_for_bad_link(struct ixgb_hw *hw);
 
-void ixgb_rar_set(struct ixgb_hw *hw, u8 *addr, u32 index);
+void ixgb_rar_set(struct ixgb_hw *hw, const u8 *addr, u32 index);
 
 /* Filters (multicast, vlan, receive) */
 void ixgb_mc_addr_list_update(struct ixgb_hw *hw, u8 *mc_addr_list,
 
        addr[5] = mac_l & 0xff;
 }
 
-static void uc_addr_set(struct mv643xx_eth_private *mp, unsigned char *addr)
+static void uc_addr_set(struct mv643xx_eth_private *mp, const u8 *addr)
 {
        wrlp(mp, MAC_ADDR_HIGH,
                (addr[0] << 24) | (addr[1] << 16) | (addr[2] << 8) | addr[3]);
 
 }
 
 /* Set mac address */
-static void mvneta_mac_addr_set(struct mvneta_port *pp, unsigned char *addr,
-                               int queue)
+static void mvneta_mac_addr_set(struct mvneta_port *pp,
+                               const unsigned char *addr, int queue)
 {
        unsigned int mac_h;
        unsigned int mac_l;
 
  * Outputs
  * return the calculated entry.
  */
-static u32 hash_function(unsigned char *mac_addr_orig)
+static u32 hash_function(const unsigned char *mac_addr_orig)
 {
        u32 hash_result;
        u32 addr0;
  * -ENOSPC if table full
  */
 static int add_del_hash_entry(struct pxa168_eth_private *pep,
-                             unsigned char *mac_addr,
+                             const unsigned char *mac_addr,
                              u32 rd, u32 skip, int del)
 {
        struct addr_table_entry *entry, *start;
  */
 static void update_hash_table_mac_address(struct pxa168_eth_private *pep,
                                          unsigned char *oaddr,
-                                         unsigned char *addr)
+                                         const unsigned char *addr)
 {
        /* Delete old entry */
        if (oaddr)
 
 static void mtk_star_set_mac_addr(struct net_device *ndev)
 {
        struct mtk_star_priv *priv = netdev_priv(ndev);
-       u8 *mac_addr = ndev->dev_addr;
+       const u8 *mac_addr = ndev->dev_addr;
        unsigned int high, low;
 
        high = mac_addr[0] << 8 | mac_addr[1] << 0;
 
        bool   mpfs;
 };
 
-static inline int mlx5e_hash_l2(u8 *addr)
+static inline int mlx5e_hash_l2(const u8 *addr)
 {
        return addr[5];
 }
 
-static void mlx5e_add_l2_to_hash(struct hlist_head *hash, u8 *addr)
+static void mlx5e_add_l2_to_hash(struct hlist_head *hash, const u8 *addr)
 {
        struct mlx5e_l2_hash_node *hn;
        int ix = mlx5e_hash_l2(addr);
 
 
 int mlx5i_create_underlay_qp(struct mlx5e_priv *priv)
 {
-       unsigned char *dev_addr = priv->netdev->dev_addr;
+       const unsigned char *dev_addr = priv->netdev->dev_addr;
        u32 out[MLX5_ST_SZ_DW(create_qp_out)] = {};
        u32 in[MLX5_ST_SZ_DW(create_qp_in)] = {};
        struct mlx5i_priv *ipriv = priv->ppriv;
 
        }
 }
 
-static void ks8842_write_mac_addr(struct ks8842_adapter *adapter, u8 *mac)
+static void ks8842_write_mac_addr(struct ks8842_adapter *adapter, const u8 *mac)
 {
        unsigned long flags;
        unsigned i;
 
        }
 }
 
-static int hw_add_addr(struct ksz_hw *hw, u8 *mac_addr)
+static int hw_add_addr(struct ksz_hw *hw, const u8 *mac_addr)
 {
        int i;
        int j = ADDITIONAL_ENTRIES;
        return -1;
 }
 
-static int hw_del_addr(struct ksz_hw *hw, u8 *mac_addr)
+static int hw_del_addr(struct ksz_hw *hw, const u8 *mac_addr)
 {
        int i;
 
 
        return status;
 }
 
-static int myri10ge_update_mac_address(struct myri10ge_priv *mgp, u8 * addr)
+static int myri10ge_update_mac_address(struct myri10ge_priv *mgp,
+                                      const u8 * addr)
 {
        struct myri10ge_cmd cmd;
        int status;
 
  *  as defined in errno.h file on failure.
  */
 
-static int do_s2io_prog_unicast(struct net_device *dev, u8 *addr)
+static int do_s2io_prog_unicast(struct net_device *dev, const u8 *addr)
 {
        struct s2io_nic *sp = netdev_priv(dev);
        register u64 mac_addr = 0, perm_addr = 0;
 
 static int s2io_poll_msix(struct napi_struct *napi, int budget);
 static int s2io_poll_inta(struct napi_struct *napi, int budget);
 static void s2io_init_pci(struct s2io_nic * sp);
-static int do_s2io_prog_unicast(struct net_device *dev, u8 *addr);
+static int do_s2io_prog_unicast(struct net_device *dev, const u8 *addr);
 static void s2io_alarm_handle(struct timer_list *t);
 static irqreturn_t
 s2io_msix_ring_handle(int irq, void *dev_id);
 
 }
 
 static int
-__nfp_tunnel_offload_mac(struct nfp_app *app, u8 *mac, u16 idx, bool del)
+__nfp_tunnel_offload_mac(struct nfp_app *app, const u8 *mac, u16 idx, bool del)
 {
        struct nfp_tun_mac_addr_offload payload;
 
 }
 
 static struct nfp_tun_offloaded_mac *
-nfp_tunnel_lookup_offloaded_macs(struct nfp_app *app, u8 *mac)
+nfp_tunnel_lookup_offloaded_macs(struct nfp_app *app, const u8 *mac)
 {
        struct nfp_flower_priv *priv = app->priv;
 
 
 static int
 nfp_tunnel_del_shared_mac(struct nfp_app *app, struct net_device *netdev,
-                         u8 *mac, bool mod)
+                         const u8 *mac, bool mod)
 {
        struct nfp_flower_priv *priv = app->priv;
        struct nfp_flower_repr_priv *repr_priv;
 
 /*
  * MAC support functions
  */
-static void __lpc_set_mac(struct netdata_local *pldat, u8 *mac)
+static void __lpc_set_mac(struct netdata_local *pldat, const u8 *mac)
 {
        u32 tmp;
 
 
 }
 
 int qed_llh_add_mac_filter(struct qed_dev *cdev,
-                          u8 ppfid, u8 mac_addr[ETH_ALEN])
+                          u8 ppfid, const u8 mac_addr[ETH_ALEN])
 {
        struct qed_hwfn *p_hwfn = QED_LEADING_HWFN(cdev);
        struct qed_ptt *p_ptt = qed_ptt_acquire(p_hwfn);
 
  * Return: Int.
  */
 int qed_llh_add_mac_filter(struct qed_dev *cdev,
-                          u8 ppfid, u8 mac_addr[ETH_ALEN]);
+                          u8 ppfid, const u8 mac_addr[ETH_ALEN]);
 
 /**
  * qed_llh_remove_mac_filter(): Remove a LLH MAC filter from the given
 
                                      cqe);
 }
 
-static int qed_req_bulletin_update_mac(struct qed_dev *cdev, u8 *mac)
+static int qed_req_bulletin_update_mac(struct qed_dev *cdev, const u8 *mac)
 {
        int i, ret;
 
 
        return status;
 }
 
-static int qed_update_mac(struct qed_dev *cdev, u8 *mac)
+static int qed_update_mac(struct qed_dev *cdev, const u8 *mac)
 {
        struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev);
        struct qed_ptt *ptt;
 
 }
 
 int qed_mcp_ov_update_mac(struct qed_hwfn *p_hwfn,
-                         struct qed_ptt *p_ptt, u8 *mac)
+                         struct qed_ptt *p_ptt, const u8 *mac)
 {
        struct qed_mcp_mb_params mb_params;
        u32 mfw_mac[2];
 
  * Return: Int - 0 - Operation was successul.
  */
 int qed_mcp_ov_update_mac(struct qed_hwfn *p_hwfn,
-                         struct qed_ptt *p_ptt, u8 *mac);
+                         struct qed_ptt *p_ptt, const u8 *mac);
 
 /**
  * qed_mcp_ov_update_wol(): Send WOL mode to MFW.
 
 
 static int qed_roce_ll2_set_mac_filter(struct qed_dev *cdev,
                                       u8 *old_mac_address,
-                                      u8 *new_mac_address)
+                                      const u8 *new_mac_address)
 {
        int rc = 0;
 
 
 
 int
 qed_vf_pf_bulletin_update_mac(struct qed_hwfn *p_hwfn,
-                             u8 *p_mac)
+                             const u8 *p_mac)
 {
        struct qed_vf_iov *p_iov = p_hwfn->vf_iov_info;
        struct vfpf_bulletin_update_mac_tlv *p_req;
 
  *
  * Return: Int.
  */
-int qed_vf_pf_bulletin_update_mac(struct qed_hwfn *p_hwfn, u8 *p_mac);
+int qed_vf_pf_bulletin_update_mac(struct qed_hwfn *p_hwfn, const u8 *p_mac);
 
 #else
 static inline void qed_vf_get_link_params(struct qed_hwfn *p_hwfn,
 }
 
 static inline int qed_vf_pf_bulletin_update_mac(struct qed_hwfn *p_hwfn,
-                                               u8 *p_mac)
+                                               const u8 *p_mac)
 {
        return -EINVAL;
 }
 
 
 static int qede_set_ucast_rx_mac(struct qede_dev *edev,
                                 enum qed_filter_xcast_params_type opcode,
-                                unsigned char mac[ETH_ALEN])
+                                const unsigned char mac[ETH_ALEN])
 {
        struct qed_filter_ucast_params ucast;
 
 
 }
 
 /* set MAC address */
-static void emac_set_mac_address(struct emac_adapter *adpt, u8 *addr)
+static void emac_set_mac_address(struct emac_adapter *adpt, const u8 *addr)
 {
        u32 sta;
 
 
 {
        struct r6040_private *lp = netdev_priv(dev);
        void __iomem *ioaddr = lp->base;
-       u16 *adrp;
+       const u16 *adrp;
 
        /* Stop MAC */
        iowrite16(MSK_INT, ioaddr + MIER);      /* Mask Off Interrupt */
        r6040_reset_mac(lp);
 
        /* Restore MAC Address to MIDx */
-       adrp = (u16 *) dev->dev_addr;
+       adrp = (const u16 *) dev->dev_addr;
        iowrite16(adrp[0], ioaddr + MID_0L);
        iowrite16(adrp[1], ioaddr + MID_0M);
        iowrite16(adrp[2], ioaddr + MID_0H);
 {
        struct r6040_private *lp = netdev_priv(dev);
        void __iomem *ioaddr = lp->base;
-       u16 *adrp;
+       const u16 *adrp;
 
        /* Reset MAC */
        r6040_reset_mac(lp);
 
        /* Restore MAC Address */
-       adrp = (u16 *) dev->dev_addr;
+       adrp = (const u16 *) dev->dev_addr;
        iowrite16(adrp[0], ioaddr + MID_0L);
        iowrite16(adrp[1], ioaddr + MID_0M);
        iowrite16(adrp[2], ioaddr + MID_0H);
        unsigned long flags;
        struct netdev_hw_addr *ha;
        int i;
-       u16 *adrp;
+       const u16 *adrp;
        u16 hash_table[4] = { 0 };
 
        spin_lock_irqsave(&lp->lock, flags);
 
        /* Keep our MAC Address */
-       adrp = (u16 *)dev->dev_addr;
+       adrp = (const u16 *)dev->dev_addr;
        iowrite16(adrp[0], ioaddr + MID_0L);
        iowrite16(adrp[1], ioaddr + MID_0M);
        iowrite16(adrp[2], ioaddr + MID_0H);
 
        /* Set power management mode (e.g. magic frame) */
        void (*pmt)(void __iomem *ioaddr, unsigned long mode);
        /* Set/Get Unicast MAC addresses */
-       void (*set_umac_addr)(void __iomem *ioaddr, unsigned char *addr,
+       void (*set_umac_addr)(void __iomem *ioaddr, const unsigned char *addr,
                              unsigned int reg_n);
        void (*get_umac_addr)(void __iomem *ioaddr, unsigned char *addr,
                              unsigned int reg_n);
 
 }
 
 /* Set/Get Unicast MAC addresses */
-static void sxgbe_core_set_umac_addr(void __iomem *ioaddr, unsigned char *addr,
+static void sxgbe_core_set_umac_addr(void __iomem *ioaddr,
+                                    const unsigned char *addr,
                                     unsigned int reg_n)
 {
        u32 high_word, low_word;
 
 }
 
 int efx_ef10_vport_add_mac(struct efx_nic *efx,
-                          unsigned int port_id, u8 *mac)
+                          unsigned int port_id, const u8 *mac)
 {
        MCDI_DECLARE_BUF(inbuf, MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_LEN);
 
 }
 
 int efx_ef10_vport_del_mac(struct efx_nic *efx,
-                          unsigned int port_id, u8 *mac)
+                          unsigned int port_id, const u8 *mac)
 {
        MCDI_DECLARE_BUF(inbuf, MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_LEN);
 
 
        return rc;
 }
 
-int efx_ef10_sriov_set_vf_mac(struct efx_nic *efx, int vf_i, u8 *mac)
+int efx_ef10_sriov_set_vf_mac(struct efx_nic *efx, int vf_i, const u8 *mac)
 {
        struct efx_ef10_nic_data *nic_data = efx->nic_data;
        struct ef10_vf *vf;
 
 void efx_ef10_sriov_fini(struct efx_nic *efx);
 static inline void efx_ef10_sriov_flr(struct efx_nic *efx, unsigned vf_i) {}
 
-int efx_ef10_sriov_set_vf_mac(struct efx_nic *efx, int vf, u8 *mac);
+int efx_ef10_sriov_set_vf_mac(struct efx_nic *efx, int vf, const u8 *mac);
 
 int efx_ef10_sriov_set_vf_vlan(struct efx_nic *efx, int vf_i,
                               u16 vlan, u8 qos);
 void efx_ef10_vswitching_remove_pf(struct efx_nic *efx);
 void efx_ef10_vswitching_remove_vf(struct efx_nic *efx);
 int efx_ef10_vport_add_mac(struct efx_nic *efx,
-                          unsigned int port_id, u8 *mac);
+                          unsigned int port_id, const u8 *mac);
 int efx_ef10_vport_del_mac(struct efx_nic *efx,
-                          unsigned int port_id, u8 *mac);
+                          unsigned int port_id, const u8 *mac);
 int efx_ef10_vadaptor_alloc(struct efx_nic *efx, unsigned int port_id);
 int efx_ef10_vadaptor_query(struct efx_nic *efx, unsigned int port_id,
                            u32 *port_flags, u32 *vadaptor_flags,
 
        bool (*sriov_wanted)(struct efx_nic *efx);
        void (*sriov_reset)(struct efx_nic *efx);
        void (*sriov_flr)(struct efx_nic *efx, unsigned vf_i);
-       int (*sriov_set_vf_mac)(struct efx_nic *efx, int vf_i, u8 *mac);
+       int (*sriov_set_vf_mac)(struct efx_nic *efx, int vf_i, const u8 *mac);
        int (*sriov_set_vf_vlan)(struct efx_nic *efx, int vf_i, u16 vlan,
                                 u8 qos);
        int (*sriov_set_vf_spoofchk)(struct efx_nic *efx, int vf_i,
 
        destroy_workqueue(vfdi_workqueue);
 }
 
-int efx_siena_sriov_set_vf_mac(struct efx_nic *efx, int vf_i, u8 *mac)
+int efx_siena_sriov_set_vf_mac(struct efx_nic *efx, int vf_i, const u8 *mac)
 {
        struct siena_nic_data *nic_data = efx->nic_data;
        struct siena_vf *vf;
 
 void efx_siena_sriov_reset(struct efx_nic *efx);
 void efx_siena_sriov_flr(struct efx_nic *efx, unsigned flr);
 
-int efx_siena_sriov_set_vf_mac(struct efx_nic *efx, int vf, u8 *mac);
+int efx_siena_sriov_set_vf_mac(struct efx_nic *efx, int vf, const u8 *mac);
 int efx_siena_sriov_set_vf_vlan(struct efx_nic *efx, int vf,
                                u16 vlan, u8 qos);
 int efx_siena_sriov_set_vf_spoofchk(struct efx_nic *efx, int vf,
 
 
        /* load MAC addr to filter data register */
        for (i = 0 ; i < 3 ; i++) {
-               u32 w = (u32) *((u16 *)(net_dev->dev_addr)+i);
+               u32 w = (u32) *((const u16 *)(net_dev->dev_addr)+i);
 
                sw32(rfcr, i << RFADDR_shift);
                sw32(rfdr, w);
 
 
 /* Sets the device MAC address to dev_addr, called with mac_lock held */
 static void
-smsc911x_set_hw_mac_address(struct smsc911x_data *pdata, u8 dev_addr[6])
+smsc911x_set_hw_mac_address(struct smsc911x_data *pdata, const u8 dev_addr[6])
 {
        u32 mac_high16 = (dev_addr[5] << 8) | dev_addr[4];
        u32 mac_low32 = (dev_addr[3] << 24) | (dev_addr[2] << 16) |
 
 static void smsc9420_set_mac_address(struct net_device *dev)
 {
        struct smsc9420_pdata *pd = netdev_priv(dev);
-       u8 *dev_addr = dev->dev_addr;
+       const u8 *dev_addr = dev->dev_addr;
        u32 mac_high16 = (dev_addr[5] << 8) | dev_addr[4];
        u32 mac_low32 = (dev_addr[3] << 24) | (dev_addr[2] << 16) |
            (dev_addr[1] << 8) | dev_addr[0];
 
 int dwxgmac2_setup(struct stmmac_priv *priv);
 int dwxlgmac2_setup(struct stmmac_priv *priv);
 
-void stmmac_set_mac_addr(void __iomem *ioaddr, u8 addr[6],
+void stmmac_set_mac_addr(void __iomem *ioaddr, const u8 addr[6],
                         unsigned int high, unsigned int low);
 void stmmac_get_mac_addr(void __iomem *ioaddr, unsigned char *addr,
                         unsigned int high, unsigned int low);
 void stmmac_set_mac(void __iomem *ioaddr, bool enable);
 
-void stmmac_dwmac4_set_mac_addr(void __iomem *ioaddr, u8 addr[6],
+void stmmac_dwmac4_set_mac_addr(void __iomem *ioaddr, const u8 addr[6],
                                unsigned int high, unsigned int low);
 void stmmac_dwmac4_get_mac_addr(void __iomem *ioaddr, unsigned char *addr,
                                unsigned int high, unsigned int low);
 
  * If addr is NULL, clear the slot
  */
 static void sun8i_dwmac_set_umac_addr(struct mac_device_info *hw,
-                                     unsigned char *addr,
+                                     const unsigned char *addr,
                                      unsigned int reg_n)
 {
        void __iomem *ioaddr = hw->pcsr;
 
 }
 
 static void dwmac1000_set_umac_addr(struct mac_device_info *hw,
-                                   unsigned char *addr,
+                                   const unsigned char *addr,
                                    unsigned int reg_n)
 {
        void __iomem *ioaddr = hw->pcsr;
 
 }
 
 static void dwmac100_set_umac_addr(struct mac_device_info *hw,
-                                  unsigned char *addr,
+                                  const unsigned char *addr,
                                   unsigned int reg_n)
 {
        void __iomem *ioaddr = hw->pcsr;
 
 }
 
 static void dwmac4_set_umac_addr(struct mac_device_info *hw,
-                                unsigned char *addr, unsigned int reg_n)
+                                const unsigned char *addr, unsigned int reg_n)
 {
        void __iomem *ioaddr = hw->pcsr;
 
 
        return ret;
 }
 
-void stmmac_dwmac4_set_mac_addr(void __iomem *ioaddr, u8 addr[6],
+void stmmac_dwmac4_set_mac_addr(void __iomem *ioaddr, const u8 addr[6],
                                unsigned int high, unsigned int low)
 {
        unsigned long data;
 
        do {} while ((readl(ioaddr + DMA_CONTROL) & DMA_CONTROL_FTF));
 }
 
-void stmmac_set_mac_addr(void __iomem *ioaddr, u8 addr[6],
+void stmmac_set_mac_addr(void __iomem *ioaddr, const u8 addr[6],
                         unsigned int high, unsigned int low)
 {
        unsigned long data;
 
 }
 
 static void dwxgmac2_set_umac_addr(struct mac_device_info *hw,
-                                  unsigned char *addr, unsigned int reg_n)
+                                  const unsigned char *addr,
+                                  unsigned int reg_n)
 {
        void __iomem *ioaddr = hw->pcsr;
        u32 value;
 
        /* Set power management mode (e.g. magic frame) */
        void (*pmt)(struct mac_device_info *hw, unsigned long mode);
        /* Set/Get Unicast MAC addresses */
-       void (*set_umac_addr)(struct mac_device_info *hw, unsigned char *addr,
+       void (*set_umac_addr)(struct mac_device_info *hw,
+                             const unsigned char *addr,
                              unsigned int reg_n);
        void (*get_umac_addr)(struct mac_device_info *hw, unsigned char *addr,
                              unsigned int reg_n);
 
        int vlan_id_in;
        int vlan_id_out;
        unsigned char *src;
-       unsigned char *dst;
+       const unsigned char *dst;
        u32 ip_src;
        u32 ip_dst;
        int tcp;
                                         struct net_device *orig_ndev)
 {
        struct stmmac_test_priv *tpriv = pt->af_packet_priv;
+       const unsigned char *dst = tpriv->packet->dst;
        unsigned char *src = tpriv->packet->src;
-       unsigned char *dst = tpriv->packet->dst;
        struct stmmachdr *shdr;
        struct ethhdr *ehdr;
        struct udphdr *uhdr;
 
        void __iomem *cregs        = bp->creg;
        void __iomem *bregs        = bp->bregs;
        __u32 bblk_dvma = (__u32)bp->bblock_dvma;
-       unsigned char *e = &bp->dev->dev_addr[0];
+       const unsigned char *e = &bp->dev->dev_addr[0];
 
        /* Latch current counters into statistics. */
        bigmac_get_counters(bp, bregs);
 
        void __iomem *cregs = qep->qcregs;
        void __iomem *mregs = qep->mregs;
        void __iomem *gregs = qecp->gregs;
-       unsigned char *e = &qep->dev->dev_addr[0];
+       const unsigned char *e = &qep->dev->dev_addr[0];
        __u32 qblk_dvma = (__u32)qep->qblock_dvma;
        u32 tmp;
        int i;
 
        return 0;
 }
 
-static int xlgmac_set_mac_address(struct xlgmac_pdata *pdata, u8 *addr)
+static int xlgmac_set_mac_address(struct xlgmac_pdata *pdata, const u8 *addr)
 {
        unsigned int mac_addr_hi, mac_addr_lo;
 
 
        void (*dev_xmit)(struct xlgmac_channel *channel);
        int (*dev_read)(struct xlgmac_channel *channel);
 
-       int (*set_mac_address)(struct xlgmac_pdata *pdata, u8 *addr);
+       int (*set_mac_address)(struct xlgmac_pdata *pdata, const u8 *addr);
        int (*config_rx_mode)(struct xlgmac_pdata *pdata);
        int (*enable_rx_csum)(struct xlgmac_pdata *pdata);
        int (*disable_rx_csum)(struct xlgmac_pdata *pdata);
 
 static void    tlan_read_and_clear_stats(struct net_device *, int);
 static void    tlan_reset_adapter(struct net_device *);
 static void    tlan_finish_reset(struct net_device *);
-static void    tlan_set_mac(struct net_device *, int areg, char *mac);
+static void    tlan_set_mac(struct net_device *, int areg, const char *mac);
 
 static void    __tlan_phy_print(struct net_device *);
 static void    tlan_phy_print(struct net_device *);
  *
  **************************************************************/
 
-static void tlan_set_mac(struct net_device *dev, int areg, char *mac)
+static void tlan_set_mac(struct net_device *dev, int areg, const char *mac)
 {
        int i;
 
 
        return &dev->stats;
 }
 
-static void tc35815_set_cam_entry(struct net_device *dev, int index, unsigned char *addr)
+static void tc35815_set_cam_entry(struct net_device *dev, int index,
+                                 const unsigned char *addr)
 {
        struct tc35815_local *lp = netdev_priv(dev);
        struct tc35815_regs __iomem *tr =
 
  * This function writes data from a 16-bit aligned buffer to a 32-bit aligned
  * address in the EmacLite device.
  */
-static void xemaclite_aligned_write(void *src_ptr, u32 *dest_ptr,
+static void xemaclite_aligned_write(const void *src_ptr, u32 *dest_ptr,
                                    unsigned length)
 {
+       const u16 *from_u16_ptr;
        u32 align_buffer;
        u32 *to_u32_ptr;
-       u16 *from_u16_ptr, *to_u16_ptr;
+       u16 *to_u16_ptr;
 
        to_u32_ptr = dest_ptr;
        from_u16_ptr = src_ptr;
  * buffers (if configured).
  */
 static void xemaclite_update_address(struct net_local *drvdata,
-                                    u8 *address_ptr)
+                                    const u8 *address_ptr)
 {
        void __iomem *addr;
        u32 reg_data;
 
        unsigned int ioaddr;
 };
 
-static void set_address(struct set_address_info *sa_info, char *addr)
+static void set_address(struct set_address_info *sa_info, const char *addr)
 {
        unsigned int ioaddr = sa_info->ioaddr;
        int i;
 
 static int vsc85xx_wol_set(struct phy_device *phydev,
                           struct ethtool_wolinfo *wol)
 {
+       const u8 *mac_addr = phydev->attached_dev->dev_addr;
        int rc;
        u16 reg_val;
        u8  i;
        u16 pwd[3] = {0, 0, 0};
        struct ethtool_wolinfo *wol_conf = wol;
-       u8 *mac_addr = phydev->attached_dev->dev_addr;
 
        mutex_lock(&phydev->lock);
        rc = phy_select_page(phydev, MSCC_PHY_PAGE_EXTENDED_2);
 
 }
 
 static int aqc111_write_cmd(struct usbnet *dev, u8 cmd, u16 value,
-                           u16 index, u16 size, void *data)
+                           u16 index, u16 size, const void *data)
 {
        int ret;
 
 
 }
 
 static int __ax88179_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-                              u16 size, void *data, int in_pm)
+                              u16 size, const void *data, int in_pm)
 {
        int ret;
        int (*fn)(struct usbnet *, u8, u8, u16, u16, const void *, u16);
 }
 
 static int ax88179_write_cmd_nopm(struct usbnet *dev, u8 cmd, u16 value,
-                                 u16 index, u16 size, void *data)
+                                 u16 index, u16 size, const void *data)
 {
        int ret;
 
 }
 
 static int ax88179_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
-                            u16 size, void *data)
+                            u16 size, const void *data)
 {
        int ret;
 
        u16 tmp16;
        u8 tmp8;
        int (*fnr)(struct usbnet *, u8, u16, u16, u16, void *);
-       int (*fnw)(struct usbnet *, u8, u16, u16, u16, void *);
+       int (*fnw)(struct usbnet *, u8, u16, u16, u16, const void *);
 
        if (!in_pm) {
                fnr = ax88179_read_cmd;
 
  * Receive modes. Broadcast, Multicast, Promisc.
  */
 
-static void catc_multicast(unsigned char *addr, u8 *multicast)
+static void catc_multicast(const unsigned char *addr, u8 *multicast)
 {
        u32 crc;
 
 
                                value, reg, NULL, 0);
 }
 
-static void dm_write_async(struct usbnet *dev, u8 reg, u16 length, void *data)
+static void dm_write_async(struct usbnet *dev, u8 reg, u16 length,
+                          const void *data)
 {
        usbnet_write_cmd_async(dev, DM_WRITE_REGS,
                               USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
 
        return 0;
 }
 
-static int mcs7830_hif_set_mac_address(struct usbnet *dev, unsigned char *addr)
+static int mcs7830_hif_set_mac_address(struct usbnet *dev,
+                                      const unsigned char *addr)
 {
        int ret = mcs7830_set_reg(dev, HIF_REG_ETHERNET_ADDR, ETH_ALEN, addr);
 
 
                                value, reg, NULL, 0);
 }
 
-static void sr_write_async(struct usbnet *dev, u8 reg, u16 length, void *data)
+static void sr_write_async(struct usbnet *dev, u8 reg, u16 length,
+                          const void *data)
 {
        usbnet_write_cmd_async(dev, SR_WR_REGS, SR_REQ_WR_REG,
                               0, reg, data, length);
 
        int (*configure_arfs_searcher)(struct qed_dev *cdev,
                                       enum qed_filter_config_mode mode);
        int (*get_coalesce)(struct qed_dev *cdev, u16 *coal, void *handle);
-       int (*req_bulletin_update_mac)(struct qed_dev *cdev, u8 *mac);
+       int (*req_bulletin_update_mac)(struct qed_dev *cdev, const u8 *mac);
 };
 
 const struct qed_eth_ops *qed_get_eth_ops(void);
 
  *
  * Return: Int.
  */
-       int (*update_mac)(struct qed_dev *cdev, u8 *mac);
+       int (*update_mac)(struct qed_dev *cdev, const u8 *mac);
 
 /**
  * update_mtu(): API to inform the change in the mtu.
 
                             u8 connection_handle,
                             struct qed_ll2_stats *p_stats);
        int (*ll2_set_mac_filter)(struct qed_dev *cdev,
-                                 u8 *old_mac_address, u8 *new_mac_address);
+                                 u8 *old_mac_address,
+                                 const u8 *new_mac_address);
 
        int (*iwarp_set_engine_affin)(struct qed_dev *cdev, bool b_reset);