From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9918FC47089 for ; Wed, 26 May 2021 17:22:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 74D8A600D1 for ; Wed, 26 May 2021 17:22:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234291AbhEZRXu (ORCPT ); Wed, 26 May 2021 13:23:50 -0400 Received: from mga07.intel.com ([134.134.136.100]:18168 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234330AbhEZRXf (ORCPT ); Wed, 26 May 2021 13:23:35 -0400 IronPort-SDR: 8iFAhhynVAfC8FOurIBEOa8HDpchZ6JVAFhJcIwm6GOueFWMC/y4b2B4RuKN/jcs7STLhFb3bo YAezxNgKdQWQ== X-IronPort-AV: E=McAfee;i="6200,9189,9996"; a="266415788" X-IronPort-AV: E=Sophos;i="5.82,331,1613462400"; d="scan'208";a="266415788" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2021 10:21:27 -0700 IronPort-SDR: 927Ob17ZMQWn3O/BSqj++74qUeu7KMMbS+BZrAcNQQVLffucq2zJ8c+s3sr6XeKVRRJtAma1Ua 2YkdQN+bTQMQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,331,1613462400"; d="scan'208";a="443149207" Received: from anguy11-desk2.jf.intel.com ([10.166.244.147]) by orsmga008.jf.intel.com with ESMTP; 26 May 2021 10:21:26 -0700 From: Tony Nguyen To: davem@davemloft.net, kuba@kernel.org Cc: Jesse Brandeburg , netdev@vger.kernel.org, sassmann@redhat.com, anthony.l.nguyen@intel.com, Dave Switzer Subject: [PATCH net-next 05/11] igb: handle vlan types with checker enabled Date: Wed, 26 May 2021 10:23:40 -0700 Message-Id: <20210526172346.3515587-6-anthony.l.nguyen@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210526172346.3515587-1-anthony.l.nguyen@intel.com> References: <20210526172346.3515587-1-anthony.l.nguyen@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jesse Brandeburg The sparse build (C=2) finds some issues with how the driver dealt with the (very difficult) hardware that in some generations uses little-endian, and in others uses big endian, for the VLAN field. The code as written picks __le16 as a type and for some hardware revisions we override it to __be16 as done in this patch. This impacted the VF driver as well so fix it there too. Also change the vlan_tci assignment to override the sparse warning without changing functionality. Signed-off-by: Jesse Brandeburg Tested-by: Dave Switzer Signed-off-by: Tony Nguyen --- Warning Detail: .../igb/igb_main.c:2644:48: warning: incorrect type in assignment (different base types) .../igb/igb_main.c:2644:48: expected restricted __be16 [usertype] vlan_tci .../igb/igb_main.c:2644:48: got unsigned short [usertype] vlan_priority:3 .../igb/igb_main.c:8608:31: warning: cast to restricted __be16 .../igb/igb_main.c:8608:31: warning: cast from restricted __le16 .../igb/igb_main.c:8608:31: warning: cast to restricted __be16 .../igb/igb_main.c:8608:31: warning: cast from restricted __le16 .../igb/igb_main.c:8608:31: warning: cast to restricted __be16 .../igb/igb_main.c:8608:31: warning: cast from restricted __le16 .../igb/igb_main.c:8608:31: warning: cast to restricted __be16 .../igb/igb_main.c:8608:31: warning: cast from restricted __le16 .../igbvf/netdev.c:93:31: warning: cast to restricted __be16 .../igbvf/netdev.c:93:31: warning: cast to restricted __be16 .../igbvf/netdev.c:93:31: warning: cast to restricted __be16 .../igbvf/netdev.c:93:31: warning: cast to restricted __be16 .../igbvf/netdev.c:95:31: warning: cast to restricted __le16 --- drivers/net/ethernet/intel/igb/igb_main.c | 5 +++-- drivers/net/ethernet/intel/igbvf/netdev.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index cf91e3624a89..3a96b61a7229 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -2643,7 +2643,8 @@ static int igb_parse_cls_flower(struct igb_adapter *adapter, } input->filter.match_flags |= IGB_FILTER_FLAG_VLAN_TCI; - input->filter.vlan_tci = match.key->vlan_priority; + input->filter.vlan_tci = + (__force __be16)match.key->vlan_priority; } } @@ -8597,7 +8598,7 @@ static void igb_process_skb_fields(struct igb_ring *rx_ring, if (igb_test_staterr(rx_desc, E1000_RXDEXT_STATERR_LB) && test_bit(IGB_RING_FLAG_RX_LB_VLAN_BSWAP, &rx_ring->flags)) - vid = be16_to_cpu(rx_desc->wb.upper.vlan); + vid = be16_to_cpu((__force __be16)rx_desc->wb.upper.vlan); else vid = le16_to_cpu(rx_desc->wb.upper.vlan); diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c index fb3fbcb13331..630c1155f196 100644 --- a/drivers/net/ethernet/intel/igbvf/netdev.c +++ b/drivers/net/ethernet/intel/igbvf/netdev.c @@ -83,14 +83,14 @@ static int igbvf_desc_unused(struct igbvf_ring *ring) static void igbvf_receive_skb(struct igbvf_adapter *adapter, struct net_device *netdev, struct sk_buff *skb, - u32 status, u16 vlan) + u32 status, __le16 vlan) { u16 vid; if (status & E1000_RXD_STAT_VP) { if ((adapter->flags & IGBVF_FLAG_RX_LB_VLAN_BSWAP) && (status & E1000_RXDEXT_STATERR_LB)) - vid = be16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK; + vid = be16_to_cpu((__force __be16)vlan) & E1000_RXD_SPC_VLAN_MASK; else vid = le16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK; if (test_bit(vid, adapter->active_vlans)) -- 2.26.2