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