Module Name: src Committed By: msaitoh Date: Wed Sep 18 06:06:59 UTC 2019
Modified Files: src/sys/dev/pci/ixgbe: ixgbe.c Log Message: Remove ixgbe_set_promisc() and use ixgbe_set_multi() to reduce code duplication. To generate a diff of this commit: cvs rdiff -u -r1.211 -r1.212 src/sys/dev/pci/ixgbe/ixgbe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.211 src/sys/dev/pci/ixgbe/ixgbe.c:1.212 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.211 Wed Sep 18 05:32:15 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Wed Sep 18 06:06:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.211 2019/09/18 05:32:15 msaitoh Exp $ */ +/* $NetBSD: ixgbe.c,v 1.212 2019/09/18 06:06:59 msaitoh Exp $ */ /****************************************************************************** @@ -211,7 +211,6 @@ static void ixgbe_initialize_rss_mapping static void ixgbe_enable_intr(struct adapter *); static void ixgbe_disable_intr(struct adapter *); static void ixgbe_update_stats_counters(struct adapter *); -static void ixgbe_set_promisc(struct adapter *); static void ixgbe_set_multi(struct adapter *); static void ixgbe_update_link_status(struct adapter *); static void ixgbe_set_ivar(struct adapter *, u8, u8, s8); @@ -3042,49 +3041,6 @@ invalid: } /* ixgbe_media_change */ /************************************************************************ - * ixgbe_set_promisc - ************************************************************************/ -static void -ixgbe_set_promisc(struct adapter *adapter) -{ - struct ifnet *ifp = adapter->ifp; - int mcnt = 0; - u32 rctl; - struct ether_multi *enm; - struct ether_multistep step; - struct ethercom *ec = &adapter->osdep.ec; - - KASSERT(mutex_owned(&adapter->core_mtx)); - rctl = IXGBE_READ_REG(&adapter->hw, IXGBE_FCTRL); - rctl &= (~IXGBE_FCTRL_UPE); - ETHER_LOCK(ec); - if (ec->ec_flags & ETHER_F_ALLMULTI) - mcnt = MAX_NUM_MULTICAST_ADDRESSES; - else { - ETHER_FIRST_MULTI(step, ec, enm); - while (enm != NULL) { - if (mcnt == MAX_NUM_MULTICAST_ADDRESSES) - break; - mcnt++; - ETHER_NEXT_MULTI(step, enm); - } - } - if (mcnt < MAX_NUM_MULTICAST_ADDRESSES) - rctl &= (~IXGBE_FCTRL_MPE); - IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, rctl); - - if (ifp->if_flags & IFF_PROMISC) { - rctl |= (IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE); - IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, rctl); - } else if (ec->ec_flags & ETHER_F_ALLMULTI) { - rctl |= IXGBE_FCTRL_MPE; - rctl &= ~IXGBE_FCTRL_UPE; - IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, rctl); - } - ETHER_UNLOCK(ec); -} /* ixgbe_set_promisc */ - -/************************************************************************ * ixgbe_msix_link - Link status change ISR (MSI/MSI-X) ************************************************************************/ static int @@ -4423,12 +4379,13 @@ ixgbe_set_multi(struct adapter *adapter) } fctrl = IXGBE_READ_REG(&adapter->hw, IXGBE_FCTRL); - fctrl &= ~(IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE); if (ifp->if_flags & IFF_PROMISC) fctrl |= (IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE); else if (ec->ec_flags & ETHER_F_ALLMULTI) { fctrl |= IXGBE_FCTRL_MPE; - } + fctrl &= ~IXGBE_FCTRL_UPE; + } else + fctrl &= ~(IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE); IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, fctrl); @@ -4440,7 +4397,6 @@ ixgbe_set_multi(struct adapter *adapter) ixgbe_mc_array_itr, TRUE); } else ETHER_UNLOCK(ec); - } /* ixgbe_set_multi */ /************************************************************************ @@ -6219,7 +6175,7 @@ ixgbe_ifflags_cb(struct ethercom *ec) rv = ENETRESET; goto out; } else if ((change & IFF_PROMISC) != 0) - ixgbe_set_promisc(adapter); + ixgbe_set_multi(adapter); /* Check for ec_capenable. */ change = ec->ec_capenable ^ adapter->ec_capenable;