In case of vlan pass 0 as ifindex to find route instead of
passing real_dev ifindex, if we pass real_dev ifindex
then ip_route_output_ports() and ip6_route_output() will
check for route through real_dev not through vlan interface.

Signed-off-by: Varun Prakash <va...@chelsio.com>
---
 drivers/scsi/cxgbi/libcxgbi.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
index 512c8f1..8503ac9 100644
--- a/drivers/scsi/cxgbi/libcxgbi.c
+++ b/drivers/scsi/cxgbi/libcxgbi.c
@@ -2556,7 +2556,10 @@ struct iscsi_endpoint *cxgbi_ep_connect(struct Scsi_Host 
*shost,
                        goto err_out;
                }
 
-               ifindex = hba->ndev->ifindex;
+               rtnl_lock();
+               if (!vlan_uses_dev(hba->ndev))
+                       ifindex = hba->ndev->ifindex;
+               rtnl_unlock();
        }
 
        if (dst_addr->sa_family == AF_INET) {
-- 
2.0.2

Reply via email to