aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi/libfcoe.h
diff options
context:
space:
mode:
authorYi Zou <yi.zou@intel.com>2009-02-27 17:07:21 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-03-13 16:15:15 -0400
commitb277d2aa9a4d969002c4157bf77b76b9ad9ca04a (patch)
tree1054ff4ab2d03eaaa527919380ed6334233f632b /include/scsi/libfcoe.h
parent39ca9a065a5a0a6f2f0cd648090a979ba3f4f018 (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.h18
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)
131static 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
138static 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 */
146int fcoe_reset(struct Scsi_Host *shost); 128int fcoe_reset(struct Scsi_Host *shost);
147u64 fcoe_wwn_from_mac(unsigned char mac[MAX_ADDR_LEN], 129u64 fcoe_wwn_from_mac(unsigned char mac[MAX_ADDR_LEN],