oce_hw.c (231603) | oce_hw.c (231879) |
---|---|
1/*- 2 * Copyright (C) 2012 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 | 1/*- 2 * Copyright (C) 2012 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 231603 2012-02-13 19:35:35Z jhb $ */ | 39/* $FreeBSD: head/sys/dev/oce/oce_hw.c 231879 2012-02-17 13:55:17Z luigi $ */ |
40 41#include "oce_if.h" 42 43static int oce_POST(POCE_SOFTC sc); 44 45/** 46 * @brief Function to post status 47 * @param sc software handle to the device --- 287 unchanged lines hidden (view full) --- 335 */ 336void 337oce_hw_shutdown(POCE_SOFTC sc) 338{ 339 340 oce_stats_free(sc); 341 /* disable hardware interrupts */ 342 oce_hw_intr_disable(sc); | 40 41#include "oce_if.h" 42 43static int oce_POST(POCE_SOFTC sc); 44 45/** 46 * @brief Function to post status 47 * @param sc software handle to the device --- 287 unchanged lines hidden (view full) --- 335 */ 336void 337oce_hw_shutdown(POCE_SOFTC sc) 338{ 339 340 oce_stats_free(sc); 341 /* disable hardware interrupts */ 342 oce_hw_intr_disable(sc); |
343#if defined(INET6) || defined(INET) |
|
343 /* Free LRO resources */ 344 oce_free_lro(sc); | 344 /* Free LRO resources */ 345 oce_free_lro(sc); |
346#endif |
|
345 /* Release queue*/ 346 oce_queue_release_all(sc); 347 /*Delete Network Interface*/ 348 oce_delete_nw_interface(sc); 349 /* After fw clean we dont send any cmds to fw.*/ 350 oce_fw_clean(sc); 351 /* release intr resources */ 352 oce_intr_free(sc); --- 136 unchanged lines hidden (view full) --- 489 sc->link_speed = link.mac_speed; 490 else 491 sc->link_speed = 0; 492 493 sc->qos_link_speed = (uint32_t )link.qos_link_speed * 10; 494 495 rc = oce_start_mq(sc->mq); 496 | 347 /* Release queue*/ 348 oce_queue_release_all(sc); 349 /*Delete Network Interface*/ 350 oce_delete_nw_interface(sc); 351 /* After fw clean we dont send any cmds to fw.*/ 352 oce_fw_clean(sc); 353 /* release intr resources */ 354 oce_intr_free(sc); --- 136 unchanged lines hidden (view full) --- 491 sc->link_speed = link.mac_speed; 492 else 493 sc->link_speed = 0; 494 495 sc->qos_link_speed = (uint32_t )link.qos_link_speed * 10; 496 497 rc = oce_start_mq(sc->mq); 498 |
497 /* we need to get MCC aync events. 498 So enable intrs and also arm first EQ | 499 /* we need to get MCC aync events. So enable intrs and arm 500 first EQ, Other EQs will be armed after interface is UP |
499 */ 500 oce_hw_intr_enable(sc); 501 oce_arm_eq(sc, sc->eq[0]->eq_id, 0, TRUE, FALSE); 502 | 501 */ 502 oce_hw_intr_enable(sc); 503 oce_arm_eq(sc, sc->eq[0]->eq_id, 0, TRUE, FALSE); 504 |
505 /* Send first mcc cmd and after that we get gracious 506 MCC notifications from FW 507 */ 508 oce_first_mcc_cmd(sc); 509 |
|
503 return rc; 504} 505 506 507/** 508 * @brief Function for hardware enable interupts. 509 * @param sc software handle to the device 510 */ --- 21 unchanged lines hidden (view full) --- 532 reg = OCE_READ_REG32(sc, devcfg, PCICFG_INTR_CTRL); 533 reg &= ~HOSTINTR_MASK; 534 OCE_WRITE_REG32(sc, devcfg, PCICFG_INTR_CTRL, reg); 535} 536 537 538 539/** | 510 return rc; 511} 512 513 514/** 515 * @brief Function for hardware enable interupts. 516 * @param sc software handle to the device 517 */ --- 21 unchanged lines hidden (view full) --- 539 reg = OCE_READ_REG32(sc, devcfg, PCICFG_INTR_CTRL); 540 reg &= ~HOSTINTR_MASK; 541 OCE_WRITE_REG32(sc, devcfg, PCICFG_INTR_CTRL, reg); 542} 543 544 545 546/** |
540 * @brief Function for hardware update multicast filter 541 * @param sc software handle to the device | 547 * @brief Function for hardware update multicast filter 548 * @param sc software handle to the device |
542 */ 543int 544oce_hw_update_multicast(POCE_SOFTC sc) 545{ 546 struct ifnet *ifp = sc->ifp; 547 struct ifmultiaddr *ifma; 548 struct mbx_set_common_iface_multicast *req = NULL; 549 OCE_DMA_MEM dma; --- 39 unchanged lines hidden --- | 549 */ 550int 551oce_hw_update_multicast(POCE_SOFTC sc) 552{ 553 struct ifnet *ifp = sc->ifp; 554 struct ifmultiaddr *ifma; 555 struct mbx_set_common_iface_multicast *req = NULL; 556 OCE_DMA_MEM dma; --- 39 unchanged lines hidden --- |