Commit 92892240 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by Vasily Gorbik
Browse files

s390/qdio: pass ISC as parameter to chsc_sadc()



When issuing a SADC for a QDIO device, don't hardcode the ISC but use
whatever is specified in qdio's handler for Adapter Interrupts.

Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: default avatarBenjamin Block <bblock@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 086b2d78
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -180,11 +180,12 @@ EXPORT_SYMBOL_GPL(chsc_ssqd);
 * @scssc: request and response block for SADC
 * @summary_indicator_addr: summary indicator address
 * @subchannel_indicator_addr: subchannel indicator address
 * @isc: Interruption Subclass for this subchannel
 *
 * Returns 0 on success.
 */
int chsc_sadc(struct subchannel_id schid, struct chsc_scssc_area *scssc,
	      u64 summary_indicator_addr, u64 subchannel_indicator_addr)
	      u64 summary_indicator_addr, u64 subchannel_indicator_addr, u8 isc)
{
	memset(scssc, 0, sizeof(*scssc));
	scssc->request.length = 0x0fe0;
@@ -196,7 +197,7 @@ int chsc_sadc(struct subchannel_id schid, struct chsc_scssc_area *scssc,

	scssc->ks = PAGE_DEFAULT_KEY >> 4;
	scssc->kc = PAGE_DEFAULT_KEY >> 4;
	scssc->isc = QDIO_AIRQ_ISC;
	scssc->isc = isc;
	scssc->schid = schid;

	/* enable the time delay disablement facility */
+2 −1
Original line number Diff line number Diff line
@@ -163,7 +163,8 @@ void chsc_chp_offline(struct chp_id chpid);
int chsc_get_channel_measurement_chars(struct channel_path *chp);
int chsc_ssqd(struct subchannel_id schid, struct chsc_ssqd_area *ssqd);
int chsc_sadc(struct subchannel_id schid, struct chsc_scssc_area *scssc,
	      u64 summary_indicator_addr, u64 subchannel_indicator_addr);
	      u64 summary_indicator_addr, u64 subchannel_indicator_addr,
	      u8 isc);
int chsc_sgib(u32 origin);
int chsc_error_from_response(int response);

+1 −1
Original line number Diff line number Diff line
@@ -211,7 +211,7 @@ static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset)
	}

	rc = chsc_sadc(irq_ptr->schid, scssc, summary_indicator_addr,
		       subchannel_indicator_addr);
		       subchannel_indicator_addr, tiqdio_airq.isc);
	if (rc) {
		DBF_ERROR("%4x SSI r:%4x", irq_ptr->schid.sch_no,
			  scssc->response.code);