|  | @@ -27,7 +27,6 @@ struct mlx_nic {
 | 
		
	
		
			
			| 27 | 27 |  #include "mt_version.c"
 | 
		
	
		
			
			| 28 | 28 |  #include "mt25218_imp.c"
 | 
		
	
		
			
			| 29 | 29 |  
 | 
		
	
		
			
			| 30 |  | -/* NIC specific static variables go here */
 | 
		
	
		
			
			| 31 | 30 |  
 | 
		
	
		
			
			| 32 | 31 |  int prompt_key(int secs, unsigned char *ch_p)
 | 
		
	
		
			
			| 33 | 32 |  {
 | 
		
	
	
		
			
			|  | @@ -265,12 +264,31 @@ static void mlx_rx_complete ( struct net_device *netdev,
 | 
		
	
		
			
			| 265 | 264 |   * @v netdev		Network device
 | 
		
	
		
			
			| 266 | 265 |   * @v cq		Completion queue
 | 
		
	
		
			
			| 267 | 266 |   */
 | 
		
	
		
			
			| 268 |  | -static void mlx_poll_cq ( struct net_device *netdev, cq_t cq ) {
 | 
		
	
		
			
			|  | 267 | +static void mlx_poll_cq ( struct net_device *netdev,
 | 
		
	
		
			
			|  | 268 | +			  struct cq_st *cq ) {
 | 
		
	
		
			
			| 269 | 269 |  	struct mlx_nic *mlx = netdev->priv;
 | 
		
	
		
			
			| 270 | 270 |  	struct ib_cqe_st cqe;
 | 
		
	
		
			
			| 271 | 271 |  	uint8_t num_cqes;
 | 
		
	
		
			
			| 272 | 272 |  
 | 
		
	
		
			
			| 273 | 273 |  	while ( 1 ) {
 | 
		
	
		
			
			|  | 274 | +
 | 
		
	
		
			
			|  | 275 | +		unsigned long cons_idx;
 | 
		
	
		
			
			|  | 276 | +		union cqe_st *temp;
 | 
		
	
		
			
			|  | 277 | +
 | 
		
	
		
			
			|  | 278 | +		cons_idx = ( cq->cons_counter & ( cq->num_cqes - 1 ) );
 | 
		
	
		
			
			|  | 279 | +		temp = &cq->cq_buf[cons_idx];
 | 
		
	
		
			
			|  | 280 | +		if ( EX_FLD_BE ( temp, arbelprm_completion_queue_entry_st,
 | 
		
	
		
			
			|  | 281 | +				 owner ) == 0 ) {
 | 
		
	
		
			
			|  | 282 | +			DBG ( "software owned\n" );
 | 
		
	
		
			
			|  | 283 | +			DBGC_HD ( mlx, temp, sizeof ( *temp ) );
 | 
		
	
		
			
			|  | 284 | +			DBG ( "my_qpn=%lx, g=%ld, s=%ld, op=%02lx, cnt=%lx\n",
 | 
		
	
		
			
			|  | 285 | +			      EX_FLD_BE ( temp, arbelprm_completion_queue_entry_st, my_qpn ),
 | 
		
	
		
			
			|  | 286 | +			      EX_FLD_BE ( temp, arbelprm_completion_queue_entry_st, g ),
 | 
		
	
		
			
			|  | 287 | +			      EX_FLD_BE ( temp, arbelprm_completion_queue_entry_st, s ),
 | 
		
	
		
			
			|  | 288 | +			      EX_FLD_BE ( temp, arbelprm_completion_queue_entry_st, opcode ),
 | 
		
	
		
			
			|  | 289 | +			      EX_FLD_BE ( temp, arbelprm_completion_queue_entry_st, byte_cnt ) );
 | 
		
	
		
			
			|  | 290 | +		}
 | 
		
	
		
			
			|  | 291 | +
 | 
		
	
		
			
			| 274 | 292 |  		/* Poll for single completion queue entry */
 | 
		
	
		
			
			| 275 | 293 |  		ib_poll_cq ( cq, &cqe, &num_cqes );
 | 
		
	
		
			
			| 276 | 294 |  
 | 
		
	
	
		
			
			|  | @@ -312,6 +330,7 @@ static void mlx_poll ( struct net_device *netdev ) {
 | 
		
	
		
			
			| 312 | 330 |  		return;
 | 
		
	
		
			
			| 313 | 331 |  	}
 | 
		
	
		
			
			| 314 | 332 |  
 | 
		
	
		
			
			|  | 333 | +	//	mlx_poll_cq ( netdev, ipoib_data.snd_cqh );
 | 
		
	
		
			
			| 315 | 334 |  	mlx_poll_cq ( netdev, ipoib_data.rcv_cqh );
 | 
		
	
		
			
			| 316 | 335 |  }
 | 
		
	
		
			
			| 317 | 336 |  
 |