aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/cxgbi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/cxgbi')
-rw-r--r--drivers/scsi/cxgbi/cxgb3i/cxgb3i.c2
-rw-r--r--drivers/scsi/cxgbi/cxgb4i/cxgb4i.c8
-rw-r--r--drivers/scsi/cxgbi/libcxgbi.c10
3 files changed, 16 insertions, 4 deletions
diff --git a/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c b/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
index 000294a9df80..36739da8bc15 100644
--- a/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
+++ b/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c
@@ -966,7 +966,7 @@ static int init_act_open(struct cxgbi_sock *csk)
966 csk->saddr.sin_addr.s_addr = chba->ipv4addr; 966 csk->saddr.sin_addr.s_addr = chba->ipv4addr;
967 967
968 csk->rss_qid = 0; 968 csk->rss_qid = 0;
969 csk->l2t = t3_l2t_get(t3dev, dst_get_neighbour(dst), ndev); 969 csk->l2t = t3_l2t_get(t3dev, dst, ndev);
970 if (!csk->l2t) { 970 if (!csk->l2t) {
971 pr_err("NO l2t available.\n"); 971 pr_err("NO l2t available.\n");
972 return -EINVAL; 972 return -EINVAL;
diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
index ac7a9b1e3e23..5a4a3bfc60cf 100644
--- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
+++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
@@ -1127,6 +1127,7 @@ static int init_act_open(struct cxgbi_sock *csk)
1127 struct net_device *ndev = cdev->ports[csk->port_id]; 1127 struct net_device *ndev = cdev->ports[csk->port_id];
1128 struct port_info *pi = netdev_priv(ndev); 1128 struct port_info *pi = netdev_priv(ndev);
1129 struct sk_buff *skb = NULL; 1129 struct sk_buff *skb = NULL;
1130 struct neighbour *n;
1130 unsigned int step; 1131 unsigned int step;
1131 1132
1132 log_debug(1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK, 1133 log_debug(1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK,
@@ -1141,7 +1142,12 @@ static int init_act_open(struct cxgbi_sock *csk)
1141 cxgbi_sock_set_flag(csk, CTPF_HAS_ATID); 1142 cxgbi_sock_set_flag(csk, CTPF_HAS_ATID);
1142 cxgbi_sock_get(csk); 1143 cxgbi_sock_get(csk);
1143 1144
1144 csk->l2t = cxgb4_l2t_get(lldi->l2t, dst_get_neighbour(csk->dst), ndev, 0); 1145 n = dst_get_neighbour_noref(csk->dst);
1146 if (!n) {
1147 pr_err("%s, can't get neighbour of csk->dst.\n", ndev->name);
1148 goto rel_resource;
1149 }
1150 csk->l2t = cxgb4_l2t_get(lldi->l2t, n, ndev, 0);
1145 if (!csk->l2t) { 1151 if (!csk->l2t) {
1146 pr_err("%s, cannot alloc l2t.\n", ndev->name); 1152 pr_err("%s, cannot alloc l2t.\n", ndev->name);
1147 goto rel_resource; 1153 goto rel_resource;
diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
index 997fa36999be..c5360ffb4bed 100644
--- a/drivers/scsi/cxgbi/libcxgbi.c
+++ b/drivers/scsi/cxgbi/libcxgbi.c
@@ -472,6 +472,7 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
472 struct net_device *ndev; 472 struct net_device *ndev;
473 struct cxgbi_device *cdev; 473 struct cxgbi_device *cdev;
474 struct rtable *rt = NULL; 474 struct rtable *rt = NULL;
475 struct neighbour *n;
475 struct flowi4 fl4; 476 struct flowi4 fl4;
476 struct cxgbi_sock *csk = NULL; 477 struct cxgbi_sock *csk = NULL;
477 unsigned int mtu = 0; 478 unsigned int mtu = 0;
@@ -493,7 +494,12 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
493 goto err_out; 494 goto err_out;
494 } 495 }
495 dst = &rt->dst; 496 dst = &rt->dst;
496 ndev = dst_get_neighbour(dst)->dev; 497 n = dst_get_neighbour_noref(dst);
498 if (!n) {
499 err = -ENODEV;
500 goto rel_rt;
501 }
502 ndev = n->dev;
497 503
498 if (rt->rt_flags & (RTCF_MULTICAST | RTCF_BROADCAST)) { 504 if (rt->rt_flags & (RTCF_MULTICAST | RTCF_BROADCAST)) {
499 pr_info("multi-cast route %pI4, port %u, dev %s.\n", 505 pr_info("multi-cast route %pI4, port %u, dev %s.\n",
@@ -507,7 +513,7 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
507 ndev = ip_dev_find(&init_net, daddr->sin_addr.s_addr); 513 ndev = ip_dev_find(&init_net, daddr->sin_addr.s_addr);
508 mtu = ndev->mtu; 514 mtu = ndev->mtu;
509 pr_info("rt dev %s, loopback -> %s, mtu %u.\n", 515 pr_info("rt dev %s, loopback -> %s, mtu %u.\n",
510 dst_get_neighbour(dst)->dev->name, ndev->name, mtu); 516 n->dev->name, ndev->name, mtu);
511 } 517 }
512 518
513 cdev = cxgbi_device_find_by_netdev(ndev, &port); 519 cdev = cxgbi_device_find_by_netdev(ndev, &port);