|
@@ -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
|
|