oce_mbox.c (252869) | oce_mbox.c (257007) |
---|---|
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 | 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_mbox.c 257007 2013-10-23 18:58:38Z delphij $ */ |
|
39 | 40 |
40 41/* $FreeBSD: head/sys/dev/oce/oce_mbox.c 252869 2013-07-06 08:30:45Z delphij $ */ 42 43 | |
44#include "oce_if.h" 45extern uint32_t sfp_vpd_dump_buffer[TRANSCEIVER_DATA_NUM_ELE]; 46 47/** 48 * @brief Reset (firmware) common function 49 * @param sc software handle to the device 50 * @returns 0 on success, ETIMEDOUT on failure 51 */ --- 224 unchanged lines hidden (view full) --- 276 mbx.u0.s.embedded = 1; 277 mbx.payload_length = sizeof(struct mbx_get_common_fw_version); 278 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 279 280 ret = oce_mbox_post(sc, &mbx, NULL); 281 if (!ret) 282 ret = fwcmd->hdr.u0.rsp.status; 283 if (ret) { | 41#include "oce_if.h" 42extern uint32_t sfp_vpd_dump_buffer[TRANSCEIVER_DATA_NUM_ELE]; 43 44/** 45 * @brief Reset (firmware) common function 46 * @param sc software handle to the device 47 * @returns 0 on success, ETIMEDOUT on failure 48 */ --- 224 unchanged lines hidden (view full) --- 273 mbx.u0.s.embedded = 1; 274 mbx.payload_length = sizeof(struct mbx_get_common_fw_version); 275 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 276 277 ret = oce_mbox_post(sc, &mbx, NULL); 278 if (!ret) 279 ret = fwcmd->hdr.u0.rsp.status; 280 if (ret) { |
284 device_printf(sc->dev,"%s failed - cmd status: %d\n", 285 __FUNCTION__, ret); | 281 device_printf(sc->dev, 282 "%s failed - cmd status: %d addi status: %d\n", 283 __FUNCTION__, ret, 284 fwcmd->hdr.u0.rsp.additional_status); |
286 goto error; 287 } 288 289 bcopy(fwcmd->params.rsp.fw_ver_str, sc->fw_version, 32); 290error: 291 return ret; 292} 293 --- 139 unchanged lines hidden (view full) --- 433 mbx.u0.s.embedded = 1; 434 mbx.payload_length = sizeof(struct mbx_query_common_iface_mac); 435 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 436 437 ret = oce_mbox_post(sc, &mbx, NULL); 438 if (!ret) 439 ret = fwcmd->hdr.u0.rsp.status; 440 if (ret) { | 285 goto error; 286 } 287 288 bcopy(fwcmd->params.rsp.fw_ver_str, sc->fw_version, 32); 289error: 290 return ret; 291} 292 --- 139 unchanged lines hidden (view full) --- 432 mbx.u0.s.embedded = 1; 433 mbx.payload_length = sizeof(struct mbx_query_common_iface_mac); 434 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 435 436 ret = oce_mbox_post(sc, &mbx, NULL); 437 if (!ret) 438 ret = fwcmd->hdr.u0.rsp.status; 439 if (ret) { |
441 device_printf(sc->dev,"%s failed - cmd status: %d\n", 442 __FUNCTION__, ret); | 440 device_printf(sc->dev, 441 "%s failed - cmd status: %d addi status: %d\n", 442 __FUNCTION__, ret, 443 fwcmd->hdr.u0.rsp.additional_status); |
443 goto error; 444 } 445 446 /* copy the mac addres in the output parameter */ 447 mac->size_of_struct = fwcmd->params.rsp.mac.size_of_struct; 448 bcopy(&fwcmd->params.rsp.mac.mac_addr[0], &mac->mac_addr[0], 449 mac->size_of_struct); 450error: --- 25 unchanged lines hidden (view full) --- 476 mbx.u0.s.embedded = 1; 477 mbx.payload_length = sizeof(struct mbx_common_query_fw_config); 478 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 479 480 ret = oce_mbox_post(sc, &mbx, NULL); 481 if (!ret) 482 ret = fwcmd->hdr.u0.rsp.status; 483 if (ret) { | 444 goto error; 445 } 446 447 /* copy the mac addres in the output parameter */ 448 mac->size_of_struct = fwcmd->params.rsp.mac.size_of_struct; 449 bcopy(&fwcmd->params.rsp.mac.mac_addr[0], &mac->mac_addr[0], 450 mac->size_of_struct); 451error: --- 25 unchanged lines hidden (view full) --- 477 mbx.u0.s.embedded = 1; 478 mbx.payload_length = sizeof(struct mbx_common_query_fw_config); 479 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 480 481 ret = oce_mbox_post(sc, &mbx, NULL); 482 if (!ret) 483 ret = fwcmd->hdr.u0.rsp.status; 484 if (ret) { |
484 device_printf(sc->dev,"%s failed - cmd status: %d\n", 485 __FUNCTION__, ret); | 485 device_printf(sc->dev, 486 "%s failed - cmd status: %d addi status: %d\n", 487 __FUNCTION__, ret, 488 fwcmd->hdr.u0.rsp.additional_status); |
486 goto error; 487 } 488 489 DW_SWAP(u32ptr(fwcmd), sizeof(struct mbx_common_query_fw_config)); 490 | 489 goto error; 490 } 491 492 DW_SWAP(u32ptr(fwcmd), sizeof(struct mbx_common_query_fw_config)); 493 |
491 sc->config_number = fwcmd->params.rsp.config_number; 492 sc->asic_revision = fwcmd->params.rsp.asic_revision; 493 sc->port_id = fwcmd->params.rsp.port_id; 494 sc->function_mode = fwcmd->params.rsp.function_mode; 495 sc->function_caps = fwcmd->params.rsp.function_caps; | 494 sc->config_number = HOST_32(fwcmd->params.rsp.config_number); 495 sc->asic_revision = HOST_32(fwcmd->params.rsp.asic_revision); 496 sc->port_id = HOST_32(fwcmd->params.rsp.port_id); 497 sc->function_mode = HOST_32(fwcmd->params.rsp.function_mode); 498 sc->function_caps = HOST_32(fwcmd->params.rsp.function_caps); |
496 497 if (fwcmd->params.rsp.ulp[0].ulp_mode & ULP_NIC_MODE) { | 499 500 if (fwcmd->params.rsp.ulp[0].ulp_mode & ULP_NIC_MODE) { |
498 sc->max_tx_rings = fwcmd->params.rsp.ulp[0].nic_wq_tot; 499 sc->max_rx_rings = fwcmd->params.rsp.ulp[0].lro_rqid_tot; | 501 sc->max_tx_rings = HOST_32(fwcmd->params.rsp.ulp[0].nic_wq_tot); 502 sc->max_rx_rings = HOST_32(fwcmd->params.rsp.ulp[0].lro_rqid_tot); |
500 } else { | 503 } else { |
501 sc->max_tx_rings = fwcmd->params.rsp.ulp[1].nic_wq_tot; 502 sc->max_rx_rings = fwcmd->params.rsp.ulp[1].lro_rqid_tot; | 504 sc->max_tx_rings = HOST_32(fwcmd->params.rsp.ulp[1].nic_wq_tot); 505 sc->max_rx_rings = HOST_32(fwcmd->params.rsp.ulp[1].lro_rqid_tot); |
503 } 504 505error: 506 return ret; 507 508} 509 510/** --- 45 unchanged lines hidden (view full) --- 556 mbx.u0.s.embedded = 1; 557 mbx.payload_length = sizeof(struct mbx_create_common_iface); 558 DW_SWAP(u32ptr(&mbx), OCE_BMBX_RHDR_SZ); 559 560 rc = oce_mbox_post(sc, &mbx, NULL); 561 if (!rc) 562 rc = fwcmd->hdr.u0.rsp.status; 563 if (rc) { | 506 } 507 508error: 509 return ret; 510 511} 512 513/** --- 45 unchanged lines hidden (view full) --- 559 mbx.u0.s.embedded = 1; 560 mbx.payload_length = sizeof(struct mbx_create_common_iface); 561 DW_SWAP(u32ptr(&mbx), OCE_BMBX_RHDR_SZ); 562 563 rc = oce_mbox_post(sc, &mbx, NULL); 564 if (!rc) 565 rc = fwcmd->hdr.u0.rsp.status; 566 if (rc) { |
564 device_printf(sc->dev,"%s failed - cmd status: %d\n", 565 __FUNCTION__, rc); | 567 device_printf(sc->dev, 568 "%s failed - cmd status: %d addi status: %d\n", 569 __FUNCTION__, rc, 570 fwcmd->hdr.u0.rsp.additional_status); |
566 goto error; 567 } 568 | 571 goto error; 572 } 573 |
569 *if_id = LE_32(fwcmd->params.rsp.if_id); | 574 *if_id = HOST_32(fwcmd->params.rsp.if_id); |
570 571 if (mac_addr != NULL) | 575 576 if (mac_addr != NULL) |
572 sc->pmac_id = LE_32(fwcmd->params.rsp.pmac_id); | 577 sc->pmac_id = HOST_32(fwcmd->params.rsp.pmac_id); |
573error: 574 return rc; 575} 576 577/** 578 * @brief Function to delete an interface 579 * @param sc software handle to the device 580 * @param if_id ID of the interface to delete --- 21 unchanged lines hidden (view full) --- 602 mbx.u0.s.embedded = 1; 603 mbx.payload_length = sizeof(struct mbx_destroy_common_iface); 604 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 605 606 rc = oce_mbox_post(sc, &mbx, NULL); 607 if (!rc) 608 rc = fwcmd->hdr.u0.rsp.status; 609 if (rc) | 578error: 579 return rc; 580} 581 582/** 583 * @brief Function to delete an interface 584 * @param sc software handle to the device 585 * @param if_id ID of the interface to delete --- 21 unchanged lines hidden (view full) --- 607 mbx.u0.s.embedded = 1; 608 mbx.payload_length = sizeof(struct mbx_destroy_common_iface); 609 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 610 611 rc = oce_mbox_post(sc, &mbx, NULL); 612 if (!rc) 613 rc = fwcmd->hdr.u0.rsp.status; 614 if (rc) |
610 device_printf(sc->dev,"%s failed - cmd status: %d\n", 611 __FUNCTION__, rc); | 615 device_printf(sc->dev, 616 "%s failed - cmd status: %d addi status: %d\n", 617 __FUNCTION__, rc, 618 fwcmd->hdr.u0.rsp.additional_status); |
612 return rc; 613} 614 615/** 616 * @brief Function to send the mbx command to configure vlan 617 * @param sc software handle to the device 618 * @param if_id interface identifier index 619 * @param vtag_arr array of vlan tags --- 5 unchanged lines hidden (view full) --- 625int 626oce_config_vlan(POCE_SOFTC sc, 627 uint32_t if_id, 628 struct normal_vlan *vtag_arr, 629 uint8_t vtag_cnt, uint32_t untagged, uint32_t enable_promisc) 630{ 631 struct oce_mbx mbx; 632 struct mbx_common_config_vlan *fwcmd; | 619 return rc; 620} 621 622/** 623 * @brief Function to send the mbx command to configure vlan 624 * @param sc software handle to the device 625 * @param if_id interface identifier index 626 * @param vtag_arr array of vlan tags --- 5 unchanged lines hidden (view full) --- 632int 633oce_config_vlan(POCE_SOFTC sc, 634 uint32_t if_id, 635 struct normal_vlan *vtag_arr, 636 uint8_t vtag_cnt, uint32_t untagged, uint32_t enable_promisc) 637{ 638 struct oce_mbx mbx; 639 struct mbx_common_config_vlan *fwcmd; |
633 int rc; | 640 int rc = 0; |
634 | 641 |
642 if (sc->vlans_added > sc->max_vlans) 643 goto vlan_promisc; 644 |
|
635 bzero(&mbx, sizeof(struct oce_mbx)); 636 fwcmd = (struct mbx_common_config_vlan *)&mbx.payload; 637 638 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, 639 MBX_SUBSYSTEM_COMMON, 640 OPCODE_COMMON_CONFIG_IFACE_VLAN, 641 MBX_TIMEOUT_SEC, 642 sizeof(struct mbx_common_config_vlan), --- 11 unchanged lines hidden (view full) --- 654 mbx.u0.s.embedded = 1; 655 mbx.payload_length = sizeof(struct mbx_common_config_vlan); 656 DW_SWAP(u32ptr(&mbx), (OCE_BMBX_RHDR_SZ + mbx.payload_length)); 657 658 rc = oce_mbox_post(sc, &mbx, NULL); 659 if (!rc) 660 rc = fwcmd->hdr.u0.rsp.status; 661 if (rc) | 645 bzero(&mbx, sizeof(struct oce_mbx)); 646 fwcmd = (struct mbx_common_config_vlan *)&mbx.payload; 647 648 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, 649 MBX_SUBSYSTEM_COMMON, 650 OPCODE_COMMON_CONFIG_IFACE_VLAN, 651 MBX_TIMEOUT_SEC, 652 sizeof(struct mbx_common_config_vlan), --- 11 unchanged lines hidden (view full) --- 664 mbx.u0.s.embedded = 1; 665 mbx.payload_length = sizeof(struct mbx_common_config_vlan); 666 DW_SWAP(u32ptr(&mbx), (OCE_BMBX_RHDR_SZ + mbx.payload_length)); 667 668 rc = oce_mbox_post(sc, &mbx, NULL); 669 if (!rc) 670 rc = fwcmd->hdr.u0.rsp.status; 671 if (rc) |
662 device_printf(sc->dev,"%s failed - cmd status: %d\n", 663 __FUNCTION__, rc); 664 return 0; | 672 device_printf(sc->dev, 673 "%s failed - cmd status: %d addi status: %d\n", 674 __FUNCTION__, rc, 675 fwcmd->hdr.u0.rsp.additional_status); |
665 | 676 |
677 goto done; 678 679vlan_promisc: 680 /* Enable Vlan Promis */ 681 oce_rxf_set_promiscuous(sc, (1 << 1)); 682 device_printf(sc->dev,"Enabling Vlan Promisc Mode\n"); 683done: 684 return rc; 685 |
|
666} 667 668/** 669 * @brief Function to set flow control capability in the hardware 670 * @param sc software handle to the device 671 * @param flow_control flow control flags to set 672 * @returns 0 on success, EIO on failure 673 */ --- 23 unchanged lines hidden (view full) --- 697 mbx.u0.s.embedded = 1; 698 mbx.payload_length = sizeof(struct mbx_common_get_set_flow_control); 699 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 700 701 rc = oce_mbox_post(sc, &mbx, NULL); 702 if (!rc) 703 rc = fwcmd->hdr.u0.rsp.status; 704 if (rc) | 686} 687 688/** 689 * @brief Function to set flow control capability in the hardware 690 * @param sc software handle to the device 691 * @param flow_control flow control flags to set 692 * @returns 0 on success, EIO on failure 693 */ --- 23 unchanged lines hidden (view full) --- 717 mbx.u0.s.embedded = 1; 718 mbx.payload_length = sizeof(struct mbx_common_get_set_flow_control); 719 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 720 721 rc = oce_mbox_post(sc, &mbx, NULL); 722 if (!rc) 723 rc = fwcmd->hdr.u0.rsp.status; 724 if (rc) |
705 device_printf(sc->dev,"%s failed - cmd status: %d\n", 706 __FUNCTION__, rc); | 725 device_printf(sc->dev, 726 "%s failed - cmd status: %d addi status: %d\n", 727 __FUNCTION__, rc, 728 fwcmd->hdr.u0.rsp.additional_status); |
707 return rc; 708} 709 710/** 711 * @brief Initialize the RSS CPU indirection table 712 * 713 * The table is used to choose the queue to place the incomming packets. 714 * Incomming packets are hashed. The lowest bits in the hash result --- 82 unchanged lines hidden (view full) --- 797 mbx.u0.s.embedded = 1; 798 mbx.payload_length = sizeof(struct mbx_config_nic_rss); 799 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 800 801 rc = oce_mbox_post(sc, &mbx, NULL); 802 if (!rc) 803 rc = fwcmd->hdr.u0.rsp.status; 804 if (rc) | 729 return rc; 730} 731 732/** 733 * @brief Initialize the RSS CPU indirection table 734 * 735 * The table is used to choose the queue to place the incomming packets. 736 * Incomming packets are hashed. The lowest bits in the hash result --- 82 unchanged lines hidden (view full) --- 819 mbx.u0.s.embedded = 1; 820 mbx.payload_length = sizeof(struct mbx_config_nic_rss); 821 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 822 823 rc = oce_mbox_post(sc, &mbx, NULL); 824 if (!rc) 825 rc = fwcmd->hdr.u0.rsp.status; 826 if (rc) |
805 device_printf(sc->dev,"%s failed - cmd status: %d\n", 806 __FUNCTION__, rc); | 827 device_printf(sc->dev, 828 "%s failed - cmd status: %d addi status: %d\n", 829 __FUNCTION__, rc, 830 fwcmd->hdr.u0.rsp.additional_status); |
807 } 808 return rc; 809} 810 811/** 812 * @brief RXF function to enable/disable device promiscuous mode 813 * @param sc software handle to the device 814 * @param enable enable/disable flag 815 * @returns 0 on success, EIO on failure 816 * @note 817 * The NIC_CONFIG_PROMISCUOUS command deprecated for Lancer. 818 * This function uses the COMMON_SET_IFACE_RX_FILTER command instead. 819 */ 820int | 831 } 832 return rc; 833} 834 835/** 836 * @brief RXF function to enable/disable device promiscuous mode 837 * @param sc software handle to the device 838 * @param enable enable/disable flag 839 * @returns 0 on success, EIO on failure 840 * @note 841 * The NIC_CONFIG_PROMISCUOUS command deprecated for Lancer. 842 * This function uses the COMMON_SET_IFACE_RX_FILTER command instead. 843 */ 844int |
821oce_rxf_set_promiscuous(POCE_SOFTC sc, uint32_t enable) | 845oce_rxf_set_promiscuous(POCE_SOFTC sc, uint8_t enable) |
822{ 823 struct mbx_set_common_iface_rx_filter *fwcmd; 824 int sz = sizeof(struct mbx_set_common_iface_rx_filter); 825 iface_rx_filter_ctx_t *req; 826 OCE_DMA_MEM sgl; 827 int rc; 828 829 /* allocate mbx payload's dma scatter/gather memory */ 830 rc = oce_dma_alloc(sc, sz, &sgl, 0); 831 if (rc) 832 return rc; 833 834 fwcmd = OCE_DMAPTR(&sgl, struct mbx_set_common_iface_rx_filter); 835 836 req = &fwcmd->params.req; 837 req->iface_flags_mask = MBX_RX_IFACE_FLAGS_PROMISCUOUS | 838 MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS; | 846{ 847 struct mbx_set_common_iface_rx_filter *fwcmd; 848 int sz = sizeof(struct mbx_set_common_iface_rx_filter); 849 iface_rx_filter_ctx_t *req; 850 OCE_DMA_MEM sgl; 851 int rc; 852 853 /* allocate mbx payload's dma scatter/gather memory */ 854 rc = oce_dma_alloc(sc, sz, &sgl, 0); 855 if (rc) 856 return rc; 857 858 fwcmd = OCE_DMAPTR(&sgl, struct mbx_set_common_iface_rx_filter); 859 860 req = &fwcmd->params.req; 861 req->iface_flags_mask = MBX_RX_IFACE_FLAGS_PROMISCUOUS | 862 MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS; |
839 if (enable) { 840 req->iface_flags = MBX_RX_IFACE_FLAGS_PROMISCUOUS | 841 MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS; 842 } | 863 /* Bit 0 Mac promisc, Bit 1 Vlan promisc */ 864 if (enable & 0x01) 865 req->iface_flags = MBX_RX_IFACE_FLAGS_PROMISCUOUS; 866 867 if (enable & 0x02) 868 req->iface_flags = MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS; 869 |
843 req->if_id = sc->if_id; 844 845 rc = oce_set_common_iface_rx_filter(sc, &sgl); 846 oce_dma_free(sc, &sgl); 847 848 return rc; 849} 850 --- 30 unchanged lines hidden (view full) --- 881 mbx.payload.u0.u1.sgl[0].length = mbx_sz; 882 mbx.payload_length = mbx_sz; 883 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 884 885 rc = oce_mbox_post(sc, &mbx, NULL); 886 if (!rc) 887 rc = fwcmd->hdr.u0.rsp.status; 888 if (rc) | 870 req->if_id = sc->if_id; 871 872 rc = oce_set_common_iface_rx_filter(sc, &sgl); 873 oce_dma_free(sc, &sgl); 874 875 return rc; 876} 877 --- 30 unchanged lines hidden (view full) --- 908 mbx.payload.u0.u1.sgl[0].length = mbx_sz; 909 mbx.payload_length = mbx_sz; 910 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 911 912 rc = oce_mbox_post(sc, &mbx, NULL); 913 if (!rc) 914 rc = fwcmd->hdr.u0.rsp.status; 915 if (rc) |
889 device_printf(sc->dev,"%s failed - cmd status: %d\n", 890 __FUNCTION__, rc); 891 return 0; | 916 device_printf(sc->dev, 917 "%s failed - cmd status: %d addi status: %d\n", 918 __FUNCTION__, rc, 919 fwcmd->hdr.u0.rsp.additional_status); 920 return rc; |
892} 893 894/** 895 * @brief Function to query the link status from the hardware 896 * @param sc software handle to the device 897 * @param[out] link pointer to the structure returning link attributes 898 * @returns 0 on success, EIO on failure 899 */ --- 20 unchanged lines hidden (view full) --- 920 mbx.payload_length = sizeof(struct mbx_query_common_link_config); 921 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 922 923 rc = oce_mbox_post(sc, &mbx, NULL); 924 925 if (!rc) 926 rc = fwcmd->hdr.u0.rsp.status; 927 if (rc) { | 921} 922 923/** 924 * @brief Function to query the link status from the hardware 925 * @param sc software handle to the device 926 * @param[out] link pointer to the structure returning link attributes 927 * @returns 0 on success, EIO on failure 928 */ --- 20 unchanged lines hidden (view full) --- 949 mbx.payload_length = sizeof(struct mbx_query_common_link_config); 950 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 951 952 rc = oce_mbox_post(sc, &mbx, NULL); 953 954 if (!rc) 955 rc = fwcmd->hdr.u0.rsp.status; 956 if (rc) { |
928 device_printf(sc->dev,"%s failed - cmd status: %d\n", 929 __FUNCTION__, rc); | 957 device_printf(sc->dev, 958 "%s failed - cmd status: %d addi status: %d\n", 959 __FUNCTION__, rc, 960 fwcmd->hdr.u0.rsp.additional_status); |
930 goto error; 931 } 932 /* interpret response */ 933 bcopy(&fwcmd->params.rsp, link, sizeof(struct link_status)); | 961 goto error; 962 } 963 /* interpret response */ 964 bcopy(&fwcmd->params.rsp, link, sizeof(struct link_status)); |
934 link->logical_link_status = LE_32(link->logical_link_status); 935 link->qos_link_speed = LE_16(link->qos_link_speed); | 965 link->logical_link_status = HOST_32(link->logical_link_status); 966 link->qos_link_speed = HOST_16(link->qos_link_speed); |
936error: 937 return rc; 938} 939 940 941 942int 943oce_mbox_get_nic_stats_v0(POCE_SOFTC sc, POCE_DMA_MEM pstats_dma_mem) --- 29 unchanged lines hidden (view full) --- 973 974 rc = oce_mbox_post(sc, &mbx, NULL); 975 976 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 977 978 if (!rc) 979 rc = fwcmd->hdr.u0.rsp.status; 980 if (rc) | 967error: 968 return rc; 969} 970 971 972 973int 974oce_mbox_get_nic_stats_v0(POCE_SOFTC sc, POCE_DMA_MEM pstats_dma_mem) --- 29 unchanged lines hidden (view full) --- 1004 1005 rc = oce_mbox_post(sc, &mbx, NULL); 1006 1007 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 1008 1009 if (!rc) 1010 rc = fwcmd->hdr.u0.rsp.status; 1011 if (rc) |
981 device_printf(sc->dev,"%s failed - cmd status: %d\n", 982 __FUNCTION__, rc); | 1012 device_printf(sc->dev, 1013 "%s failed - cmd status: %d addi status: %d\n", 1014 __FUNCTION__, rc, 1015 fwcmd->hdr.u0.rsp.additional_status); |
983 return rc; 984} 985 986 987 988/** 989 * @brief Function to get NIC statistics 990 * @param sc software handle to the device --- 32 unchanged lines hidden (view full) --- 1023 mbx.payload_length = sizeof(struct mbx_get_nic_stats); 1024 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1025 1026 rc = oce_mbox_post(sc, &mbx, NULL); 1027 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 1028 if (!rc) 1029 rc = fwcmd->hdr.u0.rsp.status; 1030 if (rc) | 1016 return rc; 1017} 1018 1019 1020 1021/** 1022 * @brief Function to get NIC statistics 1023 * @param sc software handle to the device --- 32 unchanged lines hidden (view full) --- 1056 mbx.payload_length = sizeof(struct mbx_get_nic_stats); 1057 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1058 1059 rc = oce_mbox_post(sc, &mbx, NULL); 1060 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 1061 if (!rc) 1062 rc = fwcmd->hdr.u0.rsp.status; 1063 if (rc) |
1031 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1032 __FUNCTION__, rc); | 1064 device_printf(sc->dev, 1065 "%s failed - cmd status: %d addi status: %d\n", 1066 __FUNCTION__, rc, 1067 fwcmd->hdr.u0.rsp.additional_status); |
1033 return rc; 1034} 1035 1036 1037/** 1038 * @brief Function to get pport (physical port) statistics 1039 * @param sc software handle to the device 1040 * @param *stats pointer to where to store statistics --- 34 unchanged lines hidden (view full) --- 1075 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1076 1077 rc = oce_mbox_post(sc, &mbx, NULL); 1078 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 1079 1080 if (!rc) 1081 rc = fwcmd->hdr.u0.rsp.status; 1082 if (rc) | 1068 return rc; 1069} 1070 1071 1072/** 1073 * @brief Function to get pport (physical port) statistics 1074 * @param sc software handle to the device 1075 * @param *stats pointer to where to store statistics --- 34 unchanged lines hidden (view full) --- 1110 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1111 1112 rc = oce_mbox_post(sc, &mbx, NULL); 1113 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 1114 1115 if (!rc) 1116 rc = fwcmd->hdr.u0.rsp.status; 1117 if (rc) |
1083 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1084 __FUNCTION__, rc); | 1118 device_printf(sc->dev, 1119 "%s failed - cmd status: %d addi status: %d\n", 1120 __FUNCTION__, rc, 1121 fwcmd->hdr.u0.rsp.additional_status); |
1085 return rc; 1086} 1087 1088 1089/** 1090 * @brief Function to get vport (virtual port) statistics 1091 * @param sc software handle to the device 1092 * @param *stats pointer to where to store statistics --- 35 unchanged lines hidden (view full) --- 1128 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1129 1130 rc = oce_mbox_post(sc, &mbx, NULL); 1131 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 1132 1133 if (!rc) 1134 rc = fwcmd->hdr.u0.rsp.status; 1135 if (rc) | 1122 return rc; 1123} 1124 1125 1126/** 1127 * @brief Function to get vport (virtual port) statistics 1128 * @param sc software handle to the device 1129 * @param *stats pointer to where to store statistics --- 35 unchanged lines hidden (view full) --- 1165 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1166 1167 rc = oce_mbox_post(sc, &mbx, NULL); 1168 oce_dma_sync(pstats_dma_mem, BUS_DMASYNC_POSTWRITE); 1169 1170 if (!rc) 1171 rc = fwcmd->hdr.u0.rsp.status; 1172 if (rc) |
1136 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1137 __FUNCTION__, rc); | 1173 device_printf(sc->dev, 1174 "%s failed - cmd status: %d addi status: %d\n", 1175 __FUNCTION__, rc, 1176 fwcmd->hdr.u0.rsp.additional_status); |
1138 return rc; 1139} 1140 1141 1142/** 1143 * @brief Function to update the muticast filter with 1144 * values in dma_mem 1145 * @param sc software handle to the device --- 27 unchanged lines hidden (view full) --- 1173 sgl->length = htole32(mbx.payload_length); 1174 1175 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1176 1177 rc = oce_mbox_post(sc, &mbx, NULL); 1178 if (!rc) 1179 rc = req->hdr.u0.rsp.status; 1180 if (rc) | 1177 return rc; 1178} 1179 1180 1181/** 1182 * @brief Function to update the muticast filter with 1183 * values in dma_mem 1184 * @param sc software handle to the device --- 27 unchanged lines hidden (view full) --- 1212 sgl->length = htole32(mbx.payload_length); 1213 1214 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1215 1216 rc = oce_mbox_post(sc, &mbx, NULL); 1217 if (!rc) 1218 rc = req->hdr.u0.rsp.status; 1219 if (rc) |
1181 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1182 __FUNCTION__, rc); | 1220 device_printf(sc->dev, 1221 "%s failed - cmd status: %d addi status: %d\n", 1222 __FUNCTION__, rc, 1223 req->hdr.u0.rsp.additional_status); |
1183 return rc; 1184} 1185 1186 1187/** 1188 * @brief Function to send passthrough Ioctls 1189 * @param sc software handle to the device 1190 * @param dma_mem pointer to dma memory region --- 47 unchanged lines hidden (view full) --- 1238 1239 mbx.u0.s.embedded = 1; 1240 mbx.payload_length = sizeof(struct mbx_add_common_iface_mac); 1241 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1242 rc = oce_mbox_post(sc, &mbx, NULL); 1243 if (!rc) 1244 rc = fwcmd->hdr.u0.rsp.status; 1245 if (rc) { | 1224 return rc; 1225} 1226 1227 1228/** 1229 * @brief Function to send passthrough Ioctls 1230 * @param sc software handle to the device 1231 * @param dma_mem pointer to dma memory region --- 47 unchanged lines hidden (view full) --- 1279 1280 mbx.u0.s.embedded = 1; 1281 mbx.payload_length = sizeof(struct mbx_add_common_iface_mac); 1282 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1283 rc = oce_mbox_post(sc, &mbx, NULL); 1284 if (!rc) 1285 rc = fwcmd->hdr.u0.rsp.status; 1286 if (rc) { |
1246 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1247 __FUNCTION__, rc); | 1287 device_printf(sc->dev, 1288 "%s failed - cmd status: %d addi status: %d\n", 1289 __FUNCTION__, rc, 1290 fwcmd->hdr.u0.rsp.additional_status); |
1248 goto error; 1249 } 1250 *pmac_id = fwcmd->params.rsp.pmac_id; 1251error: 1252 return rc; 1253} 1254 1255 --- 20 unchanged lines hidden (view full) --- 1276 mbx.u0.s.embedded = 1; 1277 mbx.payload_length = sizeof(struct mbx_del_common_iface_mac); 1278 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1279 1280 rc = oce_mbox_post(sc, &mbx, NULL); 1281 if (!rc) 1282 rc = fwcmd->hdr.u0.rsp.status; 1283 if (rc) | 1291 goto error; 1292 } 1293 *pmac_id = fwcmd->params.rsp.pmac_id; 1294error: 1295 return rc; 1296} 1297 1298 --- 20 unchanged lines hidden (view full) --- 1319 mbx.u0.s.embedded = 1; 1320 mbx.payload_length = sizeof(struct mbx_del_common_iface_mac); 1321 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1322 1323 rc = oce_mbox_post(sc, &mbx, NULL); 1324 if (!rc) 1325 rc = fwcmd->hdr.u0.rsp.status; 1326 if (rc) |
1284 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1285 __FUNCTION__, rc); | 1327 device_printf(sc->dev, 1328 "%s failed - cmd status: %d addi status: %d\n", 1329 __FUNCTION__, rc, 1330 fwcmd->hdr.u0.rsp.additional_status); |
1286 return rc; 1287} 1288 1289 1290 1291int 1292oce_mbox_check_native_mode(POCE_SOFTC sc) 1293{ --- 19 unchanged lines hidden (view full) --- 1313 mbx.u0.s.embedded = 1; 1314 mbx.payload_length = sizeof(struct mbx_common_set_function_cap); 1315 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1316 1317 rc = oce_mbox_post(sc, &mbx, NULL); 1318 if (!rc) 1319 rc = fwcmd->hdr.u0.rsp.status; 1320 if (rc) { | 1331 return rc; 1332} 1333 1334 1335 1336int 1337oce_mbox_check_native_mode(POCE_SOFTC sc) 1338{ --- 19 unchanged lines hidden (view full) --- 1358 mbx.u0.s.embedded = 1; 1359 mbx.payload_length = sizeof(struct mbx_common_set_function_cap); 1360 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1361 1362 rc = oce_mbox_post(sc, &mbx, NULL); 1363 if (!rc) 1364 rc = fwcmd->hdr.u0.rsp.status; 1365 if (rc) { |
1321 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1322 __FUNCTION__, rc); | 1366 device_printf(sc->dev, 1367 "%s failed - cmd status: %d addi status: %d\n", 1368 __FUNCTION__, rc, 1369 fwcmd->hdr.u0.rsp.additional_status); |
1323 goto error; 1324 } | 1370 goto error; 1371 } |
1325 sc->be3_native = fwcmd->params.rsp.capability_flags | 1372 sc->be3_native = HOST_32(fwcmd->params.rsp.capability_flags) |
1326 & CAP_BE3_NATIVE_ERX_API; 1327 1328error: 1329 return 0; 1330} 1331 1332 1333 --- 24 unchanged lines hidden (view full) --- 1358 mbx.u0.s.embedded = 1; 1359 mbx.payload_length = sizeof(struct mbx_lowlevel_set_loopback_mode); 1360 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1361 1362 rc = oce_mbox_post(sc, &mbx, NULL); 1363 if (!rc) 1364 rc = fwcmd->hdr.u0.rsp.status; 1365 if (rc) | 1373 & CAP_BE3_NATIVE_ERX_API; 1374 1375error: 1376 return 0; 1377} 1378 1379 1380 --- 24 unchanged lines hidden (view full) --- 1405 mbx.u0.s.embedded = 1; 1406 mbx.payload_length = sizeof(struct mbx_lowlevel_set_loopback_mode); 1407 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1408 1409 rc = oce_mbox_post(sc, &mbx, NULL); 1410 if (!rc) 1411 rc = fwcmd->hdr.u0.rsp.status; 1412 if (rc) |
1366 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1367 __FUNCTION__, rc); | 1413 device_printf(sc->dev, 1414 "%s failed - cmd status: %d addi status: %d\n", 1415 __FUNCTION__, rc, 1416 fwcmd->hdr.u0.rsp.additional_status); |
1368 1369 return rc; 1370 1371} 1372 1373int 1374oce_mbox_cmd_test_loopback(POCE_SOFTC sc, uint32_t port_num, 1375 uint32_t loopback_type, uint32_t pkt_size, uint32_t num_pkts, --- 25 unchanged lines hidden (view full) --- 1401 mbx.u0.s.embedded = 1; 1402 mbx.payload_length = sizeof(struct mbx_lowlevel_test_loopback_mode); 1403 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1404 1405 rc = oce_mbox_post(sc, &mbx, NULL); 1406 if (!rc) 1407 rc = fwcmd->hdr.u0.rsp.status; 1408 if (rc) | 1417 1418 return rc; 1419 1420} 1421 1422int 1423oce_mbox_cmd_test_loopback(POCE_SOFTC sc, uint32_t port_num, 1424 uint32_t loopback_type, uint32_t pkt_size, uint32_t num_pkts, --- 25 unchanged lines hidden (view full) --- 1450 mbx.u0.s.embedded = 1; 1451 mbx.payload_length = sizeof(struct mbx_lowlevel_test_loopback_mode); 1452 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 1453 1454 rc = oce_mbox_post(sc, &mbx, NULL); 1455 if (!rc) 1456 rc = fwcmd->hdr.u0.rsp.status; 1457 if (rc) |
1409 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1410 __FUNCTION__, rc); | 1458 device_printf(sc->dev, 1459 "%s failed - cmd status: %d addi status: %d\n", 1460 __FUNCTION__, rc, 1461 fwcmd->hdr.u0.rsp.additional_status); |
1411 1412 return rc; 1413} 1414 1415int 1416oce_mbox_write_flashrom(POCE_SOFTC sc, uint32_t optype,uint32_t opcode, 1417 POCE_DMA_MEM pdma_mem, uint32_t num_bytes) 1418{ --- 9 unchanged lines hidden (view full) --- 1428 1429 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, 1430 MBX_SUBSYSTEM_COMMON, 1431 OPCODE_COMMON_WRITE_FLASHROM, 1432 LONG_TIMEOUT, 1433 payload_len, 1434 OCE_MBX_VER_V0); 1435 | 1462 1463 return rc; 1464} 1465 1466int 1467oce_mbox_write_flashrom(POCE_SOFTC sc, uint32_t optype,uint32_t opcode, 1468 POCE_DMA_MEM pdma_mem, uint32_t num_bytes) 1469{ --- 9 unchanged lines hidden (view full) --- 1479 1480 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, 1481 MBX_SUBSYSTEM_COMMON, 1482 OPCODE_COMMON_WRITE_FLASHROM, 1483 LONG_TIMEOUT, 1484 payload_len, 1485 OCE_MBX_VER_V0); 1486 |
1436 fwcmd->flash_op_type = optype; 1437 fwcmd->flash_op_code = opcode; 1438 fwcmd->data_buffer_size = num_bytes; | 1487 fwcmd->flash_op_type = LE_32(optype); 1488 fwcmd->flash_op_code = LE_32(opcode); 1489 fwcmd->data_buffer_size = LE_32(num_bytes); |
1439 1440 mbx.u0.s.embedded = 0; /*Non embeded*/ 1441 mbx.payload_length = payload_len; 1442 mbx.u0.s.sge_count = 1; 1443 1444 sgl = &mbx.payload.u0.u1.sgl[0]; 1445 sgl->pa_hi = upper_32_bits(pdma_mem->paddr); 1446 sgl->pa_lo = pdma_mem->paddr & 0xFFFFFFFF; 1447 sgl->length = payload_len; 1448 1449 /* post the command */ 1450 rc = oce_mbox_post(sc, &mbx, NULL); 1451 if (!rc) 1452 rc = fwcmd->hdr.u0.rsp.status; 1453 if (rc) | 1490 1491 mbx.u0.s.embedded = 0; /*Non embeded*/ 1492 mbx.payload_length = payload_len; 1493 mbx.u0.s.sge_count = 1; 1494 1495 sgl = &mbx.payload.u0.u1.sgl[0]; 1496 sgl->pa_hi = upper_32_bits(pdma_mem->paddr); 1497 sgl->pa_lo = pdma_mem->paddr & 0xFFFFFFFF; 1498 sgl->length = payload_len; 1499 1500 /* post the command */ 1501 rc = oce_mbox_post(sc, &mbx, NULL); 1502 if (!rc) 1503 rc = fwcmd->hdr.u0.rsp.status; 1504 if (rc) |
1454 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1455 __FUNCTION__, rc); | 1505 device_printf(sc->dev, 1506 "%s failed - cmd status: %d addi status: %d\n", 1507 __FUNCTION__, rc, 1508 fwcmd->hdr.u0.rsp.additional_status); |
1456 1457 return rc; 1458 1459} 1460 1461int 1462oce_mbox_get_flashrom_crc(POCE_SOFTC sc, uint8_t *flash_crc, 1463 uint32_t offset, uint32_t optype) --- 28 unchanged lines hidden (view full) --- 1492 mbx.u0.s.embedded = 1; 1493 mbx.payload_length = payload_len; 1494 1495 /* post the command */ 1496 rc = oce_mbox_post(sc, &mbx, NULL); 1497 if (!rc) 1498 rc = fwcmd->hdr.u0.rsp.status; 1499 if (rc) { | 1509 1510 return rc; 1511 1512} 1513 1514int 1515oce_mbox_get_flashrom_crc(POCE_SOFTC sc, uint8_t *flash_crc, 1516 uint32_t offset, uint32_t optype) --- 28 unchanged lines hidden (view full) --- 1545 mbx.u0.s.embedded = 1; 1546 mbx.payload_length = payload_len; 1547 1548 /* post the command */ 1549 rc = oce_mbox_post(sc, &mbx, NULL); 1550 if (!rc) 1551 rc = fwcmd->hdr.u0.rsp.status; 1552 if (rc) { |
1500 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1501 __FUNCTION__, rc); | 1553 device_printf(sc->dev, 1554 "%s failed - cmd status: %d addi status: %d\n", 1555 __FUNCTION__, rc, 1556 fwcmd->hdr.u0.rsp.additional_status); |
1502 goto error; 1503 } 1504 bcopy(fwcmd->data_buffer, flash_crc, 4); 1505error: 1506 return rc; 1507} 1508 1509int --- 17 unchanged lines hidden (view full) --- 1527 mbx.u0.s.embedded = 1; 1528 mbx.payload_length = sizeof(struct mbx_common_phy_info); 1529 1530 /* now post the command */ 1531 rc = oce_mbox_post(sc, &mbx, NULL); 1532 if (!rc) 1533 rc = fwcmd->hdr.u0.rsp.status; 1534 if (rc) { | 1557 goto error; 1558 } 1559 bcopy(fwcmd->data_buffer, flash_crc, 4); 1560error: 1561 return rc; 1562} 1563 1564int --- 17 unchanged lines hidden (view full) --- 1582 mbx.u0.s.embedded = 1; 1583 mbx.payload_length = sizeof(struct mbx_common_phy_info); 1584 1585 /* now post the command */ 1586 rc = oce_mbox_post(sc, &mbx, NULL); 1587 if (!rc) 1588 rc = fwcmd->hdr.u0.rsp.status; 1589 if (rc) { |
1535 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1536 __FUNCTION__, rc); | 1590 device_printf(sc->dev, 1591 "%s failed - cmd status: %d addi status: %d\n", 1592 __FUNCTION__, rc, 1593 fwcmd->hdr.u0.rsp.additional_status); |
1537 goto error; 1538 } | 1594 goto error; 1595 } |
1539 phy_info->phy_type = fwcmd->params.rsp.phy_info.phy_type; | 1596 phy_info->phy_type = HOST_16(fwcmd->params.rsp.phy_info.phy_type); |
1540 phy_info->interface_type = | 1597 phy_info->interface_type = |
1541 fwcmd->params.rsp.phy_info.interface_type; | 1598 HOST_16(fwcmd->params.rsp.phy_info.interface_type); |
1542 phy_info->auto_speeds_supported = | 1599 phy_info->auto_speeds_supported = |
1543 fwcmd->params.rsp.phy_info.auto_speeds_supported; | 1600 HOST_16(fwcmd->params.rsp.phy_info.auto_speeds_supported); |
1544 phy_info->fixed_speeds_supported = | 1601 phy_info->fixed_speeds_supported = |
1545 fwcmd->params.rsp.phy_info.fixed_speeds_supported; 1546 phy_info->misc_params =fwcmd->params.rsp.phy_info.misc_params; | 1602 HOST_16(fwcmd->params.rsp.phy_info.fixed_speeds_supported); 1603 phy_info->misc_params = HOST_32(fwcmd->params.rsp.phy_info.misc_params); |
1547error: 1548 return rc; 1549 1550} 1551 1552 1553int 1554oce_mbox_lancer_write_flashrom(POCE_SOFTC sc, uint32_t data_size, --- 33 unchanged lines hidden (view full) --- 1588 fwcmd->params.req.address_lower = pdma_mem->paddr & 0xFFFFFFFF; 1589 fwcmd->params.req.address_upper = upper_32_bits(pdma_mem->paddr); 1590 1591 /* post the command */ 1592 rc = oce_mbox_post(sc, &mbx, NULL); 1593 if (!rc) 1594 rc = fwcmd->params.rsp.status; 1595 if (rc) { | 1604error: 1605 return rc; 1606 1607} 1608 1609 1610int 1611oce_mbox_lancer_write_flashrom(POCE_SOFTC sc, uint32_t data_size, --- 33 unchanged lines hidden (view full) --- 1645 fwcmd->params.req.address_lower = pdma_mem->paddr & 0xFFFFFFFF; 1646 fwcmd->params.req.address_upper = upper_32_bits(pdma_mem->paddr); 1647 1648 /* post the command */ 1649 rc = oce_mbox_post(sc, &mbx, NULL); 1650 if (!rc) 1651 rc = fwcmd->params.rsp.status; 1652 if (rc) { |
1596 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1597 __FUNCTION__, rc); | 1653 device_printf(sc->dev, 1654 "%s failed - cmd status: %d addi status: %d\n", 1655 __FUNCTION__, rc, 1656 fwcmd->params.rsp.additional_status); |
1598 goto error; 1599 } | 1657 goto error; 1658 } |
1600 *written_data = fwcmd->params.rsp.actual_write_length; | 1659 *written_data = HOST_32(fwcmd->params.rsp.actual_write_length); |
1601 *additional_status = fwcmd->params.rsp.additional_status; 1602error: 1603 return rc; 1604 1605} 1606 1607 1608 --- 35 unchanged lines hidden (view full) --- 1644 1645 mbx.u0.s.embedded = 1; 1646 mbx.payload_length = sizeof(struct mbx_create_nic_rq); 1647 1648 rc = oce_mbox_post(sc, &mbx, NULL); 1649 if (!rc) 1650 rc = fwcmd->hdr.u0.rsp.status; 1651 if (rc) { | 1660 *additional_status = fwcmd->params.rsp.additional_status; 1661error: 1662 return rc; 1663 1664} 1665 1666 1667 --- 35 unchanged lines hidden (view full) --- 1703 1704 mbx.u0.s.embedded = 1; 1705 mbx.payload_length = sizeof(struct mbx_create_nic_rq); 1706 1707 rc = oce_mbox_post(sc, &mbx, NULL); 1708 if (!rc) 1709 rc = fwcmd->hdr.u0.rsp.status; 1710 if (rc) { |
1652 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1653 __FUNCTION__, rc); | 1711 device_printf(sc->dev, 1712 "%s failed - cmd status: %d addi status: %d\n", 1713 __FUNCTION__, rc, 1714 fwcmd->hdr.u0.rsp.additional_status); |
1654 goto error; 1655 } | 1715 goto error; 1716 } |
1656 rq->rq_id = fwcmd->params.rsp.rq_id; | 1717 rq->rq_id = HOST_16(fwcmd->params.rsp.rq_id); |
1657 rq->rss_cpuid = fwcmd->params.rsp.rss_cpuid; 1658error: 1659 return rc; 1660 1661} 1662 1663 1664 1665int 1666oce_mbox_create_wq(struct oce_wq *wq) 1667{ 1668 struct oce_mbx mbx; 1669 struct mbx_create_nic_wq *fwcmd; 1670 POCE_SOFTC sc = wq->parent; 1671 int rc = 0, version, num_pages; 1672 1673 bzero(&mbx, sizeof(struct oce_mbx)); 1674 1675 fwcmd = (struct mbx_create_nic_wq *)&mbx.payload; | 1718 rq->rss_cpuid = fwcmd->params.rsp.rss_cpuid; 1719error: 1720 return rc; 1721 1722} 1723 1724 1725 1726int 1727oce_mbox_create_wq(struct oce_wq *wq) 1728{ 1729 struct oce_mbx mbx; 1730 struct mbx_create_nic_wq *fwcmd; 1731 POCE_SOFTC sc = wq->parent; 1732 int rc = 0, version, num_pages; 1733 1734 bzero(&mbx, sizeof(struct oce_mbx)); 1735 1736 fwcmd = (struct mbx_create_nic_wq *)&mbx.payload; |
1676 if (IS_XE201(sc)) { | 1737 if (IS_XE201(sc)) |
1677 version = OCE_MBX_VER_V1; | 1738 version = OCE_MBX_VER_V1; |
1678 fwcmd->params.req.if_id = sc->if_id; 1679 } else if(IS_BE(sc)) | 1739 else if(IS_BE(sc)) |
1680 IS_PROFILE_SUPER_NIC(sc) ? (version = OCE_MBX_VER_V2) 1681 : (version = OCE_MBX_VER_V0); 1682 else 1683 version = OCE_MBX_VER_V2; 1684 | 1740 IS_PROFILE_SUPER_NIC(sc) ? (version = OCE_MBX_VER_V2) 1741 : (version = OCE_MBX_VER_V0); 1742 else 1743 version = OCE_MBX_VER_V2; 1744 |
1745 if (version > OCE_MBX_VER_V0) 1746 fwcmd->params.req.if_id = sc->if_id; 1747 |
|
1685 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, 1686 MBX_SUBSYSTEM_NIC, 1687 NIC_CREATE_WQ, MBX_TIMEOUT_SEC, 1688 sizeof(struct mbx_create_nic_wq), 1689 version); 1690 1691 num_pages = oce_page_list(wq->ring, &fwcmd->params.req.pages[0]); 1692 --- 5 unchanged lines hidden (view full) --- 1698 1699 mbx.u0.s.embedded = 1; 1700 mbx.payload_length = sizeof(struct mbx_create_nic_wq); 1701 1702 rc = oce_mbox_post(sc, &mbx, NULL); 1703 if (!rc) 1704 rc = fwcmd->hdr.u0.rsp.status; 1705 if (rc) { | 1748 mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, 1749 MBX_SUBSYSTEM_NIC, 1750 NIC_CREATE_WQ, MBX_TIMEOUT_SEC, 1751 sizeof(struct mbx_create_nic_wq), 1752 version); 1753 1754 num_pages = oce_page_list(wq->ring, &fwcmd->params.req.pages[0]); 1755 --- 5 unchanged lines hidden (view full) --- 1761 1762 mbx.u0.s.embedded = 1; 1763 mbx.payload_length = sizeof(struct mbx_create_nic_wq); 1764 1765 rc = oce_mbox_post(sc, &mbx, NULL); 1766 if (!rc) 1767 rc = fwcmd->hdr.u0.rsp.status; 1768 if (rc) { |
1706 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1707 __FUNCTION__, rc); | 1769 device_printf(sc->dev, 1770 "%s failed - cmd status: %d addi status: %d\n", 1771 __FUNCTION__, rc, 1772 fwcmd->hdr.u0.rsp.additional_status); |
1708 goto error; 1709 } | 1773 goto error; 1774 } |
1710 wq->wq_id = LE_16(fwcmd->params.rsp.wq_id); | 1775 wq->wq_id = HOST_16(fwcmd->params.rsp.wq_id); |
1711 if (version == OCE_MBX_VER_V2) | 1776 if (version == OCE_MBX_VER_V2) |
1712 wq->db_offset = LE_32(fwcmd->params.rsp.db_offset); | 1777 wq->db_offset = HOST_32(fwcmd->params.rsp.db_offset); |
1713 else 1714 wq->db_offset = PD_TXULP_DB; 1715error: 1716 return rc; 1717 1718} 1719 1720 --- 28 unchanged lines hidden (view full) --- 1749 1750 mbx.u0.s.embedded = 1; 1751 mbx.payload_length = sizeof(struct mbx_create_common_eq); 1752 1753 rc = oce_mbox_post(sc, &mbx, NULL); 1754 if (!rc) 1755 rc = fwcmd->hdr.u0.rsp.status; 1756 if (rc) { | 1778 else 1779 wq->db_offset = PD_TXULP_DB; 1780error: 1781 return rc; 1782 1783} 1784 1785 --- 28 unchanged lines hidden (view full) --- 1814 1815 mbx.u0.s.embedded = 1; 1816 mbx.payload_length = sizeof(struct mbx_create_common_eq); 1817 1818 rc = oce_mbox_post(sc, &mbx, NULL); 1819 if (!rc) 1820 rc = fwcmd->hdr.u0.rsp.status; 1821 if (rc) { |
1757 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1758 __FUNCTION__, rc); | 1822 device_printf(sc->dev, 1823 "%s failed - cmd status: %d addi status: %d\n", 1824 __FUNCTION__, rc, 1825 fwcmd->hdr.u0.rsp.additional_status); |
1759 goto error; 1760 } | 1826 goto error; 1827 } |
1761 eq->eq_id = LE_16(fwcmd->params.rsp.eq_id); | 1828 eq->eq_id = HOST_16(fwcmd->params.rsp.eq_id); |
1762error: 1763 return rc; 1764} 1765 1766 1767 1768int 1769oce_mbox_cq_create(struct oce_cq *cq, uint32_t ncoalesce, uint32_t is_eventable) --- 57 unchanged lines hidden (view full) --- 1827 1828 mbx.u0.s.embedded = 1; 1829 mbx.payload_length = sizeof(struct mbx_create_common_cq); 1830 1831 rc = oce_mbox_post(sc, &mbx, NULL); 1832 if (!rc) 1833 rc = fwcmd->hdr.u0.rsp.status; 1834 if (rc) { | 1829error: 1830 return rc; 1831} 1832 1833 1834 1835int 1836oce_mbox_cq_create(struct oce_cq *cq, uint32_t ncoalesce, uint32_t is_eventable) --- 57 unchanged lines hidden (view full) --- 1894 1895 mbx.u0.s.embedded = 1; 1896 mbx.payload_length = sizeof(struct mbx_create_common_cq); 1897 1898 rc = oce_mbox_post(sc, &mbx, NULL); 1899 if (!rc) 1900 rc = fwcmd->hdr.u0.rsp.status; 1901 if (rc) { |
1835 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1836 __FUNCTION__, rc); | 1902 device_printf(sc->dev, 1903 "%s failed - cmd status: %d addi status: %d\n", 1904 __FUNCTION__, rc, 1905 fwcmd->hdr.u0.rsp.additional_status); |
1837 goto error; 1838 } | 1906 goto error; 1907 } |
1839 cq->cq_id = LE_16(fwcmd->params.rsp.cq_id); | 1908 cq->cq_id = HOST_16(fwcmd->params.rsp.cq_id); |
1840error: 1841 return rc; 1842 1843} 1844 1845int 1846oce_mbox_read_transrecv_data(POCE_SOFTC sc, uint32_t page_num) 1847{ --- 32 unchanged lines hidden (view full) --- 1880 fwcmd->params.req.port = LE_32(sc->port_id); 1881 fwcmd->params.req.page_num = LE_32(page_num); 1882 1883 /* command post */ 1884 rc = oce_mbox_post(sc, &mbx, NULL); 1885 if (!rc) 1886 rc = fwcmd->hdr.u0.rsp.status; 1887 if (rc) { | 1909error: 1910 return rc; 1911 1912} 1913 1914int 1915oce_mbox_read_transrecv_data(POCE_SOFTC sc, uint32_t page_num) 1916{ --- 32 unchanged lines hidden (view full) --- 1949 fwcmd->params.req.port = LE_32(sc->port_id); 1950 fwcmd->params.req.page_num = LE_32(page_num); 1951 1952 /* command post */ 1953 rc = oce_mbox_post(sc, &mbx, NULL); 1954 if (!rc) 1955 rc = fwcmd->hdr.u0.rsp.status; 1956 if (rc) { |
1888 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1889 __FUNCTION__, rc); | 1957 device_printf(sc->dev, 1958 "%s failed - cmd status: %d addi status: %d\n", 1959 __FUNCTION__, rc, 1960 fwcmd->hdr.u0.rsp.additional_status); |
1890 goto error; 1891 } 1892 if(fwcmd->params.rsp.page_num == PAGE_NUM_A0) 1893 { 1894 bcopy((char *)fwcmd->params.rsp.page_data, 1895 (char *)&sfp_vpd_dump_buffer[0], 1896 TRANSCEIVER_A0_SIZE); 1897 } --- 44 unchanged lines hidden (view full) --- 1942 1943 1944 /* command post */ 1945 rc = oce_mbox_post(sc, &mbx, NULL); 1946 1947 if (!rc) 1948 rc = fwcmd->hdr.u0.rsp.status; 1949 if (rc) | 1961 goto error; 1962 } 1963 if(fwcmd->params.rsp.page_num == PAGE_NUM_A0) 1964 { 1965 bcopy((char *)fwcmd->params.rsp.page_data, 1966 (char *)&sfp_vpd_dump_buffer[0], 1967 TRANSCEIVER_A0_SIZE); 1968 } --- 44 unchanged lines hidden (view full) --- 2013 2014 2015 /* command post */ 2016 rc = oce_mbox_post(sc, &mbx, NULL); 2017 2018 if (!rc) 2019 rc = fwcmd->hdr.u0.rsp.status; 2020 if (rc) |
1950 device_printf(sc->dev,"%s failed - cmd status: %d\n", 1951 __FUNCTION__, rc); | 2021 device_printf(sc->dev, 2022 "%s failed - cmd status: %d addi status: %d\n", 2023 __FUNCTION__, rc, 2024 fwcmd->hdr.u0.rsp.additional_status); |
1952} 1953 1954int 1955oce_get_profile_config(POCE_SOFTC sc) 1956{ 1957 struct oce_mbx mbx; 1958 struct mbx_common_get_profile_config *fwcmd; 1959 int rc = 0; --- 41 unchanged lines hidden (view full) --- 2001 2002 fwcmd->params.req.type = ACTIVE_PROFILE; 2003 2004 /* command post */ 2005 rc = oce_mbox_post(sc, &mbx, NULL); 2006 if (!rc) 2007 rc = fwcmd->hdr.u0.rsp.status; 2008 if (rc) { | 2025} 2026 2027int 2028oce_get_profile_config(POCE_SOFTC sc) 2029{ 2030 struct oce_mbx mbx; 2031 struct mbx_common_get_profile_config *fwcmd; 2032 int rc = 0; --- 41 unchanged lines hidden (view full) --- 2074 2075 fwcmd->params.req.type = ACTIVE_PROFILE; 2076 2077 /* command post */ 2078 rc = oce_mbox_post(sc, &mbx, NULL); 2079 if (!rc) 2080 rc = fwcmd->hdr.u0.rsp.status; 2081 if (rc) { |
2009 device_printf(sc->dev,"%s failed - cmd status: %d\n", 2010 __FUNCTION__, rc); | 2082 device_printf(sc->dev, 2083 "%s failed - cmd status: %d addi status: %d\n", 2084 __FUNCTION__, rc, 2085 fwcmd->hdr.u0.rsp.additional_status); |
2011 goto error; 2012 } 2013 2014 nic_desc = (struct oce_nic_resc_desc *) fwcmd->params.rsp.resources; 2015 desc_count = HOST_32(fwcmd->params.rsp.desc_count); 2016 for (i = 0; i < desc_count; i++) { 2017 if ((nic_desc->desc_type == NIC_RESC_DESC_TYPE_V0) || 2018 (nic_desc->desc_type == NIC_RESC_DESC_TYPE_V1)) { 2019 nic_desc_valid = TRUE; 2020 break; 2021 } 2022 nic_desc = (struct oce_nic_resc_desc *) \ 2023 ((char *)nic_desc + nic_desc->desc_len); 2024 } 2025 if (!nic_desc_valid) { 2026 rc = -1; 2027 goto error; 2028 } 2029 else { | 2086 goto error; 2087 } 2088 2089 nic_desc = (struct oce_nic_resc_desc *) fwcmd->params.rsp.resources; 2090 desc_count = HOST_32(fwcmd->params.rsp.desc_count); 2091 for (i = 0; i < desc_count; i++) { 2092 if ((nic_desc->desc_type == NIC_RESC_DESC_TYPE_V0) || 2093 (nic_desc->desc_type == NIC_RESC_DESC_TYPE_V1)) { 2094 nic_desc_valid = TRUE; 2095 break; 2096 } 2097 nic_desc = (struct oce_nic_resc_desc *) \ 2098 ((char *)nic_desc + nic_desc->desc_len); 2099 } 2100 if (!nic_desc_valid) { 2101 rc = -1; 2102 goto error; 2103 } 2104 else { |
2105 sc->max_vlans = nic_desc->vlan_count; |
|
2030 sc->nwqs = HOST_32(nic_desc->txq_count); 2031 if (sc->nwqs) 2032 sc->nwqs = MIN(sc->nwqs, OCE_MAX_WQ); 2033 else 2034 sc->nwqs = OCE_MAX_WQ; 2035 2036 } 2037error: --- 53 unchanged lines hidden (view full) --- 2091 sgl->length = htole32(mbx.payload_length); 2092 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 2093 2094 /* command post */ 2095 rc = oce_mbox_post(sc, &mbx, NULL); 2096 if (!rc) 2097 rc = fwcmd->hdr.u0.rsp.status; 2098 if (rc) { | 2106 sc->nwqs = HOST_32(nic_desc->txq_count); 2107 if (sc->nwqs) 2108 sc->nwqs = MIN(sc->nwqs, OCE_MAX_WQ); 2109 else 2110 sc->nwqs = OCE_MAX_WQ; 2111 2112 } 2113error: --- 53 unchanged lines hidden (view full) --- 2167 sgl->length = htole32(mbx.payload_length); 2168 DW_SWAP(u32ptr(&mbx), mbx.payload_length + OCE_BMBX_RHDR_SZ); 2169 2170 /* command post */ 2171 rc = oce_mbox_post(sc, &mbx, NULL); 2172 if (!rc) 2173 rc = fwcmd->hdr.u0.rsp.status; 2174 if (rc) { |
2099 device_printf(sc->dev,"%s failed - cmd status: %d\n", 2100 __FUNCTION__, rc); | 2175 device_printf(sc->dev, 2176 "%s failed - cmd status: %d addi status: %d\n", 2177 __FUNCTION__, rc, 2178 fwcmd->hdr.u0.rsp.additional_status); |
2101 goto error; 2102 } 2103 2104 nic_desc = (struct oce_nic_resc_desc *) fwcmd->params.rsp.resources; 2105 desc_count = HOST_32(fwcmd->params.rsp.desc_count); 2106 for (i = 0; i < desc_count; i++) { 2107 if ((nic_desc->desc_type == NIC_RESC_DESC_TYPE_V0) || 2108 (nic_desc->desc_type == NIC_RESC_DESC_TYPE_V1)) { 2109 nic_desc_valid = TRUE; 2110 break; 2111 } 2112 nic_desc = (struct oce_nic_resc_desc *) \ 2113 ((char *)nic_desc + nic_desc->desc_len); 2114 } 2115 if (!nic_desc_valid) { 2116 rc = -1; 2117 goto error; 2118 } 2119 else { | 2179 goto error; 2180 } 2181 2182 nic_desc = (struct oce_nic_resc_desc *) fwcmd->params.rsp.resources; 2183 desc_count = HOST_32(fwcmd->params.rsp.desc_count); 2184 for (i = 0; i < desc_count; i++) { 2185 if ((nic_desc->desc_type == NIC_RESC_DESC_TYPE_V0) || 2186 (nic_desc->desc_type == NIC_RESC_DESC_TYPE_V1)) { 2187 nic_desc_valid = TRUE; 2188 break; 2189 } 2190 nic_desc = (struct oce_nic_resc_desc *) \ 2191 ((char *)nic_desc + nic_desc->desc_len); 2192 } 2193 if (!nic_desc_valid) { 2194 rc = -1; 2195 goto error; 2196 } 2197 else { |
2198 sc->max_vlans = nic_desc->vlan_count; |
|
2120 sc->nwqs = HOST_32(nic_desc->txq_count); 2121 if (sc->nwqs) 2122 sc->nwqs = MIN(sc->nwqs, OCE_MAX_WQ); 2123 else 2124 sc->nwqs = OCE_MAX_WQ; 2125 2126 sc->nrssqs = HOST_32(nic_desc->rssq_count); 2127 if (sc->nrssqs) 2128 sc->nrssqs = MIN(sc->nrssqs, max_rss); 2129 else 2130 sc->nrssqs = max_rss; 2131 sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */; 2132 } 2133error: 2134 oce_dma_free(sc, &dma); 2135 return rc; 2136 2137} | 2199 sc->nwqs = HOST_32(nic_desc->txq_count); 2200 if (sc->nwqs) 2201 sc->nwqs = MIN(sc->nwqs, OCE_MAX_WQ); 2202 else 2203 sc->nwqs = OCE_MAX_WQ; 2204 2205 sc->nrssqs = HOST_32(nic_desc->rssq_count); 2206 if (sc->nrssqs) 2207 sc->nrssqs = MIN(sc->nrssqs, max_rss); 2208 else 2209 sc->nrssqs = max_rss; 2210 sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */; 2211 } 2212error: 2213 oce_dma_free(sc, &dma); 2214 return rc; 2215 2216} |