The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/mlx4/driver.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2006 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:
    9  *
   10  *     Redistribution and use in source and binary forms, with or
   11  *     without modification, are permitted provided that the following
   12  *     conditions are met:
   13  *
   14  *      - Redistributions of source code must retain the above
   15  *        copyright notice, this list of conditions and the following
   16  *        disclaimer.
   17  *
   18  *      - Redistributions in binary form must reproduce the above
   19  *        copyright notice, this list of conditions and the following
   20  *        disclaimer in the documentation and/or other materials
   21  *        provided with the distribution.
   22  *
   23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   24  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   25  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   26  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
   27  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
   28  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   29  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
   30  * SOFTWARE.
   31  */
   32 
   33 #ifndef MLX4_DRIVER_H
   34 #define MLX4_DRIVER_H
   35 
   36 #include <dev/mlx4/device.h>
   37 
   38 struct mlx4_dev;
   39 
   40 #define MLX4_MAC_MASK      0xffffffffffffULL
   41 
   42 enum mlx4_dev_event {
   43         MLX4_DEV_EVENT_CATASTROPHIC_ERROR,
   44         MLX4_DEV_EVENT_PORT_UP,
   45         MLX4_DEV_EVENT_PORT_DOWN,
   46         MLX4_DEV_EVENT_PORT_REINIT,
   47         MLX4_DEV_EVENT_PORT_MGMT_CHANGE,
   48         MLX4_DEV_EVENT_SLAVE_INIT,
   49         MLX4_DEV_EVENT_SLAVE_SHUTDOWN,
   50 };
   51 
   52 enum {
   53         MLX4_INTFF_BONDING      = 1 << 0
   54 };
   55 
   56 struct mlx4_interface {
   57         void *                  (*add)   (struct mlx4_dev *dev);
   58         void                    (*remove)(struct mlx4_dev *dev, void *context);
   59         void                    (*event) (struct mlx4_dev *dev, void *context,
   60                                           enum mlx4_dev_event event, unsigned long param);
   61         void *                  (*get_dev)(struct mlx4_dev *dev, void *context, u8 port);
   62         void                    (*activate)(struct mlx4_dev *dev, void *context);
   63         struct list_head        list;
   64         enum mlx4_protocol      protocol;
   65         int                     flags;
   66 };
   67 
   68 int mlx4_register_interface(struct mlx4_interface *intf);
   69 void mlx4_unregister_interface(struct mlx4_interface *intf);
   70 
   71 int mlx4_bond(struct mlx4_dev *dev);
   72 int mlx4_unbond(struct mlx4_dev *dev);
   73 static inline int mlx4_is_bonded(struct mlx4_dev *dev)
   74 {
   75         return !!(dev->flags & MLX4_FLAG_BONDED);
   76 }
   77 
   78 static inline int mlx4_is_mf_bonded(struct mlx4_dev *dev)
   79 {
   80         return (mlx4_is_bonded(dev) && mlx4_is_mfunc(dev));
   81 }
   82 
   83 struct mlx4_port_map {
   84         u8      port1;
   85         u8      port2;
   86 };
   87 
   88 int mlx4_port_map_set(struct mlx4_dev *dev, struct mlx4_port_map *v2p);
   89 
   90 void *mlx4_get_protocol_dev(struct mlx4_dev *dev, enum mlx4_protocol proto, int port);
   91 
   92 static inline u64 mlx4_mac_to_u64(const u8 *addr)
   93 {
   94         u64 mac = 0;
   95         int i;
   96 
   97         for (i = 0; i < ETH_ALEN; i++) {
   98                 mac <<= 8;
   99                 mac |= addr[i];
  100         }
  101         return mac;
  102 }
  103 
  104 void mlx4_disable_interrupts(struct mlx4_dev *);
  105 void mlx4_poll_interrupts(struct mlx4_dev *);
  106 
  107 #endif /* MLX4_DRIVER_H */

Cache object: 70274251d2fd653ed6496f4af81781e5


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.