@@ -494,39 +494,23 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
494
494
switch (memreg ) {
495
495
case RPCRDMA_MTHCAFMR :
496
496
if (!ia -> ri_id -> device -> alloc_fmr ) {
497
- #if RPCRDMA_PERSISTENT_REGISTRATION
498
497
dprintk ("RPC: %s: MTHCAFMR registration "
499
498
"specified but not supported by adapter, "
500
499
"using riskier RPCRDMA_ALLPHYSICAL\n" ,
501
500
__func__ );
502
501
memreg = RPCRDMA_ALLPHYSICAL ;
503
- #else
504
- dprintk ("RPC: %s: MTHCAFMR registration "
505
- "specified but not supported by adapter, "
506
- "using slower RPCRDMA_REGISTER\n" ,
507
- __func__ );
508
- memreg = RPCRDMA_REGISTER ;
509
- #endif
510
502
}
511
503
break ;
512
504
case RPCRDMA_FRMR :
513
505
/* Requires both frmr reg and local dma lkey */
514
506
if ((devattr .device_cap_flags &
515
507
(IB_DEVICE_MEM_MGT_EXTENSIONS |IB_DEVICE_LOCAL_DMA_LKEY )) !=
516
508
(IB_DEVICE_MEM_MGT_EXTENSIONS |IB_DEVICE_LOCAL_DMA_LKEY )) {
517
- #if RPCRDMA_PERSISTENT_REGISTRATION
518
509
dprintk ("RPC: %s: FRMR registration "
519
510
"specified but not supported by adapter, "
520
511
"using riskier RPCRDMA_ALLPHYSICAL\n" ,
521
512
__func__ );
522
513
memreg = RPCRDMA_ALLPHYSICAL ;
523
- #else
524
- dprintk ("RPC: %s: FRMR registration "
525
- "specified but not supported by adapter, "
526
- "using slower RPCRDMA_REGISTER\n" ,
527
- __func__ );
528
- memreg = RPCRDMA_REGISTER ;
529
- #endif
530
514
} else {
531
515
/* Mind the ia limit on FRMR page list depth */
532
516
ia -> ri_max_frmr_depth = min_t (unsigned int ,
@@ -545,7 +529,6 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
545
529
* adapter.
546
530
*/
547
531
switch (memreg ) {
548
- case RPCRDMA_REGISTER :
549
532
case RPCRDMA_FRMR :
550
533
break ;
551
534
#if RPCRDMA_PERSISTENT_REGISTRATION
@@ -565,11 +548,10 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
565
548
ia -> ri_bind_mem = ib_get_dma_mr (ia -> ri_pd , mem_priv );
566
549
if (IS_ERR (ia -> ri_bind_mem )) {
567
550
printk (KERN_ALERT "%s: ib_get_dma_mr for "
568
- "phys register failed with %lX\n\t"
569
- "Will continue with degraded performance\n" ,
551
+ "phys register failed with %lX\n" ,
570
552
__func__ , PTR_ERR (ia -> ri_bind_mem ));
571
- memreg = RPCRDMA_REGISTER ;
572
- ia -> ri_bind_mem = NULL ;
553
+ rc = - ENOMEM ;
554
+ goto out2 ;
573
555
}
574
556
break ;
575
557
default :
@@ -1611,67 +1593,6 @@ rpcrdma_deregister_fmr_external(struct rpcrdma_mr_seg *seg,
1611
1593
return rc ;
1612
1594
}
1613
1595
1614
- static int
1615
- rpcrdma_register_default_external (struct rpcrdma_mr_seg * seg ,
1616
- int * nsegs , int writing , struct rpcrdma_ia * ia )
1617
- {
1618
- int mem_priv = (writing ? IB_ACCESS_REMOTE_WRITE :
1619
- IB_ACCESS_REMOTE_READ );
1620
- struct rpcrdma_mr_seg * seg1 = seg ;
1621
- struct ib_phys_buf ipb [RPCRDMA_MAX_DATA_SEGS ];
1622
- int len , i , rc = 0 ;
1623
-
1624
- if (* nsegs > RPCRDMA_MAX_DATA_SEGS )
1625
- * nsegs = RPCRDMA_MAX_DATA_SEGS ;
1626
- for (len = 0 , i = 0 ; i < * nsegs ;) {
1627
- rpcrdma_map_one (ia , seg , writing );
1628
- ipb [i ].addr = seg -> mr_dma ;
1629
- ipb [i ].size = seg -> mr_len ;
1630
- len += seg -> mr_len ;
1631
- ++ seg ;
1632
- ++ i ;
1633
- /* Check for holes */
1634
- if ((i < * nsegs && offset_in_page (seg -> mr_offset )) ||
1635
- offset_in_page ((seg - 1 )-> mr_offset + (seg - 1 )-> mr_len ))
1636
- break ;
1637
- }
1638
- seg1 -> mr_base = seg1 -> mr_dma ;
1639
- seg1 -> mr_chunk .rl_mr = ib_reg_phys_mr (ia -> ri_pd ,
1640
- ipb , i , mem_priv , & seg1 -> mr_base );
1641
- if (IS_ERR (seg1 -> mr_chunk .rl_mr )) {
1642
- rc = PTR_ERR (seg1 -> mr_chunk .rl_mr );
1643
- dprintk ("RPC: %s: failed ib_reg_phys_mr "
1644
- "%u@0x%llx (%d)... status %i\n" ,
1645
- __func__ , len ,
1646
- (unsigned long long )seg1 -> mr_dma , i , rc );
1647
- while (i -- )
1648
- rpcrdma_unmap_one (ia , -- seg );
1649
- } else {
1650
- seg1 -> mr_rkey = seg1 -> mr_chunk .rl_mr -> rkey ;
1651
- seg1 -> mr_nsegs = i ;
1652
- seg1 -> mr_len = len ;
1653
- }
1654
- * nsegs = i ;
1655
- return rc ;
1656
- }
1657
-
1658
- static int
1659
- rpcrdma_deregister_default_external (struct rpcrdma_mr_seg * seg ,
1660
- struct rpcrdma_ia * ia )
1661
- {
1662
- struct rpcrdma_mr_seg * seg1 = seg ;
1663
- int rc ;
1664
-
1665
- rc = ib_dereg_mr (seg1 -> mr_chunk .rl_mr );
1666
- seg1 -> mr_chunk .rl_mr = NULL ;
1667
- while (seg1 -> mr_nsegs -- )
1668
- rpcrdma_unmap_one (ia , seg ++ );
1669
- if (rc )
1670
- dprintk ("RPC: %s: failed ib_dereg_mr,"
1671
- " status %i\n" , __func__ , rc );
1672
- return rc ;
1673
- }
1674
-
1675
1596
int
1676
1597
rpcrdma_register_external (struct rpcrdma_mr_seg * seg ,
1677
1598
int nsegs , int writing , struct rpcrdma_xprt * r_xprt )
@@ -1701,10 +1622,8 @@ rpcrdma_register_external(struct rpcrdma_mr_seg *seg,
1701
1622
rc = rpcrdma_register_fmr_external (seg , & nsegs , writing , ia );
1702
1623
break ;
1703
1624
1704
- /* Default registration each time */
1705
1625
default :
1706
- rc = rpcrdma_register_default_external (seg , & nsegs , writing , ia );
1707
- break ;
1626
+ return -1 ;
1708
1627
}
1709
1628
if (rc )
1710
1629
return -1 ;
@@ -1738,7 +1657,6 @@ rpcrdma_deregister_external(struct rpcrdma_mr_seg *seg,
1738
1657
break ;
1739
1658
1740
1659
default :
1741
- rc = rpcrdma_deregister_default_external (seg , ia );
1742
1660
break ;
1743
1661
}
1744
1662
if (r ) {
0 commit comments