Commit fff4e7a0 authored by Linus Torvalds's avatar Linus Torvalds

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
parents a8b169af 0eb46345
...@@ -924,10 +924,8 @@ static void ntb_transport_link_work(struct work_struct *work) ...@@ -924,10 +924,8 @@ static void ntb_transport_link_work(struct work_struct *work)
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) { if (rc < 0)
ntb_link_disable(ndev);
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) ...@@ -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");
......
...@@ -959,7 +959,7 @@ static int tool_probe(struct ntb_client *self, struct ntb_dev *ntb) ...@@ -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)
......
...@@ -333,6 +333,10 @@ function ntb_tool_tests() ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment