Lines Matching refs:port
148 static void ehea_schedule_port_reset(struct ehea_port *port) in ehea_schedule_port_reset() argument
150 if (!test_bit(__EHEA_DISABLE_PORT_RESET, &port->flags)) in ehea_schedule_port_reset()
151 schedule_work(&port->reset_task); in ehea_schedule_port_reset()
171 struct ehea_port *port = adapter->port[k]; in ehea_update_firmware_handles() local
173 if (!port || (port->state != EHEA_PORT_UP)) in ehea_update_firmware_handles()
177 num_portres += port->num_def_qps; in ehea_update_firmware_handles()
197 struct ehea_port *port = adapter->port[k]; in ehea_update_firmware_handles() local
199 if (!port || (port->state != EHEA_PORT_UP) || in ehea_update_firmware_handles()
203 for (l = 0; l < port->num_def_qps; l++) { in ehea_update_firmware_handles()
204 struct ehea_port_res *pr = &port->port_res[l]; in ehea_update_firmware_handles()
220 arr[i++].fwh = port->qp_eq->fw_handle; in ehea_update_firmware_handles()
257 struct ehea_port *port = adapter->port[k]; in ehea_update_bcmc_registrations() local
259 if (!port || (port->state != EHEA_PORT_UP)) in ehea_update_bcmc_registrations()
264 list_for_each_entry(mc_entry, &port->mc_list->list,list) in ehea_update_bcmc_registrations()
277 struct ehea_port *port = adapter->port[k]; in ehea_update_bcmc_registrations() local
279 if (!port || (port->state != EHEA_PORT_UP)) in ehea_update_bcmc_registrations()
286 arr[i].port_id = port->logical_port_id; in ehea_update_bcmc_registrations()
289 arr[i++].macaddr = port->mac_addr; in ehea_update_bcmc_registrations()
292 arr[i].port_id = port->logical_port_id; in ehea_update_bcmc_registrations()
295 arr[i++].macaddr = port->mac_addr; in ehea_update_bcmc_registrations()
299 &port->mc_list->list, list) { in ehea_update_bcmc_registrations()
304 arr[i].port_id = port->logical_port_id; in ehea_update_bcmc_registrations()
312 arr[i].port_id = port->logical_port_id; in ehea_update_bcmc_registrations()
334 struct ehea_port *port = netdev_priv(dev); in ehea_get_stats64() local
338 for (i = 0; i < port->num_def_qps; i++) { in ehea_get_stats64()
339 rx_packets += port->port_res[i].rx_packets; in ehea_get_stats64()
340 rx_bytes += port->port_res[i].rx_bytes; in ehea_get_stats64()
343 for (i = 0; i < port->num_def_qps; i++) { in ehea_get_stats64()
344 tx_packets += port->port_res[i].tx_packets; in ehea_get_stats64()
345 tx_bytes += port->port_res[i].tx_bytes; in ehea_get_stats64()
353 stats->multicast = port->stats.multicast; in ehea_get_stats64()
354 stats->rx_errors = port->stats.rx_errors; in ehea_get_stats64()
360 struct ehea_port *port = in ehea_update_stats() local
362 struct net_device *dev = port->netdev; in ehea_update_stats()
363 struct rtnl_link_stats64 *stats = &port->stats; in ehea_update_stats()
373 hret = ehea_h_query_ehea_port(port->adapter->handle, in ehea_update_stats()
374 port->logical_port_id, in ehea_update_stats()
381 if (netif_msg_hw(port)) in ehea_update_stats()
390 schedule_delayed_work(&port->stats_work, in ehea_update_stats()
397 struct net_device *dev = pr->port->netdev; in ehea_refill_rq1()
436 struct net_device *dev = pr->port->netdev; in ehea_init_fill_rq1()
457 struct net_device *dev = pr->port->netdev; in ehea_refill_rq_def()
483 netdev_info(pr->port->netdev, in ehea_refill_rq_def()
571 skb_record_rx_queue(skb, pr - &pr->port->port_res[0]); in ehea_fill_skb()
652 if (netif_msg_rx_err(pr->port)) { in ehea_treat_poll_error()
657 ehea_schedule_port_reset(pr->port); in ehea_treat_poll_error()
668 struct ehea_port *port = pr->port; in ehea_proc_rwqes() local
690 if (netif_msg_rx_status(port)) in ehea_proc_rwqes()
702 netif_info(port, rx_err, dev, in ehea_proc_rwqes()
718 netif_err(port, rx_err, dev, in ehea_proc_rwqes()
729 netif_err(port, rx_err, dev, in ehea_proc_rwqes()
767 static void reset_sq_restart_flag(struct ehea_port *port) in reset_sq_restart_flag() argument
771 for (i = 0; i < port->num_def_qps; i++) { in reset_sq_restart_flag()
772 struct ehea_port_res *pr = &port->port_res[i]; in reset_sq_restart_flag()
775 wake_up(&port->restart_wq); in reset_sq_restart_flag()
778 static void check_sqs(struct ehea_port *port) in check_sqs() argument
784 for (i = 0; i < port->num_def_qps; i++) { in check_sqs()
785 struct ehea_port_res *pr = &port->port_res[i]; in check_sqs()
800 ret = wait_event_timeout(port->restart_wq, in check_sqs()
806 ehea_schedule_port_reset(pr->port); in check_sqs()
822 struct netdev_queue *txq = netdev_get_tx_queue(pr->port->netdev, in ehea_proc_cqes()
823 pr - &pr->port->port_res[0]); in ehea_proc_cqes()
842 if (netif_msg_tx_err(pr->port)) in ehea_proc_cqes()
847 ehea_schedule_port_reset(pr->port); in ehea_proc_cqes()
852 if (netif_msg_tx_done(pr->port)) in ehea_proc_cqes()
882 wake_up(&pr->port->swqe_avail_wq); in ehea_proc_cqes()
893 struct net_device *dev = pr->port->netdev; in ehea_poll()
928 struct ehea_port *port = netdev_priv(dev); in ehea_netpoll() local
931 for (i = 0; i < port->num_def_qps; i++) in ehea_netpoll()
932 napi_schedule(&port->port_res[i].napi); in ehea_netpoll()
947 struct ehea_port *port = param; in ehea_qp_aff_irq_handler() local
954 eqe = ehea_poll_eq(port->qp_eq); in ehea_qp_aff_irq_handler()
961 qp = port->port_res[qp_token].qp; in ehea_qp_aff_irq_handler()
963 resource_type = ehea_error_data(port->adapter, qp->fw_handle, in ehea_qp_aff_irq_handler()
973 eqe = ehea_poll_eq(port->qp_eq); in ehea_qp_aff_irq_handler()
978 ehea_schedule_port_reset(port); in ehea_qp_aff_irq_handler()
990 if (adapter->port[i]) in ehea_get_port()
991 if (adapter->port[i]->logical_port_id == logical_port) in ehea_get_port()
992 return adapter->port[i]; in ehea_get_port()
996 int ehea_sense_port_attr(struct ehea_port *port) in ehea_sense_port_attr() argument
1010 hret = ehea_h_query_ehea_port(port->adapter->handle, in ehea_sense_port_attr()
1011 port->logical_port_id, H_PORT_CB0, in ehea_sense_port_attr()
1020 port->mac_addr = cb0->port_mac_addr << 16; in ehea_sense_port_attr()
1022 if (!is_valid_ether_addr((u8 *)&port->mac_addr)) { in ehea_sense_port_attr()
1030 port->port_speed = EHEA_SPEED_10M; in ehea_sense_port_attr()
1031 port->full_duplex = 0; in ehea_sense_port_attr()
1034 port->port_speed = EHEA_SPEED_10M; in ehea_sense_port_attr()
1035 port->full_duplex = 1; in ehea_sense_port_attr()
1038 port->port_speed = EHEA_SPEED_100M; in ehea_sense_port_attr()
1039 port->full_duplex = 0; in ehea_sense_port_attr()
1042 port->port_speed = EHEA_SPEED_100M; in ehea_sense_port_attr()
1043 port->full_duplex = 1; in ehea_sense_port_attr()
1046 port->port_speed = EHEA_SPEED_1G; in ehea_sense_port_attr()
1047 port->full_duplex = 1; in ehea_sense_port_attr()
1050 port->port_speed = EHEA_SPEED_10G; in ehea_sense_port_attr()
1051 port->full_duplex = 1; in ehea_sense_port_attr()
1054 port->port_speed = 0; in ehea_sense_port_attr()
1055 port->full_duplex = 0; in ehea_sense_port_attr()
1059 port->autoneg = 1; in ehea_sense_port_attr()
1060 port->num_mcs = cb0->num_default_qps; in ehea_sense_port_attr()
1064 port->num_def_qps = cb0->num_default_qps; in ehea_sense_port_attr()
1066 port->num_def_qps = 1; in ehea_sense_port_attr()
1068 if (!port->num_def_qps) { in ehea_sense_port_attr()
1075 if (ret || netif_msg_probe(port)) in ehea_sense_port_attr()
1082 int ehea_set_portspeed(struct ehea_port *port, u32 port_speed) in ehea_set_portspeed() argument
1097 netif_carrier_off(port->netdev); in ehea_set_portspeed()
1099 hret = ehea_h_modify_ehea_port(port->adapter->handle, in ehea_set_portspeed()
1100 port->logical_port_id, in ehea_set_portspeed()
1103 port->autoneg = port_speed == EHEA_SPEED_AUTONEG ? 1 : 0; in ehea_set_portspeed()
1105 hret = ehea_h_query_ehea_port(port->adapter->handle, in ehea_set_portspeed()
1106 port->logical_port_id, in ehea_set_portspeed()
1112 port->port_speed = EHEA_SPEED_10M; in ehea_set_portspeed()
1113 port->full_duplex = 0; in ehea_set_portspeed()
1116 port->port_speed = EHEA_SPEED_10M; in ehea_set_portspeed()
1117 port->full_duplex = 1; in ehea_set_portspeed()
1120 port->port_speed = EHEA_SPEED_100M; in ehea_set_portspeed()
1121 port->full_duplex = 0; in ehea_set_portspeed()
1124 port->port_speed = EHEA_SPEED_100M; in ehea_set_portspeed()
1125 port->full_duplex = 1; in ehea_set_portspeed()
1128 port->port_speed = EHEA_SPEED_1G; in ehea_set_portspeed()
1129 port->full_duplex = 1; in ehea_set_portspeed()
1132 port->port_speed = EHEA_SPEED_10G; in ehea_set_portspeed()
1133 port->full_duplex = 1; in ehea_set_portspeed()
1136 port->port_speed = 0; in ehea_set_portspeed()
1137 port->full_duplex = 0; in ehea_set_portspeed()
1153 if (!prop_carrier_state || (port->phy_link == EHEA_PHY_LINK_UP)) in ehea_set_portspeed()
1154 netif_carrier_on(port->netdev); in ehea_set_portspeed()
1166 struct ehea_port *port; in ehea_parse_eqe() local
1171 port = ehea_get_port(adapter, portnum); in ehea_parse_eqe()
1172 dev = port->netdev; in ehea_parse_eqe()
1177 if (!port) { in ehea_parse_eqe()
1184 ret = ehea_sense_port_attr(port); in ehea_parse_eqe()
1190 netif_info(port, link, dev, in ehea_parse_eqe()
1192 port->port_speed, in ehea_parse_eqe()
1193 port->full_duplex == 1 ? in ehea_parse_eqe()
1201 netif_info(port, link, dev, in ehea_parse_eqe()
1208 port->phy_link = EHEA_PHY_LINK_UP; in ehea_parse_eqe()
1209 netif_info(port, link, dev, in ehea_parse_eqe()
1214 port->phy_link = EHEA_PHY_LINK_DOWN; in ehea_parse_eqe()
1215 netif_info(port, link, dev, in ehea_parse_eqe()
1291 struct ehea_port *port = netdev_priv(dev); in ehea_reg_interrupts() local
1296 snprintf(port->int_aff_name, EHEA_IRQ_NAME_SIZE - 1, "%s-aff", in ehea_reg_interrupts()
1299 ret = ibmebus_request_irq(port->qp_eq->attr.ist1, in ehea_reg_interrupts()
1301 0, port->int_aff_name, port); in ehea_reg_interrupts()
1304 port->qp_eq->attr.ist1); in ehea_reg_interrupts()
1308 netif_info(port, ifup, dev, in ehea_reg_interrupts()
1310 port->qp_eq->attr.ist1); in ehea_reg_interrupts()
1313 for (i = 0; i < port->num_def_qps; i++) { in ehea_reg_interrupts()
1314 pr = &port->port_res[i]; in ehea_reg_interrupts()
1325 netif_info(port, ifup, dev, in ehea_reg_interrupts()
1335 u32 ist = port->port_res[i].eq->attr.ist1; in ehea_reg_interrupts()
1336 ibmebus_free_irq(ist, &port->port_res[i]); in ehea_reg_interrupts()
1340 ibmebus_free_irq(port->qp_eq->attr.ist1, port); in ehea_reg_interrupts()
1341 i = port->num_def_qps; in ehea_reg_interrupts()
1349 struct ehea_port *port = netdev_priv(dev); in ehea_free_interrupts() local
1355 for (i = 0; i < port->num_def_qps; i++) { in ehea_free_interrupts()
1356 pr = &port->port_res[i]; in ehea_free_interrupts()
1358 netif_info(port, intr, dev, in ehea_free_interrupts()
1364 ibmebus_free_irq(port->qp_eq->attr.ist1, port); in ehea_free_interrupts()
1365 netif_info(port, intr, dev, in ehea_free_interrupts()
1367 port->qp_eq->attr.ist1); in ehea_free_interrupts()
1370 static int ehea_configure_port(struct ehea_port *port) in ehea_configure_port() argument
1389 for (i = 0; i < port->num_mcs; i++) in ehea_configure_port()
1392 port->port_res[i].qp->init_attr.qp_nr; in ehea_configure_port()
1395 port->port_res[0].qp->init_attr.qp_nr; in ehea_configure_port()
1397 if (netif_msg_ifup(port)) in ehea_configure_port()
1403 hret = ehea_h_modify_ehea_port(port->adapter->handle, in ehea_configure_port()
1404 port->logical_port_id, in ehea_configure_port()
1421 struct ehea_adapter *adapter = pr->port->adapter; in ehea_gen_smrs()
1464 static int ehea_init_port_res(struct ehea_port *port, struct ehea_port_res *pr, in ehea_init_port_res() argument
1467 struct ehea_adapter *adapter = port->adapter; in ehea_init_port_res()
1485 pr->port = port; in ehea_init_port_res()
1495 port->logical_port_id); in ehea_init_port_res()
1503 port->logical_port_id); in ehea_init_port_res()
1509 if (netif_msg_ifup(port)) in ehea_init_port_res()
1535 init_attr->port_nr = port->logical_port_id; in ehea_init_port_res()
1538 init_attr->aff_eq_handle = port->qp_eq->fw_handle; in ehea_init_port_res()
1547 if (netif_msg_ifup(port)) in ehea_init_port_res()
1574 netif_napi_add(pr->port->netdev, &pr->napi, ehea_poll, 64); in ehea_init_port_res()
1593 static int ehea_clean_portres(struct ehea_port *port, struct ehea_port_res *pr) in ehea_clean_portres() argument
1711 static int ehea_broadcast_reg_helper(struct ehea_port *port, u32 hcallid) in ehea_broadcast_reg_helper() argument
1719 hret = ehea_h_reg_dereg_bcmc(port->adapter->handle, in ehea_broadcast_reg_helper()
1720 port->logical_port_id, in ehea_broadcast_reg_helper()
1721 reg_type, port->mac_addr, 0, hcallid); in ehea_broadcast_reg_helper()
1731 hret = ehea_h_reg_dereg_bcmc(port->adapter->handle, in ehea_broadcast_reg_helper()
1732 port->logical_port_id, in ehea_broadcast_reg_helper()
1733 reg_type, port->mac_addr, 0, hcallid); in ehea_broadcast_reg_helper()
1745 struct ehea_port *port = netdev_priv(dev); in ehea_set_mac_addr() local
1767 hret = ehea_h_modify_ehea_port(port->adapter->handle, in ehea_set_mac_addr()
1768 port->logical_port_id, H_PORT_CB0, in ehea_set_mac_addr()
1778 if (port->state == EHEA_PORT_UP) { in ehea_set_mac_addr()
1779 ret = ehea_broadcast_reg_helper(port, H_DEREG_BCMC); in ehea_set_mac_addr()
1784 port->mac_addr = cb0->port_mac_addr << 16; in ehea_set_mac_addr()
1787 if (port->state == EHEA_PORT_UP) { in ehea_set_mac_addr()
1788 ret = ehea_broadcast_reg_helper(port, H_REG_BCMC); in ehea_set_mac_addr()
1815 struct ehea_port *port = netdev_priv(dev); in ehea_promiscuous() local
1819 if (enable == port->promisc) in ehea_promiscuous()
1829 cb7->def_uc_qpn = enable == 1 ? port->port_res[0].qp->fw_handle : 0; in ehea_promiscuous()
1831 hret = ehea_h_modify_ehea_port(port->adapter->handle, in ehea_promiscuous()
1832 port->logical_port_id, in ehea_promiscuous()
1839 port->promisc = enable; in ehea_promiscuous()
1844 static u64 ehea_multicast_reg_helper(struct ehea_port *port, u64 mc_mac_addr, in ehea_multicast_reg_helper() argument
1854 hret = ehea_h_reg_dereg_bcmc(port->adapter->handle, in ehea_multicast_reg_helper()
1855 port->logical_port_id, in ehea_multicast_reg_helper()
1864 hret = ehea_h_reg_dereg_bcmc(port->adapter->handle, in ehea_multicast_reg_helper()
1865 port->logical_port_id, in ehea_multicast_reg_helper()
1873 struct ehea_port *port = netdev_priv(dev); in ehea_drop_multicast_list() local
1874 struct ehea_mc_list *mc_entry = port->mc_list; in ehea_drop_multicast_list()
1880 list_for_each_safe(pos, temp, &(port->mc_list->list)) { in ehea_drop_multicast_list()
1883 hret = ehea_multicast_reg_helper(port, mc_entry->macaddr, in ehea_drop_multicast_list()
1898 struct ehea_port *port = netdev_priv(dev); in ehea_allmulti() local
1901 if (!port->allmulti) { in ehea_allmulti()
1905 hret = ehea_multicast_reg_helper(port, 0, H_REG_BCMC); in ehea_allmulti()
1907 port->allmulti = 1; in ehea_allmulti()
1915 hret = ehea_multicast_reg_helper(port, 0, H_DEREG_BCMC); in ehea_allmulti()
1917 port->allmulti = 0; in ehea_allmulti()
1925 static void ehea_add_multicast_entry(struct ehea_port *port, u8 *mc_mac_addr) in ehea_add_multicast_entry() argument
1938 hret = ehea_multicast_reg_helper(port, ehea_mcl_entry->macaddr, in ehea_add_multicast_entry()
1941 list_add(&ehea_mcl_entry->list, &port->mc_list->list); in ehea_add_multicast_entry()
1950 struct ehea_port *port = netdev_priv(dev); in ehea_set_multicast_list() local
1971 if (netdev_mc_count(dev) > port->adapter->max_mc_mac) { in ehea_set_multicast_list()
1973 port->adapter->max_mc_mac); in ehea_set_multicast_list()
1978 ehea_add_multicast_entry(port, ha->addr); in ehea_set_multicast_list()
2053 struct ehea_port *port = netdev_priv(dev); in ehea_start_xmit() local
2060 pr = &port->port_res[skb_get_queue_mapping(skb)]; in ehea_start_xmit()
2076 u32 sig_iv = port->sig_comp_iv; in ehea_start_xmit()
2105 netif_info(port, tx_queued, dev, in ehea_start_xmit()
2107 if (netif_msg_tx_queued(port)) in ehea_start_xmit()
2127 struct ehea_port *port = netdev_priv(dev); in ehea_vlan_rx_add_vid() local
2128 struct ehea_adapter *adapter = port->adapter; in ehea_vlan_rx_add_vid()
2141 hret = ehea_h_query_ehea_port(adapter->handle, port->logical_port_id, in ehea_vlan_rx_add_vid()
2152 hret = ehea_h_modify_ehea_port(adapter->handle, port->logical_port_id, in ehea_vlan_rx_add_vid()
2165 struct ehea_port *port = netdev_priv(dev); in ehea_vlan_rx_kill_vid() local
2166 struct ehea_adapter *adapter = port->adapter; in ehea_vlan_rx_kill_vid()
2179 hret = ehea_h_query_ehea_port(adapter->handle, port->logical_port_id, in ehea_vlan_rx_kill_vid()
2190 hret = ehea_h_modify_ehea_port(adapter->handle, port->logical_port_id, in ehea_vlan_rx_kill_vid()
2276 static int ehea_port_res_setup(struct ehea_port *port, int def_qps) in ehea_port_res_setup() argument
2282 port->qp_eq = ehea_create_eq(port->adapter, eq_type, in ehea_port_res_setup()
2284 if (!port->qp_eq) { in ehea_port_res_setup()
2305 ret = ehea_init_port_res(port, &port->port_res[i], &pr_cfg, i); in ehea_port_res_setup()
2310 ret = ehea_init_port_res(port, &port->port_res[i], in ehea_port_res_setup()
2320 ehea_clean_portres(port, &port->port_res[i]); in ehea_port_res_setup()
2323 ehea_destroy_eq(port->qp_eq); in ehea_port_res_setup()
2327 static int ehea_clean_all_portres(struct ehea_port *port) in ehea_clean_all_portres() argument
2332 for (i = 0; i < port->num_def_qps; i++) in ehea_clean_all_portres()
2333 ret |= ehea_clean_portres(port, &port->port_res[i]); in ehea_clean_all_portres()
2335 ret |= ehea_destroy_eq(port->qp_eq); in ehea_clean_all_portres()
2359 struct ehea_port *port = netdev_priv(dev); in ehea_up() local
2361 if (port->state == EHEA_PORT_UP) in ehea_up()
2364 ret = ehea_port_res_setup(port, port->num_def_qps); in ehea_up()
2371 ret = ehea_configure_port(port); in ehea_up()
2383 for (i = 0; i < port->num_def_qps; i++) { in ehea_up()
2384 ret = ehea_activate_qp(port->adapter, port->port_res[i].qp); in ehea_up()
2391 for (i = 0; i < port->num_def_qps; i++) { in ehea_up()
2392 ret = ehea_fill_port_res(&port->port_res[i]); in ehea_up()
2399 ret = ehea_broadcast_reg_helper(port, H_REG_BCMC); in ehea_up()
2405 port->state = EHEA_PORT_UP; in ehea_up()
2414 ehea_clean_all_portres(port); in ehea_up()
2425 static void port_napi_disable(struct ehea_port *port) in port_napi_disable() argument
2429 for (i = 0; i < port->num_def_qps; i++) in port_napi_disable()
2430 napi_disable(&port->port_res[i].napi); in port_napi_disable()
2433 static void port_napi_enable(struct ehea_port *port) in port_napi_enable() argument
2437 for (i = 0; i < port->num_def_qps; i++) in port_napi_enable()
2438 napi_enable(&port->port_res[i].napi); in port_napi_enable()
2444 struct ehea_port *port = netdev_priv(dev); in ehea_open() local
2446 mutex_lock(&port->port_lock); in ehea_open()
2448 netif_info(port, ifup, dev, "enabling port\n"); in ehea_open()
2452 port_napi_enable(port); in ehea_open()
2456 mutex_unlock(&port->port_lock); in ehea_open()
2457 schedule_delayed_work(&port->stats_work, in ehea_open()
2466 struct ehea_port *port = netdev_priv(dev); in ehea_down() local
2468 if (port->state == EHEA_PORT_DOWN) in ehea_down()
2473 ehea_broadcast_reg_helper(port, H_DEREG_BCMC); in ehea_down()
2477 port->state = EHEA_PORT_DOWN; in ehea_down()
2481 ret = ehea_clean_all_portres(port); in ehea_down()
2493 struct ehea_port *port = netdev_priv(dev); in ehea_stop() local
2495 netif_info(port, ifdown, dev, "disabling port\n"); in ehea_stop()
2497 set_bit(__EHEA_DISABLE_PORT_RESET, &port->flags); in ehea_stop()
2498 cancel_work_sync(&port->reset_task); in ehea_stop()
2499 cancel_delayed_work_sync(&port->stats_work); in ehea_stop()
2500 mutex_lock(&port->port_lock); in ehea_stop()
2502 port_napi_disable(port); in ehea_stop()
2504 mutex_unlock(&port->port_lock); in ehea_stop()
2505 clear_bit(__EHEA_DISABLE_PORT_RESET, &port->flags); in ehea_stop()
2523 static void ehea_flush_sq(struct ehea_port *port) in ehea_flush_sq() argument
2527 for (i = 0; i < port->num_def_qps; i++) { in ehea_flush_sq()
2528 struct ehea_port_res *pr = &port->port_res[i]; in ehea_flush_sq()
2532 ret = wait_event_timeout(port->swqe_avail_wq, in ehea_flush_sq()
2545 struct ehea_port *port = netdev_priv(dev); in ehea_stop_qps() local
2546 struct ehea_adapter *adapter = port->adapter; in ehea_stop_qps()
2561 for (i = 0; i < (port->num_def_qps); i++) { in ehea_stop_qps()
2562 struct ehea_port_res *pr = &port->port_res[i]; in ehea_stop_qps()
2647 struct ehea_port *port = netdev_priv(dev); in ehea_restart_qps() local
2648 struct ehea_adapter *adapter = port->adapter; in ehea_restart_qps()
2663 for (i = 0; i < (port->num_def_qps); i++) { in ehea_restart_qps()
2664 struct ehea_port_res *pr = &port->port_res[i]; in ehea_restart_qps()
2718 struct ehea_port *port = in ehea_reset_port() local
2720 struct net_device *dev = port->netdev; in ehea_reset_port()
2723 port->resets++; in ehea_reset_port()
2724 mutex_lock(&port->port_lock); in ehea_reset_port()
2727 port_napi_disable(port); in ehea_reset_port()
2737 netif_info(port, timer, dev, "reset successful\n"); in ehea_reset_port()
2739 port_napi_enable(port); in ehea_reset_port()
2743 mutex_unlock(&port->port_lock); in ehea_reset_port()
2758 struct ehea_port *port = adapter->port[i]; in ehea_rereg_mrs() local
2761 if (!port) in ehea_rereg_mrs()
2764 dev = port->netdev; in ehea_rereg_mrs()
2767 mutex_lock(&port->port_lock); in ehea_rereg_mrs()
2769 ehea_flush_sq(port); in ehea_rereg_mrs()
2772 mutex_unlock(&port->port_lock); in ehea_rereg_mrs()
2775 port_napi_disable(port); in ehea_rereg_mrs()
2776 mutex_unlock(&port->port_lock); in ehea_rereg_mrs()
2778 reset_sq_restart_flag(port); in ehea_rereg_mrs()
2802 struct ehea_port *port = adapter->port[i]; in ehea_rereg_mrs() local
2804 if (port) { in ehea_rereg_mrs()
2805 struct net_device *dev = port->netdev; in ehea_rereg_mrs()
2808 mutex_lock(&port->port_lock); in ehea_rereg_mrs()
2811 check_sqs(port); in ehea_rereg_mrs()
2812 port_napi_enable(port); in ehea_rereg_mrs()
2817 mutex_unlock(&port->port_lock); in ehea_rereg_mrs()
2829 struct ehea_port *port = netdev_priv(dev); in ehea_tx_watchdog() local
2833 ehea_schedule_port_reset(port); in ehea_tx_watchdog()
2864 static int ehea_get_jumboframe_status(struct ehea_port *port, int *jumbo) in ehea_get_jumboframe_status() argument
2879 hret = ehea_h_query_ehea_port(port->adapter->handle, in ehea_get_jumboframe_status()
2880 port->logical_port_id, in ehea_get_jumboframe_status()
2888 hret = ehea_h_modify_ehea_port(port->adapter-> in ehea_get_jumboframe_status()
2890 port-> in ehea_get_jumboframe_status()
2910 struct ehea_port *port = container_of(dev, struct ehea_port, ofdev.dev); in ehea_show_port_id() local
2911 return sprintf(buf, "%d", port->logical_port_id); in ehea_show_port_id()
2919 struct ehea_port *port = container_of(dev, struct ehea_port, ofdev.dev); in logical_port_release() local
2920 of_node_put(port->ofdev.dev.of_node); in logical_port_release()
2923 static struct device *ehea_register_port(struct ehea_port *port, in ehea_register_port() argument
2928 port->ofdev.dev.of_node = of_node_get(dn); in ehea_register_port()
2929 port->ofdev.dev.parent = &port->adapter->ofdev->dev; in ehea_register_port()
2930 port->ofdev.dev.bus = &ibmebus_bus_type; in ehea_register_port()
2932 dev_set_name(&port->ofdev.dev, "port%d", port_name_cnt++); in ehea_register_port()
2933 port->ofdev.dev.release = logical_port_release; in ehea_register_port()
2935 ret = of_device_register(&port->ofdev); in ehea_register_port()
2941 ret = device_create_file(&port->ofdev.dev, &dev_attr_log_port_id); in ehea_register_port()
2947 return &port->ofdev.dev; in ehea_register_port()
2950 of_device_unregister(&port->ofdev); in ehea_register_port()
2955 static void ehea_unregister_port(struct ehea_port *port) in ehea_unregister_port() argument
2957 device_remove_file(&port->ofdev.dev, &dev_attr_log_port_id); in ehea_unregister_port()
2958 of_device_unregister(&port->ofdev); in ehea_unregister_port()
2984 struct ehea_port *port; in ehea_setup_single_port() local
2996 port = netdev_priv(dev); in ehea_setup_single_port()
2998 mutex_init(&port->port_lock); in ehea_setup_single_port()
2999 port->state = EHEA_PORT_DOWN; in ehea_setup_single_port()
3000 port->sig_comp_iv = sq_entries / 10; in ehea_setup_single_port()
3002 port->adapter = adapter; in ehea_setup_single_port()
3003 port->netdev = dev; in ehea_setup_single_port()
3004 port->logical_port_id = logical_port_id; in ehea_setup_single_port()
3006 port->msg_enable = netif_msg_init(msg_level, EHEA_MSG_DEFAULT); in ehea_setup_single_port()
3008 port->mc_list = kzalloc(sizeof(struct ehea_mc_list), GFP_KERNEL); in ehea_setup_single_port()
3009 if (!port->mc_list) { in ehea_setup_single_port()
3014 INIT_LIST_HEAD(&port->mc_list->list); in ehea_setup_single_port()
3016 ret = ehea_sense_port_attr(port); in ehea_setup_single_port()
3020 netif_set_real_num_rx_queues(dev, port->num_def_qps); in ehea_setup_single_port()
3021 netif_set_real_num_tx_queues(dev, port->num_def_qps); in ehea_setup_single_port()
3023 port_dev = ehea_register_port(port, dn); in ehea_setup_single_port()
3030 memcpy(dev->dev_addr, &port->mac_addr, ETH_ALEN); in ehea_setup_single_port()
3045 INIT_WORK(&port->reset_task, ehea_reset_port); in ehea_setup_single_port()
3046 INIT_DELAYED_WORK(&port->stats_work, ehea_update_stats); in ehea_setup_single_port()
3048 init_waitqueue_head(&port->swqe_avail_wq); in ehea_setup_single_port()
3049 init_waitqueue_head(&port->restart_wq); in ehea_setup_single_port()
3051 memset(&port->stats, 0, sizeof(struct net_device_stats)); in ehea_setup_single_port()
3058 ret = ehea_get_jumboframe_status(port, &jumbo); in ehea_setup_single_port()
3067 return port; in ehea_setup_single_port()
3070 ehea_unregister_port(port); in ehea_setup_single_port()
3073 kfree(port->mc_list); in ehea_setup_single_port()
3084 static void ehea_shutdown_single_port(struct ehea_port *port) in ehea_shutdown_single_port() argument
3086 struct ehea_adapter *adapter = port->adapter; in ehea_shutdown_single_port()
3088 cancel_work_sync(&port->reset_task); in ehea_shutdown_single_port()
3089 cancel_delayed_work_sync(&port->stats_work); in ehea_shutdown_single_port()
3090 unregister_netdev(port->netdev); in ehea_shutdown_single_port()
3091 ehea_unregister_port(port); in ehea_shutdown_single_port()
3092 kfree(port->mc_list); in ehea_shutdown_single_port()
3093 free_netdev(port->netdev); in ehea_shutdown_single_port()
3122 adapter->port[i] = ehea_setup_single_port(adapter, in ehea_setup_ports()
3125 if (adapter->port[i]) in ehea_setup_ports()
3126 netdev_info(adapter->port[i]->netdev, in ehea_setup_ports()
3161 struct ehea_port *port; in ehea_probe_port() local
3169 port = ehea_get_port(adapter, logical_port_id); in ehea_probe_port()
3171 if (port) { in ehea_probe_port()
3172 netdev_info(port->netdev, "adding port with logical port id=%d failed: port already configured\n", in ehea_probe_port()
3189 port = ehea_setup_single_port(adapter, logical_port_id, eth_dn); in ehea_probe_port()
3193 if (port) { in ehea_probe_port()
3195 if (!adapter->port[i]) { in ehea_probe_port()
3196 adapter->port[i] = port; in ehea_probe_port()
3200 netdev_info(port->netdev, "added: (logical port id=%d)\n", in ehea_probe_port()
3215 struct ehea_port *port; in ehea_remove_port() local
3221 port = ehea_get_port(adapter, logical_port_id); in ehea_remove_port()
3223 if (port) { in ehea_remove_port()
3224 netdev_info(port->netdev, "removed: (logical port id=%d)\n", in ehea_remove_port()
3227 ehea_shutdown_single_port(port); in ehea_remove_port()
3230 if (adapter->port[i] == port) { in ehea_remove_port()
3231 adapter->port[i] = NULL; in ehea_remove_port()
3489 if (adapter->port[i]) { in ehea_probe_adapter()
3490 ehea_shutdown_single_port(adapter->port[i]); in ehea_probe_adapter()
3491 adapter->port[i] = NULL; in ehea_probe_adapter()
3515 if (adapter->port[i]) { in ehea_remove()
3516 ehea_shutdown_single_port(adapter->port[i]); in ehea_remove()
3517 adapter->port[i] = NULL; in ehea_remove()