]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/scsi/libfc.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[karo-tx-linux.git] / include / scsi / libfc.h
index f1ce793f33b3ade003e52acd6b7d080aedb90dd5..14be49b44e841ff22aa66e5b291a6ed5b00978c3 100644 (file)
@@ -249,14 +249,12 @@ struct fcoe_dev_stats {
 
 /**
  * struct fc_seq_els_data - ELS data used for passing ELS specific responses
- * @fp:     The ELS frame
  * @reason: The reason for rejection
  * @explan: The explaination of the rejection
  *
  * Mainly used by the exchange manager layer.
  */
 struct fc_seq_els_data {
-       struct fc_frame *fp;
        enum fc_els_rjt_reason reason;
        enum fc_els_rjt_explan explan;
 };
@@ -519,12 +517,11 @@ struct libfc_function_template {
                        struct fc_frame *);
 
        /*
-        * Send an ELS response using infomation from a previous
-        * exchange and sequence.
+        * Send an ELS response using infomation from the received frame.
         *
         * STATUS: OPTIONAL
         */
-       void (*seq_els_rsp_send)(struct fc_seq *, enum fc_els_cmd,
+       void (*seq_els_rsp_send)(struct fc_frame *, enum fc_els_cmd,
                                 struct fc_seq_els_data *);
 
        /*
@@ -555,6 +552,13 @@ struct libfc_function_template {
         */
        struct fc_seq *(*seq_start_next)(struct fc_seq *);
 
+       /*
+        * Assign a sequence for an incoming request frame.
+        *
+        * STATUS: OPTIONAL
+        */
+       struct fc_seq *(*seq_assign)(struct fc_lport *, struct fc_frame *);
+
        /*
         * Reset an exchange manager, completing all sequences and exchanges.
         * If s_id is non-zero, reset only exchanges originating from that FID.
@@ -576,8 +580,7 @@ struct libfc_function_template {
         *
         * STATUS: OPTIONAL
         */
-       void (*lport_recv)(struct fc_lport *, struct fc_seq *,
-                          struct fc_frame *);
+       void (*lport_recv)(struct fc_lport *, struct fc_frame *);
 
        /*
         * Reset the local port.
@@ -639,8 +642,7 @@ struct libfc_function_template {
         *
         * STATUS: OPTIONAL
         */
-       void (*rport_recv_req)(struct fc_seq *, struct fc_frame *,
-                              struct fc_lport *);
+       void (*rport_recv_req)(struct fc_lport *, struct fc_frame *);
 
        /*
         * lookup an rport by it's port ID.
@@ -686,8 +688,7 @@ struct libfc_function_template {
         *
         * STATUS: OPTIONAL
         */
-       void (*disc_recv_req)(struct fc_seq *, struct fc_frame *,
-                             struct fc_lport *);
+       void (*disc_recv_req)(struct fc_lport *, struct fc_frame *);
 
        /*
         * Start discovery for a local port.
@@ -1027,6 +1028,10 @@ struct fc_seq *fc_elsct_send(struct fc_lport *, u32 did,
                                    void *arg, u32 timer_msec);
 void fc_lport_flogi_resp(struct fc_seq *, struct fc_frame *, void *);
 void fc_lport_logo_resp(struct fc_seq *, struct fc_frame *, void *);
+void fc_fill_reply_hdr(struct fc_frame *, const struct fc_frame *,
+                      enum fc_rctl, u32 parm_offset);
+void fc_fill_hdr(struct fc_frame *, const struct fc_frame *,
+                enum fc_rctl, u32 f_ctl, u16 seq_cnt, u32 parm_offset);
 
 
 /*