@ -52,6 +52,7 @@
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
# include <scsi/sas.h>
# include "intel_sas.h"
# include "sas.h"
# include "isci.h"
@ -305,15 +306,20 @@ enum sci_status scic_sds_remote_device_frame_handler(struct scic_sds_remote_devi
case SCI_BASE_REMOTE_DEVICE_STATE_FAILED :
case SCI_BASE_REMOTE_DEVICE_STATE_RESETTING : {
struct scic_sds_request * sci_req ;
struct sci_ssp_frame_header * hdr ;
struct ssp_frame_hdr hdr ;
void * frame_header ;
ssize_t word_cnt ;
status = scic_sds_unsolicited_frame_control_get_header ( & scic - > uf_control ,
frame_index ,
( void * * ) & hdr ) ;
& frame_ hea de r) ;
if ( status ! = SCI_SUCCESS )
return status ;
sci_req = scic_sds_controller_get_io_request_from_tag ( scic , hdr - > tag ) ;
word_cnt = sizeof ( hdr ) / sizeof ( u32 ) ;
sci_swab32_cpy ( & hdr , frame_header , word_cnt ) ;
sci_req = scic_request_by_tag ( scic , be16_to_cpu ( hdr . tag ) ) ;
if ( sci_req & & sci_req - > target_device = = sci_dev ) {
/* The IO request is now in charge of releasing the frame */
status = sci_req - > state_handlers - > frame_handler ( sci_req ,