diff options
author | Yi Zou <yi.zou@intel.com> | 2009-02-27 17:07:21 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-03-13 16:15:15 -0400 |
commit | b277d2aa9a4d969002c4157bf77b76b9ad9ca04a (patch) | |
tree | 1054ff4ab2d03eaaa527919380ed6334233f632b /include/scsi/libfcoe.h | |
parent | 39ca9a065a5a0a6f2f0cd648090a979ba3f4f018 (diff) |
[SCSI] libfc: add support of large receive offload by ddp in fc_fcp
When LLD supports direct data placement (ddp) for large receive of an scsi
i/o coming into fc_fcp, we call into libfc_function_template's ddp_setup()
to prepare for a ddp of large receive for this read I/O. When I/O is complete,
we call the corresponding ddp_done() to get the length of data ddped as well
as to let LLD do clean up.
fc_fcp_ddp_setup()/fc_fcp_ddp_done() are added to setup and complete a ddped
read I/O described by the given fc_fcp_pkt. They would call into corresponding
ddp_setup/ddp_done implemented by the fcoe layer. Eventually, fcoe layer calls
into LLD's ddp_setup/ddp_done provided through net_device
Signed-off-by: Yi Zou <yi.zou@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'include/scsi/libfcoe.h')
-rw-r--r-- | include/scsi/libfcoe.h | 18 |
1 files changed, 0 insertions, 18 deletions
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h index 941818f29f59..c41f7d0c6efc 100644 --- a/include/scsi/libfcoe.h +++ b/include/scsi/libfcoe.h | |||
@@ -124,24 +124,6 @@ static inline u16 skb_fc_rxid(const struct sk_buff *skb) | |||
124 | return be16_to_cpu(skb_fc_header(skb)->fh_rx_id); | 124 | return be16_to_cpu(skb_fc_header(skb)->fh_rx_id); |
125 | } | 125 | } |
126 | 126 | ||
127 | /* FIXME - DMA_BIDIRECTIONAL ? */ | ||
128 | #define skb_cb(skb) ((struct fcoe_rcv_info *)&((skb)->cb[0])) | ||
129 | #define skb_cmd(skb) (skb_cb(skb)->fr_cmd) | ||
130 | #define skb_dir(skb) (skb_cmd(skb)->sc_data_direction) | ||
131 | static inline bool skb_fc_is_read(const struct sk_buff *skb) | ||
132 | { | ||
133 | if (skb_fc_is_cmd(skb) && skb_cmd(skb)) | ||
134 | return skb_dir(skb) == DMA_FROM_DEVICE; | ||
135 | return false; | ||
136 | } | ||
137 | |||
138 | static inline bool skb_fc_is_write(const struct sk_buff *skb) | ||
139 | { | ||
140 | if (skb_fc_is_cmd(skb) && skb_cmd(skb)) | ||
141 | return skb_dir(skb) == DMA_TO_DEVICE; | ||
142 | return false; | ||
143 | } | ||
144 | |||
145 | /* libfcoe funcs */ | 127 | /* libfcoe funcs */ |
146 | int fcoe_reset(struct Scsi_Host *shost); | 128 | int fcoe_reset(struct Scsi_Host *shost); |
147 | u64 fcoe_wwn_from_mac(unsigned char mac[MAX_ADDR_LEN], | 129 | u64 fcoe_wwn_from_mac(unsigned char mac[MAX_ADDR_LEN], |