diff mbox

[net-next] ibmvnic: fix accelerated VLAN handling

Message ID 8e3c0fc229bbbc549e2529e3c174b7ef477b181c.1483487887.git.mirq-linux@rere.qmqm.pl
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Michał Mirosław Jan. 4, 2017, 12:07 a.m. UTC
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
---
 drivers/net/ethernet/ibm/ibmvnic.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

kernel test robot Jan. 4, 2017, 2:36 a.m. UTC | #1
Hi Michał,

[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Micha-Miros-aw/ibmvnic-fix-accelerated-VLAN-handling/20170104-095210
config: powerpc-allmodconfig (attached as .config)
compiler: powerpc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=powerpc 

All errors (new ones prefixed by >>):

   drivers/net/ethernet/ibm/ibmvnic.c: In function 'ibmvnic_xmit':
>> drivers/net/ethernet/ibm/ibmvnic.c:768:40: error: implicit declaration of function 'skb_vlan_tag_present' [-Werror=implicit-function-declaration]
     if (adapter->vlan_header_insertion && skb_vlan_tag_present(skb)) {
                                           ^~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/ibm/ibmvnic.c: In function 'ibmvnic_poll':
>> drivers/net/ethernet/ibm/ibmvnic.c:968:4: error: implicit declaration of function '__vlan_hwaccel_put_tag' [-Werror=implicit-function-declaration]
       __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), be16_to_cpu(next->rx_comp.vlan_tci));
       ^~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/skb_vlan_tag_present +768 drivers/net/ethernet/ibm/ibmvnic.c

   762		tx_crq.v1.flags1 = IBMVNIC_TX_COMP_NEEDED;
   763		tx_crq.v1.correlator = cpu_to_be32(index);
   764		tx_crq.v1.dma_reg = cpu_to_be16(tx_pool->long_term_buff.map_id);
   765		tx_crq.v1.sge_len = cpu_to_be32(skb->len);
   766		tx_crq.v1.ioba = cpu_to_be64(data_dma_addr);
   767	
 > 768		if (adapter->vlan_header_insertion && skb_vlan_tag_present(skb)) {
   769			tx_crq.v1.flags2 |= IBMVNIC_TX_VLAN_INSERT;
   770			tx_crq.v1.vlan_id = cpu_to_be16(skb->vlan_tci);
   771		}

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index c12596676bbb..c7664db9019c 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -765,7 +765,7 @@  static int ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
 	tx_crq.v1.sge_len = cpu_to_be32(skb->len);
 	tx_crq.v1.ioba = cpu_to_be64(data_dma_addr);
 
-	if (adapter->vlan_header_insertion) {
+	if (adapter->vlan_header_insertion && skb_vlan_tag_present(skb)) {
 		tx_crq.v1.flags2 |= IBMVNIC_TX_VLAN_INSERT;
 		tx_crq.v1.vlan_id = cpu_to_be16(skb->vlan_tci);
 	}
@@ -964,7 +964,8 @@  static int ibmvnic_poll(struct napi_struct *napi, int budget)
 		skb = rx_buff->skb;
 		skb_copy_to_linear_data(skb, rx_buff->data + offset,
 					length);
-		skb->vlan_tci = be16_to_cpu(next->rx_comp.vlan_tci);
+		if (flags & IBMVNIC_VLAN_STRIPPED)
+			__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), be16_to_cpu(next->rx_comp.vlan_tci));
 		/* free the entry */
 		next->rx_comp.first = 0;
 		remove_buff_from_pool(adapter, rx_buff);