diff mbox

[v2,next,S27,03/15] i40e: set shared bit for multicast filters

Message ID 1452732712-12248-4-git-send-email-joshua.a.hay@intel.com
State Accepted
Delegated to: Jeff Kirsher
Headers show

Commit Message

Joshua Hay Jan. 14, 2016, 12:51 a.m. UTC
From: Shannon Nelson <shannon.nelson@intel.com>

Add the use of the new Shared MAC filter bit for multicast and broadcast
filters in order to make better use of the filters available from the
device.  The FW folks have assured me that setting this bit on older FW
will have no affect, so we don't need a version check.

Also fixed a stray indent problem nearby.

Also update copyright year.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: I4c5826a32594382a7937a592a24d228588cee7aa
---
Testing Hints (required if no HSD):
	Disable link polling: ethtool --set-priv-flags p261p1 LinkPolling off
	Eanble AQ debug: ethtool -s p261p1 msglvl 0xff00000f
	Add a new vlan: ip link add link p261p1 name p261p1.v10 type vlan id 10
		This will generate an add macvlan request and dump the trace
		in dmesg.  Make sure that the value in byte 8 for multicast
		and broadcast addresses is '11' as shown here:
    14594.033921] i40e 00.0        0x0010  FF FF FF FF FF FF 0A 00 11 00 00 00 00 00 00 00
    		and should be '01' for unicast address.  If running on older
		firmware, e.g. FVL4, this byte will always be '01'.

 drivers/net/ethernet/intel/i40e/i40e_common.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Comments

Bowers, AndrewX Jan. 19, 2016, 9:40 p.m. UTC | #1
> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, January 13, 2016 4:52 PM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [v2 next PATCH S27 03/15] i40e: set shared bit for
> multicast filters
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> Add the use of the new Shared MAC filter bit for multicast and broadcast
> filters in order to make better use of the filters available from the device.
> The FW folks have assured me that setting this bit on older FW will have no
> affect, so we don't need a version check.
> 
> Also fixed a stray indent problem nearby.
> 
> Also update copyright year.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: I4c5826a32594382a7937a592a24d228588cee7aa
> ---
> Testing Hints (required if no HSD):
> 	Disable link polling: ethtool --set-priv-flags p261p1 LinkPolling off
> 	Eanble AQ debug: ethtool -s p261p1 msglvl 0xff00000f
> 	Add a new vlan: ip link add link p261p1 name p261p1.v10 type vlan id
> 10
> 		This will generate an add macvlan request and dump the
> trace
> 		in dmesg.  Make sure that the value in byte 8 for multicast
> 		and broadcast addresses is '11' as shown here:
>     14594.033921] i40e 00.0        0x0010  FF FF FF FF FF FF 0A 00 11 00 00 00 00 00
> 00 00
>     		and should be '01' for unicast address.  If running on older
> 		firmware, e.g. FVL4, this byte will always be '01'.
> 
>  drivers/net/ethernet/intel/i40e/i40e_common.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied, correct information shown in trace dump
diff mbox

Patch

diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index dd9997b..e41c8af 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -1,7 +1,7 @@ 
 /*******************************************************************************
  *
  * Intel Ethernet Controller XL710 Family Linux Driver
- * Copyright(c) 2013 - 2015 Intel Corporation.
+ * Copyright(c) 2013 - 2016 Intel Corporation.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms and conditions of the GNU General Public License,
@@ -2435,6 +2435,7 @@  i40e_status i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
 		(struct i40e_aqc_macvlan *)&desc.params.raw;
 	i40e_status status;
 	u16 buf_size;
+	int i;
 
 	if (count == 0 || !mv_list || !hw)
 		return I40E_ERR_PARAM;
@@ -2448,12 +2449,17 @@  i40e_status i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
 	cmd->seid[1] = 0;
 	cmd->seid[2] = 0;
 
+	for (i = 0; i < count; i++)
+		if (is_multicast_ether_addr(mv_list[i].mac_addr))
+			mv_list[i].flags |=
+			       cpu_to_le16(I40E_AQC_MACVLAN_ADD_USE_SHARED_MAC);
+
 	desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD));
 	if (buf_size > I40E_AQ_LARGE_BUF)
 		desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB);
 
 	status = i40e_asq_send_command(hw, &desc, mv_list, buf_size,
-				    cmd_details);
+				       cmd_details);
 
 	return status;
 }