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-head
mailing list