These helpers are used by LLD and are removed in a recent patch in the
fcoe-features tree. This patch adds them back to libfcoe.h

Signed-off-by: Yi Zou <[email protected]>
---

 include/scsi/libfcoe.h |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h
index 666cc13..318f30a 100644
--- a/include/scsi/libfcoe.h
+++ b/include/scsi/libfcoe.h
@@ -161,4 +161,47 @@ int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *, struct 
fc_frame *fp, u8 *sa);
 u64 fcoe_wwn_from_mac(unsigned char mac[], unsigned int, unsigned int);
 int fcoe_libfc_config(struct fc_lport *, struct libfc_function_template *);
 
+/* fcoe related skb helpers */
+static inline struct fcoe_hdr *skb_fcoe_header(const struct sk_buff *skb)
+{
+       return (struct fcoe_hdr *)skb_network_header(skb);
+}
+
+static inline int skb_fcoe_offset(const struct sk_buff *skb)
+{
+       return skb_network_offset(skb);
+}
+
+static inline struct fc_frame_header *skb_fc_header(const struct sk_buff *skb)
+{
+       return (struct fc_frame_header *)skb_transport_header(skb);
+}
+
+static inline int skb_fc_offset(const struct sk_buff *skb)
+{
+       return skb_transport_offset(skb);
+}
+
+static inline void skb_reset_fc_header(struct sk_buff *skb)
+{
+       skb_reset_network_header(skb);
+       skb_set_transport_header(skb, skb_network_offset(skb) +
+                                sizeof(struct fcoe_hdr));
+}
+
+static inline bool skb_fc_is_roff(const struct sk_buff *skb)
+{
+       return skb_fc_header(skb)->fh_f_ctl[2] & FC_FC_REL_OFF;
+}
+
+static inline u16 skb_fc_oxid(const struct sk_buff *skb)
+{
+       return be16_to_cpu(skb_fc_header(skb)->fh_ox_id);
+}
+
+static inline u16 skb_fc_rxid(const struct sk_buff *skb)
+{
+       return be16_to_cpu(skb_fc_header(skb)->fh_rx_id);
+}
+
 #endif /* _LIBFCOE_H */

_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to