From: Daniel Wagner <dwagner@suse.de>
Subject: scsi: kABI workaround for fc_host_fpin_rcv
Patch-mainline: Never, kABI workaround
References: git-fixes
Addresses kABI breakage introduced by 64fd2ba977b1 ("scsi: scsi_transport_fc:
Add an additional flag to fc_host_fpin_rcv()")
Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
drivers/scsi/lpfc/lpfc_els.c | 4 ++--
drivers/scsi/qla2xxx/qla_isr.c | 2 +-
drivers/scsi/scsi_transport_fc.c | 15 +++++++++++----
include/scsi/scsi_transport_fc.h | 5 ++++-
4 files changed, 18 insertions(+), 8 deletions(-)
--- a/drivers/scsi/lpfc/lpfc_els.c
+++ b/drivers/scsi/lpfc/lpfc_els.c
@@ -10290,8 +10290,8 @@ lpfc_els_rcv_fpin(struct lpfc_vport *vpo
/* Send every descriptor individually to the upper layer */
if (deliver)
- fc_host_fpin_rcv(lpfc_shost_from_vport(vport),
- fpin_length, (char *)fpin, 0);
+ fc_host_fpin_rcv_ack(lpfc_shost_from_vport(vport),
+ fpin_length, (char *)fpin, 0);
desc_cnt++;
}
}
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -45,7 +45,7 @@ qla27xx_process_purex_fpin(struct scsi_q
ql_dump_buffer(ql_dbg_init + ql_dbg_verbose, vha, 0x508f,
pkt, pkt_size);
- fc_host_fpin_rcv(vha->host, pkt_size, (char *)pkt, 0);
+ fc_host_fpin_rcv_ack(vha->host, pkt_size, (char *)pkt, 0);
}
const char *const port_state_str[] = {
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -889,7 +889,7 @@ fc_fpin_congn_stats_update(struct Scsi_H
}
/**
- * fc_host_fpin_rcv - routine to process a received FPIN.
+ * fc_host_fpin_rcv_ack - routine to process a received FPIN.
* @shost: host the FPIN was received on
* @fpin_len: length of FPIN payload, in bytes
* @fpin_buf: pointer to FPIN payload
@@ -898,8 +898,8 @@ fc_fpin_congn_stats_update(struct Scsi_H
* This routine assumes no locks are held on entry.
*/
void
-fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf,
- u8 event_acknowledge)
+fc_host_fpin_rcv_ack(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf,
+ u8 event_acknowledge)
{
struct fc_els_fpin *fpin = (struct fc_els_fpin *)fpin_buf;
struct fc_tlv_desc *tlv;
@@ -938,8 +938,15 @@ fc_host_fpin_rcv(struct Scsi_Host *shost
fc_host_post_fc_event(shost, fc_get_event_number(),
event_code, fpin_len, fpin_buf, 0);
}
-EXPORT_SYMBOL(fc_host_fpin_rcv);
+EXPORT_SYMBOL(fc_host_fpin_rcv_ack);
+
+void
+fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf)
+{
+ fc_host_fpin_rcv_ack(shost, fpin_len, fpin_buf, 0);
+}
+EXPORT_SYMBOL(fc_host_fpin_rcv);
static __init int fc_transport_init(void)
{
--- a/include/scsi/scsi_transport_fc.h
+++ b/include/scsi/scsi_transport_fc.h
@@ -496,7 +496,9 @@ enum fc_host_event_code {
FCH_EVT_PORT_FABRIC = 0x204,
FCH_EVT_LINK_UNKNOWN = 0x500,
FCH_EVT_LINK_FPIN = 0x501,
+#ifndef __GENKSYMS__
FCH_EVT_LINK_FPIN_ACK = 0x502,
+#endif
FCH_EVT_VENDOR_UNIQUE = 0xffff,
};
@@ -859,8 +861,9 @@ void fc_host_post_fc_event(struct Scsi_H
* Note: when calling fc_host_post_fc_event(), vendor_id may be
* specified as 0.
*/
-void fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf,
+void fc_host_fpin_rcv_ack(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf,
u8 event_acknowledge);
+void fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf);
struct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel,
struct fc_vport_identifiers *);
int fc_vport_terminate(struct fc_vport *vport);