@@ -839,16 +839,15 @@ void ib_free_send_mad(struct ib_mad_send_buf *send_buf)
839839}
840840EXPORT_SYMBOL (ib_free_send_mad );
841841
842- static int ib_send_mad (struct ib_mad_agent_private * mad_agent_priv ,
843- struct ib_mad_send_wr_private * mad_send_wr )
842+ static int ib_send_mad (struct ib_mad_send_wr_private * mad_send_wr )
844843{
845844 struct ib_mad_qp_info * qp_info ;
846845 struct ib_send_wr * bad_send_wr ;
847846 unsigned long flags ;
848847 int ret ;
849848
850849 /* Set WR ID to find mad_send_wr upon completion */
851- qp_info = mad_agent_priv -> qp_info ;
850+ qp_info = mad_send_wr -> mad_agent_priv -> qp_info ;
852851 mad_send_wr -> send_wr .wr_id = (unsigned long )& mad_send_wr -> mad_list ;
853852 mad_send_wr -> mad_list .mad_queue = & qp_info -> send_queue ;
854853
@@ -857,7 +856,7 @@ static int ib_send_mad(struct ib_mad_agent_private *mad_agent_priv,
857856 list_add_tail (& mad_send_wr -> mad_list .list ,
858857 & qp_info -> send_queue .list );
859858 spin_unlock_irqrestore (& qp_info -> send_queue .lock , flags );
860- ret = ib_post_send (mad_agent_priv -> agent .qp ,
859+ ret = ib_post_send (mad_send_wr -> mad_agent_priv -> agent .qp ,
861860 & mad_send_wr -> send_wr , & bad_send_wr );
862861 if (ret ) {
863862 printk (KERN_ERR PFX "ib_post_send failed: %d\n" , ret );
@@ -950,7 +949,7 @@ int ib_post_send_mad(struct ib_mad_agent *mad_agent,
950949 mad_send_wr -> wr_id = mad_send_wr -> send_wr .wr_id ;
951950 mad_send_wr -> send_wr .next = NULL ;
952951 mad_send_wr -> tid = send_wr -> wr .ud .mad_hdr -> tid ;
953- mad_send_wr -> agent = mad_agent ;
952+ mad_send_wr -> mad_agent_priv = mad_agent_priv ;
954953 /* Timeout will be updated after send completes */
955954 mad_send_wr -> timeout = msecs_to_jiffies (send_wr -> wr .
956955 ud .timeout_ms );
@@ -966,7 +965,7 @@ int ib_post_send_mad(struct ib_mad_agent *mad_agent,
966965 & mad_agent_priv -> send_list );
967966 spin_unlock_irqrestore (& mad_agent_priv -> lock , flags );
968967
969- ret = ib_send_mad (mad_agent_priv , mad_send_wr );
968+ ret = ib_send_mad (mad_send_wr );
970969 if (ret ) {
971970 /* Fail send request */
972971 spin_lock_irqsave (& mad_agent_priv -> lock , flags );
@@ -1742,13 +1741,14 @@ static void adjust_timeout(struct ib_mad_agent_private *mad_agent_priv)
17421741 }
17431742}
17441743
1745- static void wait_for_response (struct ib_mad_agent_private * mad_agent_priv ,
1746- struct ib_mad_send_wr_private * mad_send_wr )
1744+ static void wait_for_response (struct ib_mad_send_wr_private * mad_send_wr )
17471745{
1746+ struct ib_mad_agent_private * mad_agent_priv ;
17481747 struct ib_mad_send_wr_private * temp_mad_send_wr ;
17491748 struct list_head * list_item ;
17501749 unsigned long delay ;
17511750
1751+ mad_agent_priv = mad_send_wr -> mad_agent_priv ;
17521752 list_del (& mad_send_wr -> agent_list );
17531753
17541754 delay = mad_send_wr -> timeout ;
@@ -1781,9 +1781,7 @@ static void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr,
17811781 struct ib_mad_agent_private * mad_agent_priv ;
17821782 unsigned long flags ;
17831783
1784- mad_agent_priv = container_of (mad_send_wr -> agent ,
1785- struct ib_mad_agent_private , agent );
1786-
1784+ mad_agent_priv = mad_send_wr -> mad_agent_priv ;
17871785 spin_lock_irqsave (& mad_agent_priv -> lock , flags );
17881786 if (mad_send_wc -> status != IB_WC_SUCCESS &&
17891787 mad_send_wr -> status == IB_WC_SUCCESS ) {
@@ -1794,7 +1792,7 @@ static void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr,
17941792 if (-- mad_send_wr -> refcount > 0 ) {
17951793 if (mad_send_wr -> refcount == 1 && mad_send_wr -> timeout &&
17961794 mad_send_wr -> status == IB_WC_SUCCESS ) {
1797- wait_for_response (mad_agent_priv , mad_send_wr );
1795+ wait_for_response (mad_send_wr );
17981796 }
17991797 spin_unlock_irqrestore (& mad_agent_priv -> lock , flags );
18001798 return ;
0 commit comments