cxgb4: offload VLAN flows regardless of VLAN ethtype [Linux 5.2]

cxgb4: offload VLAN flows regardless of VLAN ethtype [Linux 5.2]

This Linux kernel change "cxgb4: offload VLAN flows regardless of VLAN ethtype" is included in the Linux 5.2 release. This change is authored by Raju Rangoju <rajur [at] chelsio.com> on Thu May 23 20:41:44 2019 +0530. The commit for this change in Linux stable tree is b573006 (patch).

cxgb4: offload VLAN flows regardless of VLAN ethtype

VLAN flows never get offloaded unless ivlan_vld is set in filter spec.
It's not compulsory for vlan_ethtype to be set.

So, always enable ivlan_vld bit for offloading VLAN flows regardless of
vlan_ethtype is set or not.

Fixes: ad9af3e09c (cxgb4: add tc flower match support for vlan)
Signed-off-by: Raju Rangoju <[email protected]>
Signed-off-by: David S. Miller <[email protected]>

There are 5 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
index 6e2d800..cfaf8f6 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
@@ -197,6 +197,9 @@ static void cxgb4_process_flow_match(struct net_device *dev,
        fs->val.ivlan = vlan_tci;
        fs->mask.ivlan = vlan_tci_mask;

+       fs->val.ivlan_vld = 1;
+       fs->mask.ivlan_vld = 1;
+
        /* Chelsio adapters use ivlan_vld bit to match vlan packets
         * as 802.1Q. Also, when vlan tag is present in packets,
         * ethtype match is used then to match on ethtype of inner
@@ -207,8 +210,6 @@ static void cxgb4_process_flow_match(struct net_device *dev,
         * ethtype value with ethtype of inner header.
         */
        if (fs->val.ethtype == ETH_P_8021Q) {
-           fs->val.ivlan_vld = 1;
-           fs->mask.ivlan_vld = 1;
            fs->val.ethtype = 0;
            fs->mask.ethtype = 0;
        }

Leave a Reply

Your email address will not be published. Required fields are marked *