Deleted Added
full compact
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 ---