1/*- 2 * Copyright (C) 2013 Emulex 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, --- 22 unchanged lines hidden (view full) --- 31 * Contact Information: 32 * freebsd-drivers@emulex.com 33 * 34 * Emulex 35 * 3333 Susan Street 36 * Costa Mesa, CA 92626 37 */ 38 |
39/* $FreeBSD: head/sys/dev/oce/oce_hw.c 257007 2013-10-23 18:58:38Z delphij $ */ |
40 |
41 |
42#include "oce_if.h" 43 44static int oce_POST(POCE_SOFTC sc); 45 46/** 47 * @brief Function to post status 48 * @param sc software handle to the device 49 */ --- 149 unchanged lines hidden (view full) --- 199 * @brief Function to get the PCI capabilities 200 * @param sc software handle to the device 201 */ 202static 203void oce_get_pci_capabilities(POCE_SOFTC sc) 204{ 205 uint32_t val; 206 |
207#if __FreeBSD_version >= 1000000 208 #define pci_find_extcap pci_find_cap 209#endif 210 211 if (pci_find_extcap(sc->dev, PCIY_PCIX, &val) == 0) { |
212 if (val != 0) 213 sc->flags |= OCE_FLAGS_PCIX; 214 } 215 |
216 if (pci_find_extcap(sc->dev, PCIY_EXPRESS, &val) == 0) { |
217 if (val != 0) { 218 uint16_t link_status = 219 pci_read_config(sc->dev, val + 0x12, 2); 220 221 sc->flags |= OCE_FLAGS_PCIE; 222 sc->pcie_link_speed = link_status & 0xf; 223 sc->pcie_link_width = (link_status >> 4) & 0x3f; 224 } 225 } 226 |
227 if (pci_find_extcap(sc->dev, PCIY_MSI, &val) == 0) { |
228 if (val != 0) 229 sc->flags |= OCE_FLAGS_MSI_CAPABLE; 230 } 231 |
232 if (pci_find_extcap(sc->dev, PCIY_MSIX, &val) == 0) { |
233 if (val != 0) { 234 val = pci_msix_count(sc->dev); 235 sc->flags |= OCE_FLAGS_MSIX_CAPABLE; 236 } 237 } 238} 239 240/** --- 145 unchanged lines hidden (view full) --- 386 capab_en_flags = OCE_CAPAB_ENABLE; 387 388 if (IS_XE201(sc)) { 389 /* LANCER A0 workaround */ 390 capab_en_flags &= ~MBX_RX_IFACE_FLAGS_PASS_L3L4_ERR; 391 capab_flags &= ~MBX_RX_IFACE_FLAGS_PASS_L3L4_ERR; 392 } 393 |
394 if (IS_SH(sc) || IS_XE201(sc)) 395 capab_flags |= MBX_RX_IFACE_FLAGS_MULTICAST; 396 |
397 /* enable capabilities controlled via driver startup parameters */ 398 if (is_rss_enabled(sc)) 399 capab_en_flags |= MBX_RX_IFACE_FLAGS_RSS; 400 else { 401 capab_en_flags &= ~MBX_RX_IFACE_FLAGS_RSS; 402 capab_flags &= ~MBX_RX_IFACE_FLAGS_RSS; 403 } 404 --- 191 unchanged lines hidden --- |