linux/drivers/scsi/fcoe/fcoe.h
<<
>>
Prefs
   1/*
   2 * Copyright(c) 2009 Intel Corporation. All rights reserved.
   3 *
   4 * This program is free software; you can redistribute it and/or modify it
   5 * under the terms and conditions of the GNU General Public License,
   6 * version 2, as published by the Free Software Foundation.
   7 *
   8 * This program is distributed in the hope it will be useful, but WITHOUT
   9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  11 * more details.
  12 *
  13 * You should have received a copy of the GNU General Public License along with
  14 * this program; if not, write to the Free Software Foundation, Inc.,
  15 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  16 *
  17 * Maintained at www.Open-FCoE.org
  18 */
  19
  20#ifndef _FCOE_H_
  21#define _FCOE_H_
  22
  23#include <linux/skbuff.h>
  24#include <linux/kthread.h>
  25
  26#define FCOE_MAX_QUEUE_DEPTH    256
  27#define FCOE_MIN_QUEUE_DEPTH    32
  28
  29#define FCOE_WORD_TO_BYTE       4
  30
  31#define FCOE_VERSION    "0.1"
  32#define FCOE_NAME       "fcoe"
  33#define FCOE_VENDOR     "Open-FCoE.org"
  34
  35#define FCOE_MAX_LUN            0xFFFF
  36#define FCOE_MAX_FCP_TARGET     256
  37
  38#define FCOE_MAX_OUTSTANDING_COMMANDS   1024
  39
  40#define FCOE_MIN_XID            0x0000  /* the min xid supported by fcoe_sw */
  41#define FCOE_MAX_XID            0x0FFF  /* the max xid supported by fcoe_sw */
  42
  43extern unsigned int fcoe_debug_logging;
  44
  45#define FCOE_LOGGING        0x01 /* General logging, not categorized */
  46#define FCOE_NETDEV_LOGGING 0x02 /* Netdevice logging */
  47
  48#define FCOE_CHECK_LOGGING(LEVEL, CMD)                                  \
  49do {                                                                    \
  50        if (unlikely(fcoe_debug_logging & LEVEL))                       \
  51                do {                                                    \
  52                        CMD;                                            \
  53                } while (0);                                            \
  54} while (0)
  55
  56#define FCOE_DBG(fmt, args...)                                          \
  57        FCOE_CHECK_LOGGING(FCOE_LOGGING,                                \
  58                           pr_info("fcoe: " fmt, ##args);)
  59
  60#define FCOE_NETDEV_DBG(netdev, fmt, args...)                   \
  61        FCOE_CHECK_LOGGING(FCOE_NETDEV_LOGGING,                 \
  62                           pr_info("fcoe: %s: " fmt,            \
  63                                   netdev->name, ##args);)
  64
  65/**
  66 * struct fcoe_interface - A FCoE interface
  67 * @list:             Handle for a list of FCoE interfaces
  68 * @netdev:           The associated net device
  69 * @fcoe_packet_type: FCoE packet type
  70 * @fip_packet_type:  FIP packet type
  71 * @oem:              The offload exchange manager for all local port
  72 *                    instances associated with this port
  73 * @removed:          Indicates fcoe interface removed from net device
  74 * @priority:         Priority for the FCoE packet (DCB)
  75 * This structure is 1:1 with a net device.
  76 */
  77struct fcoe_interface {
  78        struct list_head   list;
  79        struct net_device  *netdev;
  80        struct net_device  *realdev;
  81        struct packet_type fcoe_packet_type;
  82        struct packet_type fip_packet_type;
  83        struct fc_exch_mgr *oem;
  84        u8      removed;
  85        u8      priority;
  86};
  87
  88#define fcoe_to_ctlr(x)                                         \
  89        (struct fcoe_ctlr *)(((struct fcoe_ctlr *)(x)) - 1)
  90
  91#define fcoe_from_ctlr(x)                       \
  92        ((struct fcoe_interface *)((x) + 1))
  93
  94/**
  95 * fcoe_netdev() - Return the net device associated with a local port
  96 * @lport: The local port to get the net device from
  97 */
  98static inline struct net_device *fcoe_netdev(const struct fc_lport *lport)
  99{
 100        return ((struct fcoe_interface *)
 101                        ((struct fcoe_port *)lport_priv(lport))->priv)->netdev;
 102}
 103
 104#endif /* _FCOE_H_ */
 105