net: thunderx: rework mac address handling
authorAleksey Makarov <aleksey.makarov@caviumnetworks.com>
Tue, 2 Jun 2015 18:00:21 +0000 (11:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 2 Jun 2015 19:49:29 +0000 (12:49 -0700)
This fixes sparse message:

drivers/net/ethernet/cavium/thunder/nicvf_main.c:385:40: sparse: cast to
restricted __le64

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Aleksey Makarov <aleksey.makarov@caviumnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cavium/thunder/nic.h
drivers/net/ethernet/cavium/thunder/nic_main.c
drivers/net/ethernet/cavium/thunder/nicvf_main.c
drivers/net/ethernet/cavium/thunder/thunder_bgx.c
drivers/net/ethernet/cavium/thunder/thunder_bgx.h

index 4f426db54e42e6d922a08b6e308467d74830a64d..6479ce21f64c678203c2e1950ecbba70d781e45e 100644 (file)
@@ -301,7 +301,7 @@ struct nic_cfg_msg {
        u8    vf_id;
        u8    tns_mode;
        u8    node_id;
-       u64   mac_addr;
+       u8    mac_addr[ETH_ALEN];
 };
 
 /* Qset configuration */
@@ -331,7 +331,7 @@ struct sq_cfg_msg {
 struct set_mac_msg {
        u8    msg;
        u8    vf_id;
-       u64   addr;
+       u8    mac_addr[ETH_ALEN];
 };
 
 /* Set Maximum frame size */
index 3ca7ad882c103aa00abd97a2d59156d13302cc46..6e0c03169a55eb7891215e5966f9bfc5d3c3a3f2 100644 (file)
@@ -492,7 +492,6 @@ static void nic_handle_mbx_intr(struct nicpf *nic, int vf)
        u64 *mbx_data;
        u64 mbx_addr;
        u64 reg_addr;
-       u64 mac_addr;
        int bgx, lmac;
        int i;
        int ret = 0;
@@ -555,12 +554,7 @@ static void nic_handle_mbx_intr(struct nicpf *nic, int vf)
                lmac = mbx.mac.vf_id;
                bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]);
                lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]);
-#ifdef __BIG_ENDIAN
-               mac_addr = cpu_to_be64(mbx.nic_cfg.mac_addr) << 16;
-#else
-               mac_addr = cpu_to_be64(mbx.nic_cfg.mac_addr) >> 16;
-#endif
-               bgx_set_lmac_mac(nic->node, bgx, lmac, (u8 *)&mac_addr);
+               bgx_set_lmac_mac(nic->node, bgx, lmac, mbx.mac.mac_addr);
                break;
        case NIC_MBOX_MSG_SET_MAX_FRS:
                ret = nic_update_hw_frs(nic, mbx.frs.max_frs,
index 989f005be9fdb8936f83f2533b22a4ad7fefb448..54bba86c95349e393a726c6e58ae8aced57d77a1 100644 (file)
@@ -197,8 +197,7 @@ static void  nicvf_handle_mbx_intr(struct nicvf *nic)
                nic->vf_id = mbx.nic_cfg.vf_id & 0x7F;
                nic->tns_mode = mbx.nic_cfg.tns_mode & 0x7F;
                nic->node = mbx.nic_cfg.node_id;
-               ether_addr_copy(nic->netdev->dev_addr,
-                               (u8 *)&mbx.nic_cfg.mac_addr);
+               ether_addr_copy(nic->netdev->dev_addr, mbx.nic_cfg.mac_addr);
                nic->link_up = false;
                nic->duplex = 0;
                nic->speed = 0;
@@ -248,13 +247,10 @@ static void  nicvf_handle_mbx_intr(struct nicvf *nic)
 static int nicvf_hw_set_mac_addr(struct nicvf *nic, struct net_device *netdev)
 {
        union nic_mbx mbx = {};
-       int i;
 
        mbx.mac.msg = NIC_MBOX_MSG_SET_MAC;
        mbx.mac.vf_id = nic->vf_id;
-       for (i = 0; i < ETH_ALEN; i++)
-               mbx.mac.addr = (mbx.mac.addr << 8) |
-                                    netdev->dev_addr[i];
+       ether_addr_copy(mbx.mac.mac_addr, netdev->dev_addr);
 
        return nicvf_send_msg_to_pf(nic, &mbx);
 }
index cde604a93d5d85ff7212568aedad2fc1b5f1534c..a58924cd47ed433c7b03b1968cd23bac13514a8e 100644 (file)
@@ -163,7 +163,7 @@ void bgx_get_lmac_link_state(int node, int bgx_idx, int lmacid, void *status)
 }
 EXPORT_SYMBOL(bgx_get_lmac_link_state);
 
-const char *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid)
+const u8 *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid)
 {
        struct bgx *bgx = bgx_vnic[(node * MAX_BGX_PER_CN88XX) + bgx_idx];
 
@@ -174,7 +174,7 @@ const char *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid)
 }
 EXPORT_SYMBOL(bgx_get_lmac_mac);
 
-void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const char *mac)
+void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const u8 *mac)
 {
        struct bgx *bgx = bgx_vnic[(node * MAX_BGX_PER_CN88XX) + bgx_idx];
 
index f9e2170c488a86730c1416a93657b899a5807360..ba4f53b7cc2c1ec97e1b936fe9bfc98e1cec6a59 100644 (file)
@@ -183,8 +183,8 @@ enum MCAST_MODE {
 void bgx_add_dmac_addr(u64 dmac, int node, int bgx_idx, int lmac);
 unsigned bgx_get_map(int node);
 int bgx_get_lmac_count(int node, int bgx);
-const char *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid);
-void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const char *mac);
+const u8 *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid);
+void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const u8 *mac);
 void bgx_get_lmac_link_state(int node, int bgx_idx, int lmacid, void *status);
 u64 bgx_get_rx_stats(int node, int bgx_idx, int lmac, int idx);
 u64 bgx_get_tx_stats(int node, int bgx_idx, int lmac, int idx);