mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	For devices which support OPA MADs
   1) Use previously defined SMP support functions.
   2) Pass correct base version to ib_create_send_mad when processing OPA MADs.
   3) Process out_mad_key_index returned by agents for a response.  This is
      necessary because OPA SMP packets must carry a valid pkey.
   4) Carry the correct segment size (OPA vs IBTA) of RMPP messages within
      ib_mad_recv_wc.
   5) Handle variable length OPA MADs by:
        * Adjusting the 'fake' WC for locally routed SMP's to represent the
          proper incoming byte_len
        * out_mad_size is used from the local HCA agents
                1) when sending agent responses on the wire
                2) when passing responses through the local_completions
		   function
	NOTE: wc.byte_len includes the GRH length and therefore is different
	      from the in_mad_size specified to the local HCA agents.
	      out_mad_size should _not_ include the GRH length as it is added
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
		
	
			
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * 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.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __AGENT_H_
 | 
						|
#define __AGENT_H_
 | 
						|
 | 
						|
#include <linux/err.h>
 | 
						|
#include <rdma/ib_mad.h>
 | 
						|
 | 
						|
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 void agent_send_response(const struct ib_mad_hdr *mad_hdr, const struct ib_grh *grh,
 | 
						|
				const struct ib_wc *wc, const struct ib_device *device,
 | 
						|
				int port_num, int qpn, size_t resp_mad_len, bool opa);
 | 
						|
 | 
						|
#endif	/* __AGENT_H_ */
 |