lkml.org 
[lkml]   [2004]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH][v5][6/24] Add InfiniBand MAD (management datagram) support (private headers)
    Add MAD layer private implementation headers.

    Signed-off-by: Roland Dreier <roland@topspin.com>


    --- /dev/null 1970-01-01 00:00:00.000000000 +0000
    +++ linux-bk/drivers/infiniband/core/agent.h 2004-12-27 21:48:20.224989180 -0800
    @@ -0,0 +1,55 @@
    +/*
    + * Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved.
    + * Copyright (c) 2004 Infinicon Corporation. All rights reserved.
    + * Copyright (c) 2004 Intel Corporation. All rights reserved.
    + * Copyright (c) 2004 Topspin Corporation. All rights reserved.
    + * Copyright (c) 2004 Voltaire Corporation. All rights reserved.
    + *
    + * This software is available to you under a choice of one of two
    + * licenses. You may choose to be licensed under the terms of the GNU
    + * General Public License (GPL) Version 2, available from the file
    + * COPYING in the main directory of this source tree, or the
    + * OpenIB.org BSD license below:
    + *
    + * Redistribution and use in source and binary forms, with or
    + * without modification, are permitted provided that the following
    + * conditions are met:
    + *
    + * - Redistributions of source code must retain the above
    + * copyright notice, this list of conditions and the following
    + * disclaimer.
    + *
    + * - Redistributions in binary form must reproduce the above
    + * copyright notice, this list of conditions and the following
    + * disclaimer in the documentation and/or other materials
    + * provided with the distribution.
    + *
    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
    + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    + * SOFTWARE.
    + *
    + * $Id: agent.h 1389 2004-12-27 22:56:47Z roland $
    + */
    +
    +#ifndef __AGENT_H_
    +#define __AGENT_H_
    +
    +extern spinlock_t ib_agent_port_list_lock;
    +
    +extern int ib_agent_port_open(struct ib_device *device,
    + int port_num);
    +
    +extern int ib_agent_port_close(struct ib_device *device, int port_num);
    +
    +extern int agent_send(struct ib_mad_private *mad,
    + struct ib_grh *grh,
    + struct ib_wc *wc,
    + struct ib_device *device,
    + int port_num);
    +
    +#endif /* __AGENT_H_ */
    --- /dev/null 1970-01-01 00:00:00.000000000 +0000
    +++ linux-bk/drivers/infiniband/core/agent_priv.h 2004-12-27 21:48:20.250985354 -0800
    @@ -0,0 +1,64 @@
    +/*
    + * Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved.
    + * Copyright (c) 2004 Infinicon Corporation. All rights reserved.
    + * Copyright (c) 2004 Intel Corporation. All rights reserved.
    + * Copyright (c) 2004 Topspin Corporation. All rights reserved.
    + * Copyright (c) 2004 Voltaire Corporation. All rights reserved.
    + *
    + * This software is available to you under a choice of one of two
    + * licenses. You may choose to be licensed under the terms of the GNU
    + * General Public License (GPL) Version 2, available from the file
    + * COPYING in the main directory of this source tree, or the
    + * OpenIB.org BSD license below:
    + *
    + * Redistribution and use in source and binary forms, with or
    + * without modification, are permitted provided that the following
    + * conditions are met:
    + *
    + * - Redistributions of source code must retain the above
    + * copyright notice, this list of conditions and the following
    + * disclaimer.
    + *
    + * - Redistributions in binary form must reproduce the above
    + * copyright notice, this list of conditions and the following
    + * disclaimer in the documentation and/or other materials
    + * provided with the distribution.
    + *
    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
    + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    + * SOFTWARE.
    + *
    + * $Id: agent_priv.h 1389 2004-12-27 22:56:47Z roland $
    + */
    +
    +#ifndef __IB_AGENT_PRIV_H__
    +#define __IB_AGENT_PRIV_H__
    +
    +#include <linux/pci.h>
    +
    +#define SPFX "ib_agent: "
    +
    +struct ib_agent_send_wr {
    + struct list_head send_list;
    + struct ib_ah *ah;
    + struct ib_mad_private *mad;
    + DECLARE_PCI_UNMAP_ADDR(mapping)
    +};
    +
    +struct ib_agent_port_private {
    + struct list_head port_list;
    + struct list_head send_posted_list;
    + spinlock_t send_list_lock;
    + int port_num;
    + struct ib_mad_agent *dr_smp_agent; /* DR SM class */
    + struct ib_mad_agent *lr_smp_agent; /* LR SM class */
    + struct ib_mad_agent *perf_mgmt_agent; /* PerfMgmt class */
    + struct ib_mr *mr;
    +};
    +
    +#endif /* __IB_AGENT_PRIV_H__ */
    --- /dev/null 1970-01-01 00:00:00.000000000 +0000
    +++ linux-bk/drivers/infiniband/core/mad_priv.h 2004-12-27 21:48:20.321974904 -0800
    @@ -0,0 +1,194 @@
    +/*
    + * Copyright (c) 2004, Voltaire, Inc. All rights reserved.
    + *
    + * This software is available to you under a choice of one of two
    + * licenses. You may choose to be licensed under the terms of the GNU
    + * General Public License (GPL) Version 2, available from the file
    + * COPYING in the main directory of this source tree, or the
    + * OpenIB.org BSD license below:
    + *
    + * Redistribution and use in source and binary forms, with or
    + * without modification, are permitted provided that the following
    + * conditions are met:
    + *
    + * - Redistributions of source code must retain the above
    + * copyright notice, this list of conditions and the following
    + * disclaimer.
    + *
    + * - Redistributions in binary form must reproduce the above
    + * copyright notice, this list of conditions and the following
    + * disclaimer in the documentation and/or other materials
    + * provided with the distribution.
    + *
    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
    + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    + * SOFTWARE.
    + *
    + * $Id: mad_priv.h 1389 2004-12-27 22:56:47Z roland $
    + */
    +
    +#ifndef __IB_MAD_PRIV_H__
    +#define __IB_MAD_PRIV_H__
    +
    +#include <linux/pci.h>
    +#include <linux/kthread.h>
    +#include <linux/workqueue.h>
    +#include <ib_mad.h>
    +#include <ib_smi.h>
    +
    +
    +#define PFX "ib_mad: "
    +
    +#define IB_MAD_QPS_CORE 2 /* Always QP0 and QP1 as a minimum */
    +
    +/* QP and CQ parameters */
    +#define IB_MAD_QP_SEND_SIZE 128
    +#define IB_MAD_QP_RECV_SIZE 512
    +#define IB_MAD_SEND_REQ_MAX_SG 2
    +#define IB_MAD_RECV_REQ_MAX_SG 1
    +
    +#define IB_MAD_SEND_Q_PSN 0
    +
    +/* Registration table sizes */
    +#define MAX_MGMT_CLASS 80
    +#define MAX_MGMT_VERSION 8
    +#define MAX_MGMT_OUI 8
    +#define MAX_MGMT_VENDOR_RANGE2 IB_MGMT_CLASS_VENDOR_RANGE2_END - \
    + IB_MGMT_CLASS_VENDOR_RANGE2_START + 1
    +
    +struct ib_mad_list_head {
    + struct list_head list;
    + struct ib_mad_queue *mad_queue;
    +};
    +
    +struct ib_mad_private_header {
    + struct ib_mad_list_head mad_list;
    + struct ib_mad_recv_wc recv_wc;
    + DECLARE_PCI_UNMAP_ADDR(mapping)
    +} __attribute__ ((packed));
    +
    +struct ib_mad_private {
    + struct ib_mad_private_header header;
    + struct ib_grh grh;
    + union {
    + struct ib_mad mad;
    + struct ib_rmpp_mad rmpp_mad;
    + struct ib_smp smp;
    + } mad;
    +} __attribute__ ((packed));
    +
    +struct ib_mad_agent_private {
    + struct list_head agent_list;
    + struct ib_mad_agent agent;
    + struct ib_mad_reg_req *reg_req;
    + struct ib_mad_qp_info *qp_info;
    +
    + spinlock_t lock;
    + struct list_head send_list;
    + struct list_head wait_list;
    + struct work_struct timed_work;
    + unsigned long timeout;
    + struct list_head local_list;
    + struct work_struct local_work;
    +
    + atomic_t refcount;
    + wait_queue_head_t wait;
    + u8 rmpp_version;
    +};
    +
    +struct ib_mad_snoop_private {
    + struct ib_mad_agent agent;
    + struct ib_mad_qp_info *qp_info;
    + int snoop_index;
    + int mad_snoop_flags;
    + atomic_t refcount;
    + wait_queue_head_t wait;
    +};
    +
    +struct ib_mad_send_wr_private {
    + struct ib_mad_list_head mad_list;
    + struct list_head agent_list;
    + struct ib_mad_agent *agent;
    + struct ib_send_wr send_wr;
    + struct ib_sge sg_list[IB_MAD_SEND_REQ_MAX_SG];
    + u64 wr_id; /* client WR ID */
    + u64 tid;
    + unsigned long timeout;
    + int retry;
    + int refcount;
    + enum ib_wc_status status;
    +};
    +
    +struct ib_mad_local_private {
    + struct list_head completion_list;
    + struct ib_mad_private *mad_priv;
    + struct ib_send_wr send_wr;
    + struct ib_sge sg_list[IB_MAD_SEND_REQ_MAX_SG];
    + u64 wr_id; /* client WR ID */
    + u64 tid;
    +};
    +
    +struct ib_mad_mgmt_method_table {
    + struct ib_mad_agent_private *agent[IB_MGMT_MAX_METHODS];
    +};
    +
    +struct ib_mad_mgmt_class_table {
    + struct ib_mad_mgmt_method_table *method_table[MAX_MGMT_CLASS];
    +};
    +
    +struct ib_mad_mgmt_vendor_class {
    + u8 oui[MAX_MGMT_OUI][3];
    + struct ib_mad_mgmt_method_table *method_table[MAX_MGMT_OUI];
    +};
    +
    +struct ib_mad_mgmt_vendor_class_table {
    + struct ib_mad_mgmt_vendor_class *vendor_class[MAX_MGMT_VENDOR_RANGE2];
    +};
    +
    +struct ib_mad_mgmt_version_table {
    + struct ib_mad_mgmt_class_table *class;
    + struct ib_mad_mgmt_vendor_class_table *vendor;
    +};
    +
    +struct ib_mad_queue {
    + spinlock_t lock;
    + struct list_head list;
    + int count;
    + int max_active;
    + struct ib_mad_qp_info *qp_info;
    +};
    +
    +struct ib_mad_qp_info {
    + struct ib_mad_port_private *port_priv;
    + struct ib_qp *qp;
    + struct ib_mad_queue send_queue;
    + struct ib_mad_queue recv_queue;
    + struct list_head overflow_list;
    + spinlock_t snoop_lock;
    + struct ib_mad_snoop_private **snoop_table;
    + int snoop_table_size;
    + atomic_t snoop_count;
    +};
    +
    +struct ib_mad_port_private {
    + struct list_head port_list;
    + struct ib_device *device;
    + int port_num;
    + struct ib_cq *cq;
    + struct ib_pd *pd;
    + struct ib_mr *mr;
    +
    + spinlock_t reg_lock;
    + struct ib_mad_mgmt_version_table version[MAX_MGMT_VERSION];
    + struct list_head agent_list;
    + struct workqueue_struct *wq;
    + struct work_struct work;
    + struct ib_mad_qp_info qp_info[IB_MAD_QPS_CORE];
    +};
    +
    +#endif /* __IB_MAD_PRIV_H__ */
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:09    [W:0.050 / U:62.840 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site