Lines Matching defs:crq

157 	union ibmvnic_crq crq;
159 memset(&crq, 0, sizeof(crq));
160 crq.generic.first = IBMVNIC_CRQ_INIT_CMD;
161 crq.generic.cmd = IBMVNIC_CRQ_INIT_COMPLETE;
163 return ibmvnic_send_crq(adapter, &crq);
168 union ibmvnic_crq crq;
170 memset(&crq, 0, sizeof(crq));
171 crq.version_exchange.first = IBMVNIC_CRQ_CMD;
172 crq.version_exchange.cmd = VERSION_EXCHANGE;
173 crq.version_exchange.version = cpu_to_be16(ibmvnic_version);
175 return ibmvnic_send_crq(adapter, &crq);
402 if (!adapter->crq.active) {
1683 union ibmvnic_crq crq;
1689 memset(&crq, 0, sizeof(crq));
1690 crq.logical_link_state.first = IBMVNIC_CRQ_CMD;
1691 crq.logical_link_state.cmd = LOGICAL_LINK_STATE;
1692 crq.logical_link_state.link_state = link_state;
1698 rc = ibmvnic_send_crq(adapter, &crq);
1748 union ibmvnic_crq crq;
1759 crq.get_vpd_size.first = IBMVNIC_CRQ_CMD;
1760 crq.get_vpd_size.cmd = GET_VPD_SIZE;
1761 rc = ibmvnic_send_crq(adapter, &crq);
1804 crq.get_vpd.first = IBMVNIC_CRQ_CMD;
1805 crq.get_vpd.cmd = GET_VPD;
1806 crq.get_vpd.ioba = cpu_to_be32(adapter->vpd->dma_addr);
1807 crq.get_vpd.len = cpu_to_be32((u32)adapter->vpd->len);
1808 rc = ibmvnic_send_crq(adapter, &crq);
1873 /* We're ready to receive frames, enable the sub-crq interrupts and
2603 union ibmvnic_crq crq;
2605 memset(&crq, 0, sizeof(crq));
2606 crq.request_capability.first = IBMVNIC_CRQ_CMD;
2607 crq.request_capability.cmd = REQUEST_CAPABILITY;
2615 memset(&crq, 0, sizeof(crq));
2616 crq.multicast_ctrl.first = IBMVNIC_CRQ_CMD;
2617 crq.multicast_ctrl.cmd = MULTICAST_CTRL;
2618 crq.multicast_ctrl.flags = IBMVNIC_ENABLE_ALL;
2619 ibmvnic_send_crq(adapter, &crq);
2622 memset(&crq, 0, sizeof(crq));
2623 crq.multicast_ctrl.first = IBMVNIC_CRQ_CMD;
2624 crq.multicast_ctrl.cmd = MULTICAST_CTRL;
2625 crq.multicast_ctrl.flags = IBMVNIC_DISABLE_ALL;
2626 ibmvnic_send_crq(adapter, &crq);
2630 memset(&crq, 0, sizeof(crq));
2631 crq.multicast_ctrl.first = IBMVNIC_CRQ_CMD;
2632 crq.multicast_ctrl.cmd = MULTICAST_CTRL;
2633 crq.multicast_ctrl.flags = IBMVNIC_ENABLE_MC;
2634 ether_addr_copy(&crq.multicast_ctrl.mac_addr[0],
2636 ibmvnic_send_crq(adapter, &crq);
2645 union ibmvnic_crq crq;
2653 memset(&crq, 0, sizeof(crq));
2654 crq.change_mac_addr.first = IBMVNIC_CRQ_CMD;
2655 crq.change_mac_addr.cmd = CHANGE_MAC_ADDR;
2656 ether_addr_copy(&crq.change_mac_addr.mac_addr[0], dev_addr);
2662 rc = ibmvnic_send_crq(adapter, &crq);
2860 "Reset couldn't initialize crq. rc=%d\n", rc);
2990 "Couldn't initialize crq. rc=%d\n", rc);
3080 adapter->crq.active = true;
3104 dev_err(dev, "Failed to initialize sub crq irqs\n, rc=%d", rc);
3798 union ibmvnic_crq crq;
3802 memset(&crq, 0, sizeof(crq));
3803 crq.request_statistics.first = IBMVNIC_CRQ_CMD;
3804 crq.request_statistics.cmd = REQUEST_STATISTICS;
3805 crq.request_statistics.ioba = cpu_to_be32(adapter->stats_token);
3806 crq.request_statistics.len =
3811 rc = ibmvnic_send_crq(adapter, &crq);
3965 dev_warn(dev, "Couldn't allocate crq queue messages page\n");
3974 dev_warn(dev, "Couldn't map crq queue messages page\n");
3987 dev_warn(dev, "Error %d registering sub-crq\n", rc);
4007 "sub-crq initialized, num %lx, hw_irq=%lx, irq=%x\n",
4423 union ibmvnic_crq crq;
4446 dev_err(dev, "Fatal, invalid entries per sub-crq\n");
4507 memset(&crq, 0, sizeof(crq));
4508 crq.request_capability.first = IBMVNIC_CRQ_CMD;
4509 crq.request_capability.cmd = REQUEST_CAPABILITY;
4511 crq.request_capability.capability = cpu_to_be16(REQ_TX_QUEUES);
4512 crq.request_capability.number = cpu_to_be64(adapter->req_tx_queues);
4514 ibmvnic_send_crq(adapter, &crq);
4516 crq.request_capability.capability = cpu_to_be16(REQ_RX_QUEUES);
4517 crq.request_capability.number = cpu_to_be64(adapter->req_rx_queues);
4519 ibmvnic_send_crq(adapter, &crq);
4521 crq.request_capability.capability = cpu_to_be16(REQ_RX_ADD_QUEUES);
4522 crq.request_capability.number = cpu_to_be64(adapter->req_rx_add_queues);
4524 ibmvnic_send_crq(adapter, &crq);
4526 crq.request_capability.capability =
4528 crq.request_capability.number =
4531 ibmvnic_send_crq(adapter, &crq);
4533 crq.request_capability.capability =
4535 crq.request_capability.number =
4538 ibmvnic_send_crq(adapter, &crq);
4540 crq.request_capability.capability = cpu_to_be16(REQ_MTU);
4541 crq.request_capability.number = cpu_to_be64(adapter->req_mtu);
4543 ibmvnic_send_crq(adapter, &crq);
4547 crq.request_capability.capability =
4549 crq.request_capability.number = cpu_to_be64(1);
4551 ibmvnic_send_crq(adapter, &crq);
4554 crq.request_capability.capability =
4556 crq.request_capability.number = cpu_to_be64(0);
4558 ibmvnic_send_crq(adapter, &crq);
4609 struct ibmvnic_crq_queue *queue = &adapter->crq;
4610 union ibmvnic_crq *crq;
4612 crq = &queue->msgs[queue->cur];
4613 if (crq->generic.first & IBMVNIC_CRQ_CMD_RSP) {
4617 crq = NULL;
4620 return crq;
4662 union ibmvnic_crq *crq)
4666 u64 *u64_crq = (u64 *)crq;
4673 if (!adapter->crq.active &&
4674 crq->generic.first != IBMVNIC_CRQ_INIT_CMD) {
4701 union ibmvnic_crq crq;
4705 memset(&crq, 0, sizeof(crq));
4706 crq.generic.first = IBMVNIC_CRQ_INIT_CMD;
4707 crq.generic.cmd = IBMVNIC_CRQ_INIT;
4711 rc = ibmvnic_send_crq(adapter, &crq);
4785 union ibmvnic_crq crq;
4891 memset(&crq, 0, sizeof(crq));
4892 crq.login.first = IBMVNIC_CRQ_CMD;
4893 crq.login.cmd = LOGIN;
4894 crq.login.ioba = cpu_to_be32(buffer_token);
4895 crq.login.len = cpu_to_be32(buffer_size);
4898 rc = ibmvnic_send_crq(adapter, &crq);
4925 union ibmvnic_crq crq;
4927 memset(&crq, 0, sizeof(crq));
4928 crq.request_map.first = IBMVNIC_CRQ_CMD;
4929 crq.request_map.cmd = REQUEST_MAP;
4930 crq.request_map.map_id = map_id;
4931 crq.request_map.ioba = cpu_to_be32(addr);
4932 crq.request_map.len = cpu_to_be32(len);
4933 return ibmvnic_send_crq(adapter, &crq);
4938 union ibmvnic_crq crq;
4940 memset(&crq, 0, sizeof(crq));
4941 crq.request_unmap.first = IBMVNIC_CRQ_CMD;
4942 crq.request_unmap.cmd = REQUEST_UNMAP;
4943 crq.request_unmap.map_id = map_id;
4944 return ibmvnic_send_crq(adapter, &crq);
4949 union ibmvnic_crq crq;
4951 memset(&crq, 0, sizeof(crq));
4952 crq.query_map.first = IBMVNIC_CRQ_CMD;
4953 crq.query_map.cmd = QUERY_MAP;
4954 ibmvnic_send_crq(adapter, &crq);
4960 union ibmvnic_crq crq;
4971 memset(&crq, 0, sizeof(crq));
4972 crq.query_capability.first = IBMVNIC_CRQ_CMD;
4973 crq.query_capability.cmd = QUERY_CAPABILITY;
4975 crq.query_capability.capability = cpu_to_be16(MIN_TX_QUEUES);
4976 ibmvnic_send_crq(adapter, &crq);
4979 crq.query_capability.capability = cpu_to_be16(MIN_RX_QUEUES);
4980 ibmvnic_send_crq(adapter, &crq);
4983 crq.query_capability.capability = cpu_to_be16(MIN_RX_ADD_QUEUES);
4984 ibmvnic_send_crq(adapter, &crq);
4987 crq.query_capability.capability = cpu_to_be16(MAX_TX_QUEUES);
4988 ibmvnic_send_crq(adapter, &crq);
4991 crq.query_capability.capability = cpu_to_be16(MAX_RX_QUEUES);
4992 ibmvnic_send_crq(adapter, &crq);
4995 crq.query_capability.capability = cpu_to_be16(MAX_RX_ADD_QUEUES);
4996 ibmvnic_send_crq(adapter, &crq);
4999 crq.query_capability.capability =
5001 ibmvnic_send_crq(adapter, &crq);
5004 crq.query_capability.capability =
5006 ibmvnic_send_crq(adapter, &crq);
5009 crq.query_capability.capability =
5011 ibmvnic_send_crq(adapter, &crq);
5014 crq.query_capability.capability =
5016 ibmvnic_send_crq(adapter, &crq);
5019 crq.query_capability.capability = cpu_to_be16(TCP_IP_OFFLOAD);
5020 ibmvnic_send_crq(adapter, &crq);
5023 crq.query_capability.capability = cpu_to_be16(PROMISC_SUPPORTED);
5024 ibmvnic_send_crq(adapter, &crq);
5027 crq.query_capability.capability = cpu_to_be16(MIN_MTU);
5028 ibmvnic_send_crq(adapter, &crq);
5031 crq.query_capability.capability = cpu_to_be16(MAX_MTU);
5032 ibmvnic_send_crq(adapter, &crq);
5035 crq.query_capability.capability = cpu_to_be16(MAX_MULTICAST_FILTERS);
5036 ibmvnic_send_crq(adapter, &crq);
5039 crq.query_capability.capability = cpu_to_be16(VLAN_HEADER_INSERTION);
5040 ibmvnic_send_crq(adapter, &crq);
5043 crq.query_capability.capability = cpu_to_be16(RX_VLAN_HEADER_INSERTION);
5044 ibmvnic_send_crq(adapter, &crq);
5047 crq.query_capability.capability = cpu_to_be16(MAX_TX_SG_ENTRIES);
5048 ibmvnic_send_crq(adapter, &crq);
5051 crq.query_capability.capability = cpu_to_be16(RX_SG_SUPPORTED);
5052 ibmvnic_send_crq(adapter, &crq);
5055 crq.query_capability.capability = cpu_to_be16(OPT_TX_COMP_SUB_QUEUES);
5056 ibmvnic_send_crq(adapter, &crq);
5059 crq.query_capability.capability = cpu_to_be16(OPT_RX_COMP_QUEUES);
5060 ibmvnic_send_crq(adapter, &crq);
5063 crq.query_capability.capability =
5065 ibmvnic_send_crq(adapter, &crq);
5068 crq.query_capability.capability =
5070 ibmvnic_send_crq(adapter, &crq);
5073 crq.query_capability.capability =
5075 ibmvnic_send_crq(adapter, &crq);
5078 crq.query_capability.capability = cpu_to_be16(TX_RX_DESC_REQ);
5080 ibmvnic_send_crq(adapter, &crq);
5093 union ibmvnic_crq crq;
5107 memset(&crq, 0, sizeof(crq));
5108 crq.query_ip_offload.first = IBMVNIC_CRQ_CMD;
5109 crq.query_ip_offload.cmd = QUERY_IP_OFFLOAD;
5110 crq.query_ip_offload.len = cpu_to_be32(buf_sz);
5111 crq.query_ip_offload.ioba =
5114 ibmvnic_send_crq(adapter, &crq);
5123 union ibmvnic_crq crq;
5187 memset(&crq, 0, sizeof(crq));
5188 crq.control_ip_offload.first = IBMVNIC_CRQ_CMD;
5189 crq.control_ip_offload.cmd = CONTROL_IP_OFFLOAD;
5190 crq.control_ip_offload.len =
5192 crq.control_ip_offload.ioba = cpu_to_be32(adapter->ip_offload_ctrl_tok);
5193 ibmvnic_send_crq(adapter, &crq);
5196 static void handle_vpd_size_rsp(union ibmvnic_crq *crq,
5201 if (crq->get_vpd_size_rsp.rc.code) {
5203 crq->get_vpd_size_rsp.rc.code);
5208 adapter->vpd->len = be64_to_cpu(crq->get_vpd_size_rsp.len);
5212 static void handle_vpd_rsp(union ibmvnic_crq *crq,
5224 if (crq->get_vpd_rsp.rc.code) {
5226 crq->get_vpd_rsp.rc.code);
5340 static void handle_error_indication(union ibmvnic_crq *crq,
5346 cause = be16_to_cpu(crq->error_indication.error_cause);
5350 crq->error_indication.flags
5354 if (crq->error_indication.flags & IBMVNIC_FATAL_ERROR)
5360 static int handle_change_mac_rsp(union ibmvnic_crq *crq,
5367 rc = crq->change_mac_addr_rsp.rc.code;
5372 /* crq->change_mac_addr.mac_addr is the requested one
5373 * crq->change_mac_addr_rsp.mac_addr is the returned valid one.
5375 eth_hw_addr_set(netdev, &crq->change_mac_addr_rsp.mac_addr[0]);
5377 &crq->change_mac_addr_rsp.mac_addr[0]);
5383 static void handle_request_cap_rsp(union ibmvnic_crq *crq,
5393 switch (be16_to_cpu(crq->request_capability_rsp.capability)) {
5424 crq->request_capability.capability);
5428 switch (crq->request_capability_rsp.rc.code) {
5434 (long)be64_to_cpu(crq->request_capability_rsp.number),
5437 if (be16_to_cpu(crq->request_capability_rsp.capability) ==
5444 be64_to_cpu(crq->request_capability_rsp.number);
5451 crq->request_capability_rsp.rc.code);
5527 * 2 outstanding login requests sent, the LOGIN_RSP crq
5566 static void handle_request_unmap_rsp(union ibmvnic_crq *crq,
5572 rc = crq->request_unmap_rsp.rc.code;
5577 static void handle_query_map_rsp(union ibmvnic_crq *crq,
5584 rc = crq->query_map_rsp.rc.code;
5590 crq->query_map_rsp.page_size,
5591 __be32_to_cpu(crq->query_map_rsp.tot_pages),
5592 __be32_to_cpu(crq->query_map_rsp.free_pages));
5595 static void handle_query_cap_rsp(union ibmvnic_crq *crq,
5605 rc = crq->query_capability.rc.code;
5611 switch (be16_to_cpu(crq->query_capability.capability)) {
5614 be64_to_cpu(crq->query_capability.number);
5620 be64_to_cpu(crq->query_capability.number);
5626 be64_to_cpu(crq->query_capability.number);
5632 be64_to_cpu(crq->query_capability.number);
5638 be64_to_cpu(crq->query_capability.number);
5644 be64_to_cpu(crq->query_capability.number);
5650 be64_to_cpu(crq->query_capability.number);
5656 be64_to_cpu(crq->query_capability.number);
5662 be64_to_cpu(crq->query_capability.number);
5668 be64_to_cpu(crq->query_capability.number);
5674 be64_to_cpu(crq->query_capability.number);
5680 be64_to_cpu(crq->query_capability.number);
5685 adapter->min_mtu = be64_to_cpu(crq->query_capability.number);
5690 adapter->max_mtu = be64_to_cpu(crq->query_capability.number);
5696 be64_to_cpu(crq->query_capability.number);
5702 be64_to_cpu(crq->query_capability.number);
5710 be64_to_cpu(crq->query_capability.number);
5716 be64_to_cpu(crq->query_capability.number);
5722 be64_to_cpu(crq->query_capability.number);
5728 be64_to_cpu(crq->query_capability.number);
5734 be64_to_cpu(crq->query_capability.number);
5740 be64_to_cpu(crq->query_capability.number);
5746 be64_to_cpu(crq->query_capability.number);
5752 be64_to_cpu(crq->query_capability.number);
5757 adapter->tx_rx_desc_req = crq->query_capability.number;
5764 crq->query_capability.capability);
5774 union ibmvnic_crq crq;
5777 memset(&crq, 0, sizeof(crq));
5778 crq.query_phys_parms.first = IBMVNIC_CRQ_CMD;
5779 crq.query_phys_parms.cmd = QUERY_PHYS_PARMS;
5785 rc = ibmvnic_send_crq(adapter, &crq);
5801 static int handle_query_phys_parms_rsp(union ibmvnic_crq *crq,
5806 __be32 rspeed = cpu_to_be32(crq->query_phys_parms_rsp.speed);
5808 rc = crq->query_phys_parms_rsp.rc.code;
5846 if (crq->query_phys_parms_rsp.flags1 & IBMVNIC_FULL_DUPLEX)
5848 else if (crq->query_phys_parms_rsp.flags1 & IBMVNIC_HALF_DUPLEX)
5856 static void ibmvnic_handle_crq(union ibmvnic_crq *crq,
5859 struct ibmvnic_generic_crq *gen_crq = &crq->generic;
5862 u64 *u64_crq = (u64 *)crq;
5909 adapter->crq.active = true;
5913 dev_err(dev, "Unknown crq cmd: %d\n", gen_crq->cmd);
5918 adapter->crq.active = false;
5927 /* if we got here during crq-init, retry crq-init */
5960 rc = crq->version_exchange_rsp.rc.code;
5966 be16_to_cpu(crq->version_exchange_rsp.version);
5972 handle_query_cap_rsp(crq, adapter);
5975 handle_query_map_rsp(crq, adapter);
5978 adapter->fw_done_rc = crq->request_map_rsp.rc.code;
5982 handle_request_unmap_rsp(crq, adapter);
5985 handle_request_cap_rsp(crq, adapter);
5989 handle_login_rsp(crq, adapter);
5994 crq->logical_link_state_rsp.link_state,
5995 crq->logical_link_state_rsp.rc.code);
5997 crq->logical_link_state_rsp.link_state;
5998 adapter->init_done_rc = crq->logical_link_state_rsp.rc.code;
6004 crq->link_state_indication.phys_link_state;
6006 crq->link_state_indication.logical_link_state;
6014 adapter->fw_done_rc = handle_change_mac_rsp(crq, adapter);
6018 handle_error_indication(crq, adapter);
6043 handle_vpd_size_rsp(crq, adapter);
6046 handle_vpd_rsp(crq, adapter);
6049 adapter->fw_done_rc = handle_query_phys_parms_rsp(crq, adapter);
6069 struct ibmvnic_crq_queue *queue = &adapter->crq;
6070 union ibmvnic_crq *crq;
6076 while ((crq = ibmvnic_next_crq(adapter)) != NULL) {
6078 * crq->generic.first & IBMVNIC_CRQ_CMD_RSP is loaded
6083 ibmvnic_handle_crq(crq, adapter);
6084 crq->generic.first = 0;
6107 struct ibmvnic_crq_queue *crq = &adapter->crq;
6118 if (!crq->msgs)
6121 memset(crq->msgs, 0, PAGE_SIZE);
6122 crq->cur = 0;
6123 crq->active = false;
6127 crq->msg_token, PAGE_SIZE);
6133 dev_warn(dev, "Couldn't register crq (rc=%d)\n", rc);
6140 struct ibmvnic_crq_queue *crq = &adapter->crq;
6144 if (!crq->msgs)
6154 dma_unmap_single(&vdev->dev, crq->msg_token, PAGE_SIZE,
6156 free_page((unsigned long)crq->msgs);
6157 crq->msgs = NULL;
6158 crq->active = false;
6163 struct ibmvnic_crq_queue *crq = &adapter->crq;
6168 if (crq->msgs)
6171 crq->msgs = (union ibmvnic_crq *)get_zeroed_page(GFP_KERNEL);
6174 if (!crq->msgs)
6177 crq->size = PAGE_SIZE / sizeof(*crq->msgs);
6178 crq->msg_token = dma_map_single(dev, crq->msgs, PAGE_SIZE,
6180 if (dma_mapping_error(dev, crq->msg_token))
6184 crq->msg_token, PAGE_SIZE);
6203 snprintf(crq->name, sizeof(crq->name), "ibmvnic-%x",
6205 rc = request_irq(vdev->irq, ibmvnic_interrupt, 0, crq->name, adapter);
6218 crq->cur = 0;
6219 spin_lock_init(&crq->lock);
6232 dma_unmap_single(dev, crq->msg_token, PAGE_SIZE, DMA_BIDIRECTIONAL);
6234 free_page((unsigned long)crq->msgs);
6235 crq->msgs = NULL;
6251 dev_err(dev, "Send crq init failed with error %d\n", rc);
6304 dev_err(dev, "Failed to initialize sub crq irqs\n");
6403 dev_err(&dev->dev, "Couldn't initialize crq. rc=%d\n",
6599 ret += PAGE_SIZE; /* the crq message queue */