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.pie...@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 { \
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to