[PATCH] fcoe: Fix a vlan tagging problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I was testing upstream FCoE and noticed that I was no longer able to find any
luns, nor were any of my fc_host devices comming out of Offline state.  I took
some tcpdumps of the problem and noted that my FLOGI requests were getting
accepted but what should have been my PLOGI requests, were getting interpreted
by wireshark as uncategorized FCP data.  There was a vlan header, but the
ethertype was all zeros, causing it, and all subsequent data to get
misinterpreted.  Looking further, I noted that in fcoe_xmit, the path that
handles PLOGI requests does some manual vlan tag addition, rather than using
vlan_put_tag as it should.  I'm honestly not sure how it ever worked, as I don't
see that the manual tag addition ever set the h_vlan_proto field to
htons(ETH_P_8021Q) as it should have.  I assume that just worked by luck, and
some recent change in the vlan code caused it to stop functioning.  At any rate,
I've tested out the below fix, and this properly tags frames with a vlan in both
the non-accelerated and hw accelerated case.

Signed-off-by: Neil Horman <nhorman@xxxxxxxxxxxxx>
CC: Robert Love <robert.w.love@xxxxxxxxx>
CC: stable@xxxxxxxxxxxxxxx
---
 drivers/scsi/fcoe/fcoe.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index fc7bb1f..731c471 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -1660,9 +1660,8 @@ static int fcoe_xmit(struct fc_lport *lport, struct fc_frame *fp)
 
 	if (fcoe->netdev->priv_flags & IFF_802_1Q_VLAN &&
 	    fcoe->realdev->features & NETIF_F_HW_VLAN_CTAG_TX) {
-		skb->vlan_tci = VLAN_TAG_PRESENT |
-				vlan_dev_vlan_id(fcoe->netdev);
 		skb->dev = fcoe->realdev;
+		vlan_put_tag(skb, htons(ETH_P_8021Q), vlan_dev_vlan_id(fcoe->netdev));
 	} else
 		skb->dev = fcoe->netdev;
 
-- 
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]