mad.c (320438301b85038e995b5a40a24c43cbc0ed4909) mad.c (62ede7779904bc75bdd84f1ff0016113956ce3b4)
1/*
2 * Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
3 *
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:

--- 155 unchanged lines hidden (view full) ---

164 (in_wc->wc_flags & IB_WC_GRH ? 0x80 : 0);
165 ext_info->pkey = cpu_to_be16(in_wc->pkey_index);
166
167 if (in_grh)
168 memcpy(ext_info->grh, in_grh, 40);
169
170 op_modifier |= 0x4;
171
1/*
2 * Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
3 *
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:

--- 155 unchanged lines hidden (view full) ---

164 (in_wc->wc_flags & IB_WC_GRH ? 0x80 : 0);
165 ext_info->pkey = cpu_to_be16(in_wc->pkey_index);
166
167 if (in_grh)
168 memcpy(ext_info->grh, in_grh, 40);
169
170 op_modifier |= 0x4;
171
172 in_modifier |= ib_slid_cpu16(in_wc->slid) << 16;
172 in_modifier |= ib_lid_cpu16(in_wc->slid) << 16;
173 }
174
175 err = mlx4_cmd_box(dev->dev, inmailbox->dma, outmailbox->dma, in_modifier,
176 mlx4_is_master(dev->dev) ? (op_modifier & ~0x8) : op_modifier,
177 MLX4_CMD_MAD_IFC, MLX4_CMD_TIME_CLASS_C,
178 (op_modifier & 0x8) ? MLX4_CMD_NATIVE : MLX4_CMD_WRAPPED);
179
180 if (!err)

--- 439 unchanged lines hidden (view full) ---

620 vlan = wc->vlan_id;
621 }
622
623 tun_mad->hdr.sl_vid = cpu_to_be16(vlan);
624 memcpy((char *)&tun_mad->hdr.mac_31_0, &(wc->smac[0]), 4);
625 memcpy((char *)&tun_mad->hdr.slid_mac_47_32, &(wc->smac[4]), 2);
626 } else {
627 tun_mad->hdr.sl_vid = cpu_to_be16(((u16)(wc->sl)) << 12);
173 }
174
175 err = mlx4_cmd_box(dev->dev, inmailbox->dma, outmailbox->dma, in_modifier,
176 mlx4_is_master(dev->dev) ? (op_modifier & ~0x8) : op_modifier,
177 MLX4_CMD_MAD_IFC, MLX4_CMD_TIME_CLASS_C,
178 (op_modifier & 0x8) ? MLX4_CMD_NATIVE : MLX4_CMD_WRAPPED);
179
180 if (!err)

--- 439 unchanged lines hidden (view full) ---

620 vlan = wc->vlan_id;
621 }
622
623 tun_mad->hdr.sl_vid = cpu_to_be16(vlan);
624 memcpy((char *)&tun_mad->hdr.mac_31_0, &(wc->smac[0]), 4);
625 memcpy((char *)&tun_mad->hdr.slid_mac_47_32, &(wc->smac[4]), 2);
626 } else {
627 tun_mad->hdr.sl_vid = cpu_to_be16(((u16)(wc->sl)) << 12);
628 tun_mad->hdr.slid_mac_47_32 = ib_slid_be16(wc->slid);
628 tun_mad->hdr.slid_mac_47_32 = ib_lid_be16(wc->slid);
629 }
630
631 ib_dma_sync_single_for_device(&dev->ib_dev,
632 tun_qp->tx_ring[tun_tx_ix].buf.map,
633 sizeof (struct mlx4_rcv_tunnel_mad),
634 DMA_TO_DEVICE);
635
636 list.addr = tun_qp->tx_ring[tun_tx_ix].buf.map;

--- 184 unchanged lines hidden (view full) ---

821 be64_to_cpu(in_grh->sgid.global.subnet_prefix),
822 be64_to_cpu(in_grh->sgid.global.interface_id));
823 pr_debug("dgid_hi:0x%016llx dgid_lo:0x%016llx\n",
824 be64_to_cpu(in_grh->dgid.global.subnet_prefix),
825 be64_to_cpu(in_grh->dgid.global.interface_id));
826 }
827 }
828
629 }
630
631 ib_dma_sync_single_for_device(&dev->ib_dev,
632 tun_qp->tx_ring[tun_tx_ix].buf.map,
633 sizeof (struct mlx4_rcv_tunnel_mad),
634 DMA_TO_DEVICE);
635
636 list.addr = tun_qp->tx_ring[tun_tx_ix].buf.map;

--- 184 unchanged lines hidden (view full) ---

821 be64_to_cpu(in_grh->sgid.global.subnet_prefix),
822 be64_to_cpu(in_grh->sgid.global.interface_id));
823 pr_debug("dgid_hi:0x%016llx dgid_lo:0x%016llx\n",
824 be64_to_cpu(in_grh->dgid.global.subnet_prefix),
825 be64_to_cpu(in_grh->dgid.global.interface_id));
826 }
827 }
828
829 slid = in_wc ? ib_slid_cpu16(in_wc->slid) : be16_to_cpu(IB_LID_PERMISSIVE);
829 slid = in_wc ? ib_lid_cpu16(in_wc->slid) : be16_to_cpu(IB_LID_PERMISSIVE);
830
831 if (in_mad->mad_hdr.method == IB_MGMT_METHOD_TRAP && slid == 0) {
832 forward_trap(to_mdev(ibdev), port_num, in_mad);
833 return IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_CONSUMED;
834 }
835
836 if (in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED ||
837 in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) {

--- 17 unchanged lines hidden (view full) ---

855 } else
856 return IB_MAD_RESULT_SUCCESS;
857
858 if ((in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED ||
859 in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) &&
860 in_mad->mad_hdr.method == IB_MGMT_METHOD_SET &&
861 in_mad->mad_hdr.attr_id == IB_SMP_ATTR_PORT_INFO &&
862 !ib_query_port(ibdev, port_num, &pattr))
830
831 if (in_mad->mad_hdr.method == IB_MGMT_METHOD_TRAP && slid == 0) {
832 forward_trap(to_mdev(ibdev), port_num, in_mad);
833 return IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_CONSUMED;
834 }
835
836 if (in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED ||
837 in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) {

--- 17 unchanged lines hidden (view full) ---

855 } else
856 return IB_MAD_RESULT_SUCCESS;
857
858 if ((in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED ||
859 in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) &&
860 in_mad->mad_hdr.method == IB_MGMT_METHOD_SET &&
861 in_mad->mad_hdr.attr_id == IB_SMP_ATTR_PORT_INFO &&
862 !ib_query_port(ibdev, port_num, &pattr))
863 prev_lid = (u16)pattr.lid;
863 prev_lid = ib_lid_cpu16(pattr.lid);
864
865 err = mlx4_MAD_IFC(to_mdev(ibdev),
866 (mad_flags & IB_MAD_IGNORE_MKEY ? MLX4_MAD_IFC_IGNORE_MKEY : 0) |
867 (mad_flags & IB_MAD_IGNORE_BKEY ? MLX4_MAD_IFC_IGNORE_BKEY : 0) |
868 MLX4_MAD_IFC_NET_VIEW,
869 port_num, in_wc, in_grh, in_mad, out_mad);
870 if (err)
871 return IB_MAD_RESULT_FAILURE;

--- 1513 unchanged lines hidden ---
864
865 err = mlx4_MAD_IFC(to_mdev(ibdev),
866 (mad_flags & IB_MAD_IGNORE_MKEY ? MLX4_MAD_IFC_IGNORE_MKEY : 0) |
867 (mad_flags & IB_MAD_IGNORE_BKEY ? MLX4_MAD_IFC_IGNORE_BKEY : 0) |
868 MLX4_MAD_IFC_NET_VIEW,
869 port_num, in_wc, in_grh, in_mad, out_mad);
870 if (err)
871 return IB_MAD_RESULT_FAILURE;

--- 1513 unchanged lines hidden ---