소스 검색

Merge tag 'ntb-4.13-bugfixes' of git://github.com/jonmason/ntb

Pull NTB fixes from Jon Mason:
 "NTB bug fixes to address an incorrect ntb_mw_count reference in the
  NTB transport, improperly bringing down the link if SPADs are
  corrupted, and an out-of-order issue regarding link negotiation and
  data passing"

* tag 'ntb-4.13-bugfixes' of git://github.com/jonmason/ntb:
  ntb: ntb_test: ensure the link is up before trying to configure the mws
  ntb: transport shouldn't disable link due to bogus values in SPADs
  ntb: use correct mw_count function in ntb_tool and ntb_transport
Linus Torvalds 8 년 전
부모
커밋
fff4e7a0e6
3개의 변경된 파일7개의 추가작업 그리고 5개의 파일을 삭제
  1. 2 4
      drivers/ntb/ntb_transport.c
  2. 1 1
      drivers/ntb/test/ntb_tool.c
  3. 4 0
      tools/testing/selftests/ntb/ntb_test.sh

+ 2 - 4
drivers/ntb/ntb_transport.c

@@ -924,10 +924,8 @@ out1:
 		ntb_free_mw(nt, i);
 		ntb_free_mw(nt, i);
 
 
 	/* if there's an actual failure, we should just bail */
 	/* if there's an actual failure, we should just bail */
-	if (rc < 0) {
-		ntb_link_disable(ndev);
+	if (rc < 0)
 		return;
 		return;
-	}
 
 
 out:
 out:
 	if (ntb_link_is_up(ndev, NULL, NULL) == 1)
 	if (ntb_link_is_up(ndev, NULL, NULL) == 1)
@@ -1059,7 +1057,7 @@ static int ntb_transport_probe(struct ntb_client *self, struct ntb_dev *ndev)
 	int node;
 	int node;
 	int rc, i;
 	int rc, i;
 
 
-	mw_count = ntb_mw_count(ndev, PIDX);
+	mw_count = ntb_peer_mw_count(ndev);
 
 
 	if (!ndev->ops->mw_set_trans) {
 	if (!ndev->ops->mw_set_trans) {
 		dev_err(&ndev->dev, "Inbound MW based NTB API is required\n");
 		dev_err(&ndev->dev, "Inbound MW based NTB API is required\n");

+ 1 - 1
drivers/ntb/test/ntb_tool.c

@@ -959,7 +959,7 @@ static int tool_probe(struct ntb_client *self, struct ntb_dev *ntb)
 	tc->ntb = ntb;
 	tc->ntb = ntb;
 	init_waitqueue_head(&tc->link_wq);
 	init_waitqueue_head(&tc->link_wq);
 
 
-	tc->mw_count = min(ntb_mw_count(tc->ntb, PIDX), MAX_MWS);
+	tc->mw_count = min(ntb_peer_mw_count(tc->ntb), MAX_MWS);
 	for (i = 0; i < tc->mw_count; i++) {
 	for (i = 0; i < tc->mw_count; i++) {
 		rc = tool_init_mw(tc, i);
 		rc = tool_init_mw(tc, i);
 		if (rc)
 		if (rc)

+ 4 - 0
tools/testing/selftests/ntb/ntb_test.sh

@@ -333,6 +333,10 @@ function ntb_tool_tests()
 	link_test $LOCAL_TOOL $REMOTE_TOOL
 	link_test $LOCAL_TOOL $REMOTE_TOOL
 	link_test $REMOTE_TOOL $LOCAL_TOOL
 	link_test $REMOTE_TOOL $LOCAL_TOOL
 
 
+	#Ensure the link is up on both sides before continuing
+	write_file Y $LOCAL_TOOL/link_event
+	write_file Y $REMOTE_TOOL/link_event
+
 	for PEER_TRANS in $(ls $LOCAL_TOOL/peer_trans*); do
 	for PEER_TRANS in $(ls $LOCAL_TOOL/peer_trans*); do
 		PT=$(basename $PEER_TRANS)
 		PT=$(basename $PEER_TRANS)
 		write_file $MW_SIZE $LOCAL_TOOL/$PT
 		write_file $MW_SIZE $LOCAL_TOOL/$PT