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@intel.com
MFC after:      2 weeks
Sponsored by:   Intel Corporation
This commit is contained in:
erj 2016-05-12 18:20:59 +00:00
parent d659ce9976
commit ae5dbad4c0
4 changed files with 51 additions and 33 deletions

View File

@ -2564,6 +2564,7 @@ enum i40e_status_code i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
(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_macvlan(struct i40e_hw *hw, u16 seid,
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;
}

View File

@ -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.

View File

@ -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_ARGS)
"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, struct ixl_vf *vf)
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;

View File

@ -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 { \