Author: sbruno
Date: Wed Jul 20 18:26:48 2016
New Revision: 303107
URL: https://svnweb.freebsd.org/changeset/base/303107

Log:
  MFC - r302384 to 10-STABLE
  Do not initialize the adapter on MTU change when adapter status is down.
  This fixes long-standing problems when changing settings of the adapter.
  
  Discussed in:
  https://lists.freebsd.org/pipermail/freebsd-net/2016-June/045509.html
  
  Differential Revision:        https://reviews.freebsd.org/D7254

Modified:
  stable/10/sys/dev/e1000/if_em.c
  stable/10/sys/dev/e1000/if_igb.c
  stable/10/sys/dev/e1000/if_lem.c
  stable/10/sys/dev/ixgb/if_ixgb.c
  stable/10/sys/dev/ixgbe/if_ix.c
  stable/10/sys/dev/ixgbe/if_ixv.c
  stable/10/sys/dev/ixl/if_ixl.c
  stable/10/sys/dev/ixl/if_ixlv.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/e1000/if_em.c
==============================================================================
--- stable/10/sys/dev/e1000/if_em.c     Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/e1000/if_em.c     Wed Jul 20 18:26:48 2016        
(r303107)
@@ -1220,7 +1220,8 @@ em_ioctl(struct ifnet *ifp, u_long comma
                ifp->if_mtu = ifr->ifr_mtu;
                adapter->hw.mac.max_frame_size =
                    ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
-               em_init_locked(adapter);
+               if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
+                       em_init_locked(adapter);
                EM_CORE_UNLOCK(adapter);
                break;
            }

Modified: stable/10/sys/dev/e1000/if_igb.c
==============================================================================
--- stable/10/sys/dev/e1000/if_igb.c    Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/e1000/if_igb.c    Wed Jul 20 18:26:48 2016        
(r303107)
@@ -1090,7 +1090,8 @@ igb_ioctl(struct ifnet *ifp, u_long comm
                ifp->if_mtu = ifr->ifr_mtu;
                adapter->max_frame_size =
                    ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
-               igb_init_locked(adapter);
+               if ((ifp->if_drv_flags & IFF_DRV_RUNNING))
+                       igb_init_locked(adapter);
                IGB_CORE_UNLOCK(adapter);
                break;
            }

Modified: stable/10/sys/dev/e1000/if_lem.c
==============================================================================
--- stable/10/sys/dev/e1000/if_lem.c    Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/e1000/if_lem.c    Wed Jul 20 18:26:48 2016        
(r303107)
@@ -1047,7 +1047,8 @@ lem_ioctl(struct ifnet *ifp, u_long comm
                ifp->if_mtu = ifr->ifr_mtu;
                adapter->max_frame_size =
                    ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
-               lem_init_locked(adapter);
+               if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING))
+                       lem_init_locked(adapter);
                EM_CORE_UNLOCK(adapter);
                break;
            }

Modified: stable/10/sys/dev/ixgb/if_ixgb.c
==============================================================================
--- stable/10/sys/dev/ixgb/if_ixgb.c    Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/ixgb/if_ixgb.c    Wed Jul 20 18:26:48 2016        
(r303107)
@@ -538,7 +538,8 @@ ixgb_ioctl(struct ifnet * ifp, IOCTL_CMD
                        adapter->hw.max_frame_size =
                                ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
 
-                       ixgb_init_locked(adapter);
+                       if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+                               ixgb_init_locked(adapter);
                        IXGB_UNLOCK(adapter);
                }
                break;

Modified: stable/10/sys/dev/ixgbe/if_ix.c
==============================================================================
--- stable/10/sys/dev/ixgbe/if_ix.c     Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/ixgbe/if_ix.c     Wed Jul 20 18:26:48 2016        
(r303107)
@@ -900,7 +900,8 @@ ixgbe_ioctl(struct ifnet * ifp, u_long c
                        ifp->if_mtu = ifr->ifr_mtu;
                        adapter->max_frame_size =
                                ifp->if_mtu + IXGBE_MTU_HDR;
-                       ixgbe_init_locked(adapter);
+                       if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+                               ixgbe_init_locked(adapter);
 #ifdef PCI_IOV
                        ixgbe_recalculate_max_frame(adapter);
 #endif

Modified: stable/10/sys/dev/ixgbe/if_ixv.c
==============================================================================
--- stable/10/sys/dev/ixgbe/if_ixv.c    Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/ixgbe/if_ixv.c    Wed Jul 20 18:26:48 2016        
(r303107)
@@ -587,7 +587,8 @@ ixv_ioctl(struct ifnet * ifp, u_long com
                        ifp->if_mtu = ifr->ifr_mtu;
                        adapter->max_frame_size =
                                ifp->if_mtu + IXGBE_MTU_HDR;
-                       ixv_init_locked(adapter);
+                       if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+                               ixv_init_locked(adapter);
                        IXGBE_CORE_UNLOCK(adapter);
                }
                break;

Modified: stable/10/sys/dev/ixl/if_ixl.c
==============================================================================
--- stable/10/sys/dev/ixl/if_ixl.c      Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/ixl/if_ixl.c      Wed Jul 20 18:26:48 2016        
(r303107)
@@ -1024,7 +1024,8 @@ ixl_ioctl(struct ifnet * ifp, u_long com
                        vsi->max_frame_size =
                                ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN
                            + ETHER_VLAN_ENCAP_LEN;
-                       ixl_init_locked(pf);
+                       if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+                               ixl_init_locked(pf);
                        IXL_PF_UNLOCK(pf);
                }
                break;

Modified: stable/10/sys/dev/ixl/if_ixlv.c
==============================================================================
--- stable/10/sys/dev/ixl/if_ixlv.c     Wed Jul 20 18:16:58 2016        
(r303106)
+++ stable/10/sys/dev/ixl/if_ixlv.c     Wed Jul 20 18:26:48 2016        
(r303107)
@@ -675,7 +675,8 @@ ixlv_ioctl(struct ifnet *ifp, u_long com
                        vsi->max_frame_size =
                            ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN
                            + ETHER_VLAN_ENCAP_LEN;
-                       ixlv_init_locked(sc);
+                       if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+                               ixlv_init_locked(sc);
                }
                mtx_unlock(&sc->mtx);
                break;
_______________________________________________
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