sfxge_port.c (227569) | sfxge_port.c (227699) |
---|---|
1/*- 2 * Copyright (c) 2010-2011 Solarflare Communications, Inc. 3 * All rights reserved. 4 * 5 * This software was developed in part by Philip Paeps under contract for 6 * Solarflare Communications, Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2010-2011 Solarflare Communications, Inc. 3 * All rights reserved. 4 * 5 * This software was developed in part by Philip Paeps under contract for 6 * Solarflare Communications, Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: head/sys/dev/sfxge/sfxge_port.c 227569 2011-11-16 17:11:13Z philip $"); | 31__FBSDID("$FreeBSD: head/sys/dev/sfxge/sfxge_port.c 227699 2011-11-19 09:13:58Z philip $"); |
32 33#include <sys/types.h> | 32 33#include <sys/types.h> |
34#include <sys/limits.h> |
|
34#include <net/ethernet.h> 35#include <net/if_dl.h> 36 37#include "common/efx.h" 38 39#include "sfxge.h" 40 41static int --- 172 unchanged lines hidden (view full) --- 214 error = SYSCTL_OUT(req, &link_fc, sizeof(link_fc)); 215 mtx_unlock(&port->lock); 216 217 return (error); 218} 219 220#endif /* SFXGE_HAVE_PAUSE_MEDIAOPTS */ 221 | 35#include <net/ethernet.h> 36#include <net/if_dl.h> 37 38#include "common/efx.h" 39 40#include "sfxge.h" 41 42static int --- 172 unchanged lines hidden (view full) --- 215 error = SYSCTL_OUT(req, &link_fc, sizeof(link_fc)); 216 mtx_unlock(&port->lock); 217 218 return (error); 219} 220 221#endif /* SFXGE_HAVE_PAUSE_MEDIAOPTS */ 222 |
222static const int sfxge_link_speed_kbit[EFX_LINK_NMODES] = { 223 [EFX_LINK_10HDX] = 10000, 224 [EFX_LINK_10FDX] = 10000, 225 [EFX_LINK_100HDX] = 100000, 226 [EFX_LINK_100FDX] = 100000, 227 [EFX_LINK_1000HDX] = 1000000, 228 [EFX_LINK_1000FDX] = 1000000, 229 [EFX_LINK_10000FDX] = 10000000, | 223static const u_long sfxge_link_baudrate[EFX_LINK_NMODES] = { 224 [EFX_LINK_10HDX] = IF_Mbps(10), 225 [EFX_LINK_10FDX] = IF_Mbps(10), 226 [EFX_LINK_100HDX] = IF_Mbps(100), 227 [EFX_LINK_100FDX] = IF_Mbps(100), 228 [EFX_LINK_1000HDX] = IF_Gbps(1), 229 [EFX_LINK_1000FDX] = IF_Gbps(1), 230 [EFX_LINK_10000FDX] = MIN(IF_Gbps(10ULL), ULONG_MAX), |
230}; 231 232void 233sfxge_mac_link_update(struct sfxge_softc *sc, efx_link_mode_t mode) 234{ 235 struct sfxge_port *port; 236 int link_state; 237 238 port = &sc->port; 239 240 if (port->link_mode == mode) 241 return; 242 243 port->link_mode = mode; 244 245 /* Push link state update to the OS */ 246 link_state = (port->link_mode != EFX_LINK_DOWN ? 247 LINK_STATE_UP : LINK_STATE_DOWN); | 231}; 232 233void 234sfxge_mac_link_update(struct sfxge_softc *sc, efx_link_mode_t mode) 235{ 236 struct sfxge_port *port; 237 int link_state; 238 239 port = &sc->port; 240 241 if (port->link_mode == mode) 242 return; 243 244 port->link_mode = mode; 245 246 /* Push link state update to the OS */ 247 link_state = (port->link_mode != EFX_LINK_DOWN ? 248 LINK_STATE_UP : LINK_STATE_DOWN); |
248 sc->ifnet->if_baudrate = sfxge_link_speed_kbit[port->link_mode]; | 249 sc->ifnet->if_baudrate = sfxge_link_baudrate[port->link_mode]; |
249 if_link_state_change(sc->ifnet, link_state); 250} 251 252static void 253sfxge_mac_poll_work(void *arg, int npending) 254{ 255 struct sfxge_softc *sc; 256 efx_nic_t *enp; --- 532 unchanged lines hidden --- | 250 if_link_state_change(sc->ifnet, link_state); 251} 252 253static void 254sfxge_mac_poll_work(void *arg, int npending) 255{ 256 struct sfxge_softc *sc; 257 efx_nic_t *enp; --- 532 unchanged lines hidden --- |