mm: compaction: add /sys trigger for per-node memory compaction
[safe/jmp/linux-2.6] / include / scsi / fc_frame.h
index 04d34a7..4d3e9c7 100644 (file)
@@ -28,6 +28,8 @@
 #include <scsi/fc/fc_fcp.h>
 #include <scsi/fc/fc_encaps.h>
 
+#include <linux/if_ether.h>
+
 /*
  * The fc_frame interface is used to pass frame data between functions.
  * The frame includes the data buffer, length, and SOF / EOF delimiter types.
 #define        FC_FRAME_HEADROOM       32      /* headroom for VLAN + FCoE headers */
 #define        FC_FRAME_TAILROOM       8       /* trailer space for FCoE */
 
-/*
- * Information about an individual fibre channel frame received or to be sent.
- * The buffer may be in up to 4 additional non-contiguous sections,
- * but the linear section must hold the frame header.
- */
-#define FC_FRAME_SG_LEN                4       /* scatter/gather list maximum length */
+/* Max number of skb frags allowed, reserving one for fcoe_crc_eof page */
+#define FC_FRAME_SG_LEN                (MAX_SKB_FRAGS - 1)
 
 #define fp_skb(fp)     (&((fp)->skb))
 #define fr_hdr(fp)     ((fp)->skb.data)
@@ -54,8 +52,7 @@
 #define fr_eof(fp)     (fr_cb(fp)->fr_eof)
 #define fr_flags(fp)   (fr_cb(fp)->fr_flags)
 #define fr_max_payload(fp)     (fr_cb(fp)->fr_max_payload)
-#define fr_cmd(fp)     (fr_cb(fp)->fr_cmd)
-#define fr_dir(fp)     (fr_cmd(fp)->sc_data_direction)
+#define fr_fsp(fp)     (fr_cb(fp)->fr_fsp)
 #define fr_crc(fp)     (fr_cb(fp)->fr_crc)
 
 struct fc_frame {
@@ -66,12 +63,13 @@ struct fcoe_rcv_info {
        struct packet_type  *ptype;
        struct fc_lport *fr_dev;        /* transport layer private pointer */
        struct fc_seq   *fr_seq;        /* for use with exchange manager */
-       struct scsi_cmnd *fr_cmd;       /* for use of scsi command */
+       struct fc_fcp_pkt *fr_fsp;      /* for the corresponding fcp I/O */
        u32             fr_crc;
        u16             fr_max_payload; /* max FC payload */
        enum fc_sof     fr_sof;         /* start of frame delimiter */
        enum fc_eof     fr_eof;         /* end of frame delimiter */
        u8              fr_flags;       /* flags - see below */
+       u8              granted_mac[ETH_ALEN]; /* FCoE MAC address */
 };
 
 
@@ -102,17 +100,7 @@ static inline void fc_frame_init(struct fc_frame *fp)
 }
 
 struct fc_frame *fc_frame_alloc_fill(struct fc_lport *, size_t payload_len);
-
-struct fc_frame *__fc_frame_alloc(size_t payload_len);
-
-/*
- * Get frame for sending via port.
- */
-static inline struct fc_frame *_fc_frame_alloc(struct fc_lport *dev,
-                                              size_t payload_len)
-{
-       return __fc_frame_alloc(payload_len);
-}
+struct fc_frame *_fc_frame_alloc(size_t payload_len);
 
 /*
  * Allocate fc_frame structure and buffer.  Set the initial length to
@@ -126,10 +114,10 @@ static inline struct fc_frame *fc_frame_alloc(struct fc_lport *dev, size_t len)
         * Note: Since len will often be a constant multiple of 4,
         * this check will usually be evaluated and eliminated at compile time.
         */
-       if ((len % 4) != 0)
+       if (len && len % 4)
                fp = fc_frame_alloc_fill(dev, len);
        else
-               fp = _fc_frame_alloc(dev, len);
+               fp = _fc_frame_alloc(len);
        return fp;
 }
 
@@ -218,20 +206,6 @@ static inline bool fc_frame_is_cmd(const struct fc_frame *fp)
        return fc_frame_rctl(fp) == FC_RCTL_DD_UNSOL_CMD;
 }
 
-static inline bool fc_frame_is_read(const struct fc_frame *fp)
-{
-       if (fc_frame_is_cmd(fp) && fr_cmd(fp))
-               return fr_dir(fp) == DMA_FROM_DEVICE;
-       return false;
-}
-
-static inline bool fc_frame_is_write(const struct fc_frame *fp)
-{
-       if (fc_frame_is_cmd(fp) && fr_cmd(fp))
-               return fr_dir(fp) == DMA_TO_DEVICE;
-       return false;
-}
-
 /*
  * Check for leaks.
  * Print the frame header of any currently allocated frame, assuming there