hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright(c) 2009 Intel Corporation. All rights reserved.
 *
 * Maintained at www.Open-FCoE.org
 */
 
#ifndef _FCOE_H_
#define _FCOE_H_
 
#include <linux/skbuff.h>
#include <linux/kthread.h>
 
#define FCOE_MAX_QUEUE_DEPTH    256
#define FCOE_MIN_QUEUE_DEPTH    32
 
#define FCOE_WORD_TO_BYTE    4
 
#define FCOE_VERSION    "0.1"
#define FCOE_NAME    "fcoe"
#define FCOE_VENDOR    "Open-FCoE.org"
 
#define FCOE_MAX_LUN        0xFFFF
#define FCOE_MAX_FCP_TARGET    256
 
#define FCOE_MAX_OUTSTANDING_COMMANDS    1024
 
#define FCOE_MIN_XID        0x0000    /* the min xid supported by fcoe_sw */
#define FCOE_MAX_XID        0x0FFF    /* the max xid supported by fcoe_sw */
 
extern unsigned int fcoe_debug_logging;
 
#define FCOE_LOGGING        0x01 /* General logging, not categorized */
#define FCOE_NETDEV_LOGGING 0x02 /* Netdevice logging */
 
#define FCOE_CHECK_LOGGING(LEVEL, CMD)                    \
do {                                                                \
   if (unlikely(fcoe_debug_logging & LEVEL))            \
       do {                            \
           CMD;                        \
       } while (0);                        \
} while (0)
 
#define FCOE_DBG(fmt, args...)                        \
   FCOE_CHECK_LOGGING(FCOE_LOGGING,                \
              pr_info("fcoe: " fmt, ##args);)
 
#define FCOE_NETDEV_DBG(netdev, fmt, args...)            \
   FCOE_CHECK_LOGGING(FCOE_NETDEV_LOGGING,            \
              pr_info("fcoe: %s: " fmt,        \
                  netdev->name, ##args);)
 
/**
 * struct fcoe_interface - A FCoE interface
 * @list:          Handle for a list of FCoE interfaces
 * @netdev:          The associated net device
 * @fcoe_packet_type: FCoE packet type
 * @fip_packet_type:  FIP packet type
 * @oem:          The offload exchange manager for all local port
 *              instances associated with this port
 * @removed:          Indicates fcoe interface removed from net device
 * @priority:          Priority for the FCoE packet (DCB)
 * This structure is 1:1 with a net device.
 */
struct fcoe_interface {
   struct list_head   list;
   struct net_device  *netdev;
   struct net_device  *realdev;
   struct packet_type fcoe_packet_type;
   struct packet_type fip_packet_type;
   struct packet_type fip_vlan_packet_type;
   struct fc_exch_mgr *oem;
   u8    removed;
   u8    priority;
};
 
#define fcoe_to_ctlr(x)                        \
   (struct fcoe_ctlr *)(((struct fcoe_ctlr *)(x)) - 1)
 
#define fcoe_from_ctlr(x)            \
   ((struct fcoe_interface *)((x) + 1))
 
/**
 * fcoe_netdev() - Return the net device associated with a local port
 * @lport: The local port to get the net device from
 */
static inline struct net_device *fcoe_netdev(const struct fc_lport *lport)
{
   return ((struct fcoe_interface *)
           ((struct fcoe_port *)lport_priv(lport))->priv)->netdev;
}
 
#endif /* _FCOE_H_ */