svn commit: r299551 - head/sys/dev/ixl

Eric Joyner erj at FreeBSD.org
Thu May 12 18:21:01 UTC 2016


Author: erj
Date: Thu May 12 18:20:59 2016
New Revision: 299551
URL: https://svnweb.freebsd.org/changeset/base/299551

Log:
  ixl: Update to 1.4.13-k.
  
  Changes:
  
  Shannon Nelson		i40e-shared: set shared bit for multicast filters
  Piotr Raczynski		i40e-shared: Bump AQ minor version for FVL/FPK
  Eric Joyner		ixl: Remove call to i40e_aq_set_mac_config() in init path.
  Eric Joyner		ixl: Always add interface mac address to driver+hw filter list.
  Eric Joyner		ixl: Edit comments.
  Eric Joyner		ixl: Add more descriptive sysctl help messages.
  Eric Joyner		ixl: Report more info in link_status sysctl.
  Eric Joyner		ixl: Flip set_aq_phy_int_mask mask bits.
  
  Differential Revision:  https://reviews.freebsd.org/D6211
  Reviewed by:    sbruno, kmacy, jeffrey.e.pieper at intel.com
  MFC after:      2 weeks
  Sponsored by:   Intel Corporation

Modified:
  head/sys/dev/ixl/i40e_common.c
  head/sys/dev/ixl/i40e_type.h
  head/sys/dev/ixl/if_ixl.c
  head/sys/dev/ixl/ixl_pf.h

Modified: head/sys/dev/ixl/i40e_common.c
==============================================================================
--- head/sys/dev/ixl/i40e_common.c	Thu May 12 18:20:52 2016	(r299550)
+++ head/sys/dev/ixl/i40e_common.c	Thu May 12 18:20:59 2016	(r299551)
@@ -2564,6 +2564,7 @@ enum i40e_status_code i40e_aq_add_macvla
 		(struct i40e_aqc_macvlan *)&desc.params.raw;
 	enum i40e_status_code status;
 	u16 buf_size;
+	int i;
 
 	if (count == 0 || !mv_list || !hw)
 		return I40E_ERR_PARAM;
@@ -2577,12 +2578,16 @@ enum i40e_status_code i40e_aq_add_macvla
 	cmd->seid[1] = 0;
 	cmd->seid[2] = 0;
 
+	for (i = 0; i < count; i++)
+		if (I40E_IS_MULTICAST(mv_list[i].mac_addr))
+			mv_list[i].flags |= 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;
 }

Modified: head/sys/dev/ixl/i40e_type.h
==============================================================================
--- head/sys/dev/ixl/i40e_type.h	Thu May 12 18:20:52 2016	(r299550)
+++ head/sys/dev/ixl/i40e_type.h	Thu May 12 18:20:59 2016	(r299551)
@@ -162,7 +162,7 @@ enum i40e_memcpy_type {
 };
 
 
-#define I40E_FW_API_VERSION_MINOR_X710	0x0004
+#define I40E_FW_API_VERSION_MINOR_X710	0x0005
 
 
 /* These are structs for managing the hardware information and the operations.

Modified: head/sys/dev/ixl/if_ixl.c
==============================================================================
--- head/sys/dev/ixl/if_ixl.c	Thu May 12 18:20:52 2016	(r299550)
+++ head/sys/dev/ixl/if_ixl.c	Thu May 12 18:20:59 2016	(r299551)
@@ -48,7 +48,7 @@
 /*********************************************************************
  *  Driver version
  *********************************************************************/
-char ixl_driver_version[] = "1.4.12-k";
+char ixl_driver_version[] = "1.4.13-k";
 
 /*********************************************************************
  *  PCI Device ID Table
@@ -1086,10 +1086,11 @@ ixl_init_locked(struct ixl_pf *pf)
 			 "change failed!!\n");
 			return;
 		} else {
-			ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY);
 		}
 	}
 
+	ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY);
+
 	/* Set the various hardware offload abilities */
 	ifp->if_hwassist = 0;
 	if (ifp->if_capenable & IFCAP_TSO)
@@ -1138,14 +1139,6 @@ ixl_init_locked(struct ixl_pf *pf)
 
 	ixl_reconfigure_filters(vsi);
 
-	/* Set MTU in hardware*/
-	int aq_error = i40e_aq_set_mac_config(hw, vsi->max_frame_size,
-	    TRUE, 0, NULL);
-	if (aq_error)
-		device_printf(vsi->dev,
-			"aq_set_mac_config in init error, code %d\n",
-		    aq_error);
-
 	/* And now turn on interrupts */
 	ixl_enable_intr(vsi);
 
@@ -1163,7 +1156,6 @@ ixl_init_locked(struct ixl_pf *pf)
 	return;
 }
 
-// XXX: super experimental stuff
 static int
 ixl_teardown_hw_structs(struct ixl_pf *pf)
 {
@@ -1918,6 +1910,8 @@ ixl_del_multi(struct ixl_vsi *vsi)
  *  This routine checks for link status,updates statistics,
  *  and runs the watchdog check.
  *
+ *  Only runs when the driver is configured UP and RUNNING.
+ *
  **********************************************************************/
 
 static void
@@ -4835,12 +4829,12 @@ ixl_add_device_sysctls(struct ixl_pf *pf
 	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
 	    OID_AUTO, "fc", CTLTYPE_INT | CTLFLAG_RW,
-	    pf, 0, ixl_set_flowcntl, "I", "Flow Control");
+	    pf, 0, ixl_set_flowcntl, "I", IXL_SYSCTL_HELP_FC);
 
 	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
 	    OID_AUTO, "advertise_speed", CTLTYPE_INT | CTLFLAG_RW,
-	    pf, 0, ixl_set_advertise, "I", "Advertised Speed");
+	    pf, 0, ixl_set_advertise, "I", IXL_SYSCTL_HELP_SET_ADVERTISE);
 
 	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
@@ -4878,21 +4872,16 @@ ixl_add_device_sysctls(struct ixl_pf *pf
 	    OID_AUTO, "debug", CTLTYPE_INT|CTLFLAG_RW, pf, 0,
 	    ixl_debug_info, "I", "Debug Information");
 
-	/* Debug shared-code message level */
+	/* Shared-code debug message level */
 	SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
 	    OID_AUTO, "debug_mask", CTLFLAG_RW,
 	    &pf->hw.debug_mask, 0, "Debug Message Level");
 
-	SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
-	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
-	    OID_AUTO, "vc_debug_level", CTLFLAG_RW, &pf->vc_debug_lvl,
-	    0, "PF/VF Virtual Channel debug level");
-
 	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
 	    OID_AUTO, "link_status", CTLTYPE_STRING | CTLFLAG_RD,
-	    pf, 0, ixl_sysctl_link_status, "A", "Current Link Status");
+	    pf, 0, ixl_sysctl_link_status, "A", IXL_SYSCTL_HELP_LINK_STATUS);
 
 	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
@@ -4913,6 +4902,13 @@ ixl_add_device_sysctls(struct ixl_pf *pf
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
 	    OID_AUTO, "switch_config", CTLTYPE_STRING | CTLFLAG_RD,
 	    pf, 0, ixl_sysctl_switch_config, "A", "HW Switch Configuration");
+
+#ifdef PCI_IOV
+	SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
+	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
+	    OID_AUTO, "vc_debug_level", CTLFLAG_RW, &pf->vc_debug_lvl,
+	    0, "PF/VF Virtual Channel debug level");
+#endif
 #endif
 }
 
@@ -5325,10 +5321,13 @@ ixl_sysctl_link_status(SYSCTL_HANDLER_AR
 	    "Speed    : %#04x\n" 
 	    "Link info: %#04x\n" 
 	    "AN info  : %#04x\n" 
-	    "Ext info : %#04x", 
+	    "Ext info : %#04x\n"
+	    "Max Frame: %d\n"
+	    "Pacing   : %#04x",
 	    link_status.phy_type, link_status.link_speed, 
 	    link_status.link_info, link_status.an_info,
-	    link_status.ext_info);
+	    link_status.ext_info, link_status.max_frame_size,
+	    link_status.pacing);
 
 	return (sysctl_handle_string(oidp, buf, strlen(buf), req));
 }
@@ -5683,6 +5682,7 @@ ixl_vf_alloc_vsi(struct ixl_pf *pf, stru
 	if (vf->vf_flags & VF_FLAG_MAC_ANTI_SPOOF)
 		vsi_ctx.info.sec_flags |= I40E_AQ_VSI_SEC_FLAG_ENABLE_MAC_CHK;
 
+	/* TODO: If a port VLAN is set, then this needs to be changed */
 	vsi_ctx.info.valid_sections |= htole16(I40E_AQ_VSI_PROP_VLAN_VALID);
 	vsi_ctx.info.port_vlan_flags = I40E_AQ_VSI_PVLAN_MODE_ALL |
 	    I40E_AQ_VSI_PVLAN_EMOD_NOTHING;

Modified: head/sys/dev/ixl/ixl_pf.h
==============================================================================
--- head/sys/dev/ixl/ixl_pf.h	Thu May 12 18:20:52 2016	(r299550)
+++ head/sys/dev/ixl/ixl_pf.h	Thu May 12 18:20:59 2016	(r299551)
@@ -122,16 +122,29 @@ struct ixl_pf {
      (((((((('E' << 4) + '1') << 4) + 'K') << 4) + 'G') << 4) | 5)
 
 #define IXL_DEFAULT_PHY_INT_MASK \
-     (I40E_AQ_EVENT_LINK_UPDOWN | I40E_AQ_EVENT_MODULE_QUAL_FAIL)
+     ((~(I40E_AQ_EVENT_LINK_UPDOWN | I40E_AQ_EVENT_MODULE_QUAL_FAIL \
+      | I40E_AQ_EVENT_MEDIA_NA)) & 0x3FF)
 
-#define IXL_SET_ADVERTISE_HELP		\
-"Control link advertise speed:\n"	\
-"\tFlags:\n"				\
-"\t\t0x1 - advertise 100 Mb\n"		\
-"\t\t0x2 - advertise 1G\n"		\
-"\t\t0x4 - advertise 10G\n"		\
-"\t\t0x8 - advertise 20G\n\n"		\
-"\tDoes not work on 40G devices."
+/* Sysctl help messages; displayed with "sysctl -d" */
+#define IXL_SYSCTL_HELP_SET_ADVERTISE	\
+"\nControl advertised link speed.\n"	\
+"Flags:\n"				\
+"\t0x1 - advertise 100M\n"		\
+"\t0x2 - advertise 1G\n"		\
+"\t0x4 - advertise 10G\n"		\
+"\t0x8 - advertise 20G\n\n"		\
+"Operation not supported on 40G devices."
+
+#define IXL_SYSCTL_HELP_FC				\
+"\nSet flow control mode using the values below.\n" 	\
+"\t0 - off\n" 						\
+"\t1 - rx pause\n" 					\
+"\t2 - tx pause\n"					\
+"\t3 - tx and rx pause"
+
+#define IXL_SYSCTL_HELP_LINK_STATUS					\
+"\nExecutes a \"Get Link Status\" command on the Admin Queue, and displays" \
+" the response."			\
 
 #define	I40E_VC_DEBUG(pf, level, ...) \
 	do { \


More information about the svn-src-all mailing list