@@ -777,7 +777,6 @@ static void arcmsr_message_isr_bh_fn(struct work_struct *work)
777777 struct scsi_device * psdev ;
778778 char diff , temp ;
779779
780- acb -> acb_flags &= ~ACB_F_MSG_GET_CONFIG ;
781780 switch (acb -> adapter_type ) {
782781 case ACB_ADAPTER_TYPE_A : {
783782 struct MessageUnit_A __iomem * reg = acb -> pmuA ;
@@ -815,7 +814,6 @@ static void arcmsr_message_isr_bh_fn(struct work_struct *work)
815814 break ;
816815 }
817816 }
818- atomic_inc (& acb -> rq_map_token );
819817 if (readl (signature ) != ARCMSR_SIGNATURE_GET_CONFIG )
820818 return ;
821819 for (target = 0 ; target < ARCMSR_MAX_TARGETID - 1 ;
@@ -846,6 +844,7 @@ static void arcmsr_message_isr_bh_fn(struct work_struct *work)
846844 devicemap ++ ;
847845 acb_dev_map ++ ;
848846 }
847+ acb -> acb_flags &= ~ACB_F_MSG_GET_CONFIG ;
849848}
850849
851850static int
@@ -898,8 +897,6 @@ arcmsr_request_irq(struct pci_dev *pdev, struct AdapterControlBlock *acb)
898897static void arcmsr_init_get_devmap_timer (struct AdapterControlBlock * pacb )
899898{
900899 INIT_WORK (& pacb -> arcmsr_do_message_isr_bh , arcmsr_message_isr_bh_fn );
901- atomic_set (& pacb -> rq_map_token , 16 );
902- atomic_set (& pacb -> ante_token_value , 16 );
903900 pacb -> fw_flag = FW_NORMAL ;
904901 timer_setup (& pacb -> eternal_timer , arcmsr_request_device_map , 0 );
905902 pacb -> eternal_timer .expires = jiffies + msecs_to_jiffies (6 * HZ );
@@ -3925,24 +3922,10 @@ static void arcmsr_wait_firmware_ready(struct AdapterControlBlock *acb)
39253922static void arcmsr_request_device_map (struct timer_list * t )
39263923{
39273924 struct AdapterControlBlock * acb = from_timer (acb , t , eternal_timer );
3928- if (unlikely (atomic_read (& acb -> rq_map_token ) == 0 ) ||
3929- (acb -> acb_flags & ACB_F_BUS_RESET ) ||
3930- (acb -> acb_flags & ACB_F_ABORT )) {
3931- mod_timer (& acb -> eternal_timer ,
3932- jiffies + msecs_to_jiffies (6 * HZ ));
3925+ if (acb -> acb_flags & (ACB_F_MSG_GET_CONFIG | ACB_F_BUS_RESET | ACB_F_ABORT )) {
3926+ mod_timer (& acb -> eternal_timer , jiffies + msecs_to_jiffies (6 * HZ ));
39333927 } else {
39343928 acb -> fw_flag = FW_NORMAL ;
3935- if (atomic_read (& acb -> ante_token_value ) ==
3936- atomic_read (& acb -> rq_map_token )) {
3937- atomic_set (& acb -> rq_map_token , 16 );
3938- }
3939- atomic_set (& acb -> ante_token_value ,
3940- atomic_read (& acb -> rq_map_token ));
3941- if (atomic_dec_and_test (& acb -> rq_map_token )) {
3942- mod_timer (& acb -> eternal_timer , jiffies +
3943- msecs_to_jiffies (6 * HZ ));
3944- return ;
3945- }
39463929 switch (acb -> adapter_type ) {
39473930 case ACB_ADAPTER_TYPE_A : {
39483931 struct MessageUnit_A __iomem * reg = acb -> pmuA ;
@@ -4362,8 +4345,6 @@ static int arcmsr_bus_reset(struct scsi_cmnd *cmd)
43624345 goto wait_reset_done ;
43634346 }
43644347 arcmsr_iop_init (acb );
4365- atomic_set (& acb -> rq_map_token , 16 );
4366- atomic_set (& acb -> ante_token_value , 16 );
43674348 acb -> fw_flag = FW_NORMAL ;
43684349 mod_timer (& acb -> eternal_timer , jiffies +
43694350 msecs_to_jiffies (6 * HZ ));
@@ -4372,8 +4353,6 @@ static int arcmsr_bus_reset(struct scsi_cmnd *cmd)
43724353 pr_notice ("arcmsr: scsi bus reset eh returns with success\n" );
43734354 } else {
43744355 acb -> acb_flags &= ~ACB_F_BUS_RESET ;
4375- atomic_set (& acb -> rq_map_token , 16 );
4376- atomic_set (& acb -> ante_token_value , 16 );
43774356 acb -> fw_flag = FW_NORMAL ;
43784357 mod_timer (& acb -> eternal_timer , jiffies +
43794358 msecs_to_jiffies (6 * HZ ));
0 commit comments