Date: Tue, 27 Apr 2010 00:58:19 +0000 (UTC) From: Juli Mallett <jmallett@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r207255 - user/jmallett/octeon/sys/mips/cavium/octe Message-ID: <201004270058.o3R0wJWX051894@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jmallett Date: Tue Apr 27 00:58:19 2010 New Revision: 207255 URL: http://svn.freebsd.org/changeset/base/207255 Log: Turn on use of cvm_oct_common_set_multicast_list to handle IFF_ALLMULTI and IFF_PROMISC. Update a comment. Fix some indentation. Modified: user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.c user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.h user/jmallett/octeon/sys/mips/cavium/octe/octe.c Modified: user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.c ============================================================================== --- user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.c Tue Apr 27 00:44:40 2010 (r207254) +++ user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.c Tue Apr 27 00:58:19 2010 (r207255) @@ -98,9 +98,8 @@ static struct ifnet_stats *cvm_oct_commo * * @param dev Device to work on */ -static void cvm_oct_common_set_multicast_list(struct ifnet *ifp) +void cvm_oct_common_set_multicast_list(struct ifnet *ifp) { -#if 0 cvmx_gmxx_prtx_cfg_t gmx_cfg; cvm_oct_private_t *priv = (cvm_oct_private_t *)ifp->if_softc; int interface = INTERFACE(priv->port); @@ -111,13 +110,13 @@ static void cvm_oct_common_set_multicast control.u64 = 0; control.s.bcst = 1; /* Allow broadcast MAC addresses */ - if (ifp->mc_list || (ifp->flags&IFF_ALLMULTI) || - (ifp->flags & IFF_PROMISC)) + if (/*ifp->mc_list || */(ifp->if_flags&IFF_ALLMULTI) || + (ifp->if_flags & IFF_PROMISC)) control.s.mcst = 2; /* Force accept multicast packets */ else control.s.mcst = 1; /* Force reject multicat packets */ - if (ifp->flags & IFF_PROMISC) + if (ifp->if_flags & IFF_PROMISC) control.s.cam_mode = 0; /* Reject matches if promisc. Since CAM is shut off, should accept everything */ else control.s.cam_mode = 1; /* Filter packets based on the CAM */ @@ -126,14 +125,13 @@ static void cvm_oct_common_set_multicast cvmx_write_csr(CVMX_GMXX_PRTX_CFG(index, interface), gmx_cfg.u64 & ~1ull); cvmx_write_csr(CVMX_GMXX_RXX_ADR_CTL(index, interface), control.u64); - if (ifp->flags&IFF_PROMISC) + if (ifp->if_flags&IFF_PROMISC) cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM_EN(index, interface), 0); else cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM_EN(index, interface), 1); cvmx_write_csr(CVMX_GMXX_PRTX_CFG(index, interface), gmx_cfg.u64); } -#endif } @@ -262,7 +260,6 @@ int cvm_oct_common_init(struct ifnet *if #if 0 ifp->get_stats = cvm_oct_common_get_stats; ifp->set_mac_address = cvm_oct_common_set_mac_address; - ifp->set_multicast_list = cvm_oct_common_set_multicast_list; ifp->features |= NETIF_F_LLTX; /* We do our own locking, Linux doesn't need to */ #ifdef CONFIG_NET_POLL_CONTROLLER ifp->poll_controller = cvm_oct_poll_controller; Modified: user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.h ============================================================================== --- user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.h Tue Apr 27 00:44:40 2010 (r207254) +++ user/jmallett/octeon/sys/mips/cavium/octe/ethernet-common.h Tue Apr 27 00:58:19 2010 (r207255) @@ -31,6 +31,7 @@ int cvm_oct_common_init(struct ifnet *if void cvm_oct_common_uninit(struct ifnet *ifp); int cvm_oct_common_change_mtu(struct ifnet *ifp, int new_mtu); +void cvm_oct_common_set_multicast_list(struct ifnet *ifp); int cvm_oct_init_module(device_t); void cvm_oct_cleanup_module(void); Modified: user/jmallett/octeon/sys/mips/cavium/octe/octe.c ============================================================================== --- user/jmallett/octeon/sys/mips/cavium/octe/octe.c Tue Apr 27 00:44:40 2010 (r207254) +++ user/jmallett/octeon/sys/mips/cavium/octe/octe.c Tue Apr 27 00:58:19 2010 (r207255) @@ -238,8 +238,10 @@ octe_init(void *arg) if (priv->miibus != NULL) mii_mediachg(device_get_softc(priv->miibus)); - ifp->if_drv_flags |= IFF_DRV_RUNNING; - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + cvm_oct_common_set_multicast_list(ifp); + + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; } static void @@ -279,21 +281,15 @@ octe_start(struct ifnet *ifp) * two very good reasons: * (1) immediately after our inserting it another CPU may be * kind enough to free it for us. - * (2) m_defrag gets called on m and we don't get back the + * (2) m_collapse gets called on m and we don't get back the * modified pointer. * - * We have some options other than this m_dup route: + * We have some options other than an m_dup route: * (1) use a mutex or spinlock to prevent another CPU from * freeing it. We could lock the tx_free_list's lock, * that would make sense. * (2) get back the new mbuf pointer. - * (3) do the defrag here. - * - * #3 makes sense in the long run when we have code that can - * load mbufs into any number of segments, but for now the - * transmit code is called with the assumption that it knows - * how to defrag mbufs for itself and that it will handle the - * failure cases internally. + * (3) do the collapse here. */ if (priv->queue != -1) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004270058.o3R0wJWX051894>