@@ -562,15 +562,15 @@ static int send_next_seg(struct ib_mad_send_wr_private *mad_send_wr)
562
562
return ib_send_mad (mad_send_wr );
563
563
}
564
564
565
- static void abort_send (struct ib_mad_agent_private * agent , __be64 tid ,
566
- u8 rmpp_status )
565
+ static void abort_send (struct ib_mad_agent_private * agent ,
566
+ struct ib_mad_recv_wc * mad_recv_wc , u8 rmpp_status )
567
567
{
568
568
struct ib_mad_send_wr_private * mad_send_wr ;
569
569
struct ib_mad_send_wc wc ;
570
570
unsigned long flags ;
571
571
572
572
spin_lock_irqsave (& agent -> lock , flags );
573
- mad_send_wr = ib_find_send_mad (agent , tid );
573
+ mad_send_wr = ib_find_send_mad (agent , mad_recv_wc );
574
574
if (!mad_send_wr )
575
575
goto out ; /* Unmatched send */
576
576
@@ -612,23 +612,21 @@ static void process_rmpp_ack(struct ib_mad_agent_private *agent,
612
612
613
613
rmpp_mad = (struct ib_rmpp_mad * )mad_recv_wc -> recv_buf .mad ;
614
614
if (rmpp_mad -> rmpp_hdr .rmpp_status ) {
615
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
616
- IB_MGMT_RMPP_STATUS_BAD_STATUS );
615
+ abort_send (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BAD_STATUS );
617
616
nack_recv (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BAD_STATUS );
618
617
return ;
619
618
}
620
619
621
620
seg_num = be32_to_cpu (rmpp_mad -> rmpp_hdr .seg_num );
622
621
newwin = be32_to_cpu (rmpp_mad -> rmpp_hdr .paylen_newwin );
623
622
if (newwin < seg_num ) {
624
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
625
- IB_MGMT_RMPP_STATUS_W2S );
623
+ abort_send (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_W2S );
626
624
nack_recv (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_W2S );
627
625
return ;
628
626
}
629
627
630
628
spin_lock_irqsave (& agent -> lock , flags );
631
- mad_send_wr = ib_find_send_mad (agent , rmpp_mad -> mad_hdr . tid );
629
+ mad_send_wr = ib_find_send_mad (agent , mad_recv_wc );
632
630
if (!mad_send_wr )
633
631
goto out ; /* Unmatched ACK */
634
632
@@ -639,8 +637,7 @@ static void process_rmpp_ack(struct ib_mad_agent_private *agent,
639
637
if (seg_num > mad_send_wr -> send_buf .seg_count ||
640
638
seg_num > mad_send_wr -> newwin ) {
641
639
spin_unlock_irqrestore (& agent -> lock , flags );
642
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
643
- IB_MGMT_RMPP_STATUS_S2B );
640
+ abort_send (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_S2B );
644
641
nack_recv (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_S2B );
645
642
return ;
646
643
}
@@ -728,12 +725,10 @@ static void process_rmpp_stop(struct ib_mad_agent_private *agent,
728
725
rmpp_mad = (struct ib_rmpp_mad * )mad_recv_wc -> recv_buf .mad ;
729
726
730
727
if (rmpp_mad -> rmpp_hdr .rmpp_status != IB_MGMT_RMPP_STATUS_RESX ) {
731
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
732
- IB_MGMT_RMPP_STATUS_BAD_STATUS );
728
+ abort_send (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BAD_STATUS );
733
729
nack_recv (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BAD_STATUS );
734
730
} else
735
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
736
- rmpp_mad -> rmpp_hdr .rmpp_status );
731
+ abort_send (agent , mad_recv_wc , rmpp_mad -> rmpp_hdr .rmpp_status );
737
732
}
738
733
739
734
static void process_rmpp_abort (struct ib_mad_agent_private * agent ,
@@ -745,12 +740,10 @@ static void process_rmpp_abort(struct ib_mad_agent_private *agent,
745
740
746
741
if (rmpp_mad -> rmpp_hdr .rmpp_status < IB_MGMT_RMPP_STATUS_ABORT_MIN ||
747
742
rmpp_mad -> rmpp_hdr .rmpp_status > IB_MGMT_RMPP_STATUS_ABORT_MAX ) {
748
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
749
- IB_MGMT_RMPP_STATUS_BAD_STATUS );
743
+ abort_send (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BAD_STATUS );
750
744
nack_recv (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BAD_STATUS );
751
745
} else
752
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
753
- rmpp_mad -> rmpp_hdr .rmpp_status );
746
+ abort_send (agent , mad_recv_wc , rmpp_mad -> rmpp_hdr .rmpp_status );
754
747
}
755
748
756
749
struct ib_mad_recv_wc *
@@ -764,8 +757,7 @@ ib_process_rmpp_recv_wc(struct ib_mad_agent_private *agent,
764
757
return mad_recv_wc ;
765
758
766
759
if (rmpp_mad -> rmpp_hdr .rmpp_version != IB_MGMT_RMPP_VERSION ) {
767
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
768
- IB_MGMT_RMPP_STATUS_UNV );
760
+ abort_send (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_UNV );
769
761
nack_recv (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_UNV );
770
762
goto out ;
771
763
}
@@ -783,8 +775,7 @@ ib_process_rmpp_recv_wc(struct ib_mad_agent_private *agent,
783
775
process_rmpp_abort (agent , mad_recv_wc );
784
776
break ;
785
777
default :
786
- abort_send (agent , rmpp_mad -> mad_hdr .tid ,
787
- IB_MGMT_RMPP_STATUS_BADT );
778
+ abort_send (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BADT );
788
779
nack_recv (agent , mad_recv_wc , IB_MGMT_RMPP_STATUS_BADT );
789
780
break ;
790
781
}
0 commit comments