Commit 53544396 authored by Vadim Lomovtsev's avatar Vadim Lomovtsev Committed by David S. Miller

net: thunderx: rework xcast message structure to make it fit into 64 bit

To communicate to PF each of ThunderX NIC VF uses mailbox which is
pair of 64 bit registers available to both VFn and PF.

This commit is to change the xcast message structure in order to
fit it into 64 bit.
Signed-off-by: default avatarVadim Lomovtsev <vlomovtsev@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7db730d9
...@@ -577,10 +577,8 @@ struct set_ptp { ...@@ -577,10 +577,8 @@ struct set_ptp {
struct xcast { struct xcast {
u8 msg; u8 msg;
union {
u8 mode; u8 mode;
u64 mac; u64 mac:48;
} data;
}; };
/* 128 bit shared memory between PF and each VF */ /* 128 bit shared memory between PF and each VF */
......
...@@ -1094,7 +1094,7 @@ static void nic_handle_mbx_intr(struct nicpf *nic, int vf) ...@@ -1094,7 +1094,7 @@ static void nic_handle_mbx_intr(struct nicpf *nic, int vf)
bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]);
lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]);
bgx_set_dmac_cam_filter(nic->node, bgx, lmac, bgx_set_dmac_cam_filter(nic->node, bgx, lmac,
mbx.xcast.data.mac, mbx.xcast.mac,
vf < NIC_VF_PER_MBX_REG ? vf : vf < NIC_VF_PER_MBX_REG ? vf :
vf - NIC_VF_PER_MBX_REG); vf - NIC_VF_PER_MBX_REG);
break; break;
...@@ -1106,7 +1106,7 @@ static void nic_handle_mbx_intr(struct nicpf *nic, int vf) ...@@ -1106,7 +1106,7 @@ static void nic_handle_mbx_intr(struct nicpf *nic, int vf)
} }
bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]);
lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]);
bgx_set_xcast_mode(nic->node, bgx, lmac, mbx.xcast.data.mode); bgx_set_xcast_mode(nic->node, bgx, lmac, mbx.xcast.mode);
break; break;
default: default:
dev_err(&nic->pdev->dev, dev_err(&nic->pdev->dev,
......
...@@ -1961,7 +1961,7 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs, ...@@ -1961,7 +1961,7 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs,
* its' own LMAC to the filter to accept packets for it. * its' own LMAC to the filter to accept packets for it.
*/ */
mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST; mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST;
mbx.xcast.data.mac = 0; mbx.xcast.mac = 0;
if (nicvf_send_msg_to_pf(nic, &mbx) < 0) if (nicvf_send_msg_to_pf(nic, &mbx) < 0)
goto free_mc; goto free_mc;
} }
...@@ -1971,7 +1971,7 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs, ...@@ -1971,7 +1971,7 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs,
/* now go through kernel list of MACs and add them one by one */ /* now go through kernel list of MACs and add them one by one */
for (idx = 0; idx < mc_addrs->count; idx++) { for (idx = 0; idx < mc_addrs->count; idx++) {
mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST; mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST;
mbx.xcast.data.mac = mc_addrs->mc[idx]; mbx.xcast.mac = mc_addrs->mc[idx];
if (nicvf_send_msg_to_pf(nic, &mbx) < 0) if (nicvf_send_msg_to_pf(nic, &mbx) < 0)
goto free_mc; goto free_mc;
} }
...@@ -1979,7 +1979,7 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs, ...@@ -1979,7 +1979,7 @@ static void __nicvf_set_rx_mode_task(u8 mode, struct xcast_addr_list *mc_addrs,
/* and finally set rx mode for PF accordingly */ /* and finally set rx mode for PF accordingly */
mbx.xcast.msg = NIC_MBOX_MSG_SET_XCAST; mbx.xcast.msg = NIC_MBOX_MSG_SET_XCAST;
mbx.xcast.data.mode = mode; mbx.xcast.mode = mode;
nicvf_send_msg_to_pf(nic, &mbx); nicvf_send_msg_to_pf(nic, &mbx);
free_mc: free_mc:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment