• Home
  • Raw
  • Download

Lines Matching refs:card

36 static void qeth_bridgeport_query_support(struct qeth_card *card);
37 static void qeth_bridge_state_change(struct qeth_card *card,
39 static void qeth_bridge_host_event(struct qeth_card *card,
44 struct qeth_card *card = dev->ml_priv; in qeth_l2_do_ioctl() local
48 if (!card) in qeth_l2_do_ioctl()
51 if ((card->state != CARD_STATE_UP) && in qeth_l2_do_ioctl()
52 (card->state != CARD_STATE_SOFTSETUP)) in qeth_l2_do_ioctl()
55 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_do_ioctl()
60 rc = qeth_snmp_command(card, rq->ifr_ifru.ifru_data); in qeth_l2_do_ioctl()
63 if ((card->info.type == QETH_CARD_TYPE_OSD || in qeth_l2_do_ioctl()
64 card->info.type == QETH_CARD_TYPE_OSM || in qeth_l2_do_ioctl()
65 card->info.type == QETH_CARD_TYPE_OSX) && in qeth_l2_do_ioctl()
66 !card->info.guestlan) in qeth_l2_do_ioctl()
83 rc = qeth_query_oat_command(card, rq->ifr_ifru.ifru_data); in qeth_l2_do_ioctl()
89 QETH_CARD_TEXT_(card, 2, "ioce%d", rc); in qeth_l2_do_ioctl()
95 struct qeth_card *card; in qeth_l2_verify_dev() local
100 list_for_each_entry(card, &qeth_core_card_list.list, list) { in qeth_l2_verify_dev()
101 if (card->dev == dev) { in qeth_l2_verify_dev()
113 struct qeth_card *card; in qeth_l2_netdev_by_devno() local
122 list_for_each_entry(card, &qeth_core_card_list.list, list) { in qeth_l2_netdev_by_devno()
123 ccw_device_get_id(CARD_RDEV(card), &read_devid); in qeth_l2_netdev_by_devno()
125 ndev = card->dev; in qeth_l2_netdev_by_devno()
133 static int qeth_l2_send_setgroupmac_cb(struct qeth_card *card, in qeth_l2_send_setgroupmac_cb() argument
140 QETH_CARD_TEXT(card, 2, "L2Sgmacb"); in qeth_l2_send_setgroupmac_cb()
146 mac, QETH_CARD_IFNAME(card)); in qeth_l2_send_setgroupmac_cb()
151 mac, QETH_CARD_IFNAME(card), cmd->hdr.return_code); in qeth_l2_send_setgroupmac_cb()
155 static int qeth_l2_send_setgroupmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_setgroupmac() argument
157 QETH_CARD_TEXT(card, 2, "L2Sgmac"); in qeth_l2_send_setgroupmac()
158 return qeth_l2_send_setdelmac(card, mac, IPA_CMD_SETGMAC, in qeth_l2_send_setgroupmac()
162 static int qeth_l2_send_delgroupmac_cb(struct qeth_card *card, in qeth_l2_send_delgroupmac_cb() argument
169 QETH_CARD_TEXT(card, 2, "L2Dgmacb"); in qeth_l2_send_delgroupmac_cb()
174 mac, QETH_CARD_IFNAME(card), cmd->hdr.return_code); in qeth_l2_send_delgroupmac_cb()
178 static int qeth_l2_send_delgroupmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_delgroupmac() argument
180 QETH_CARD_TEXT(card, 2, "L2Dgmac"); in qeth_l2_send_delgroupmac()
181 return qeth_l2_send_setdelmac(card, mac, IPA_CMD_DELGMAC, in qeth_l2_send_delgroupmac()
185 static void qeth_l2_add_mc(struct qeth_card *card, __u8 *mac, int vmac) in qeth_l2_add_mc() argument
200 rc = qeth_l2_send_setdelmac(card, mac, IPA_CMD_SETVMAC, in qeth_l2_add_mc()
203 rc = qeth_l2_send_setgroupmac(card, mac); in qeth_l2_add_mc()
207 list_add_tail(&mc->list, &card->mc_list); in qeth_l2_add_mc()
212 static void qeth_l2_del_all_mc(struct qeth_card *card, int del) in qeth_l2_del_all_mc() argument
216 spin_lock_bh(&card->mclock); in qeth_l2_del_all_mc()
217 list_for_each_entry_safe(mc, tmp, &card->mc_list, list) { in qeth_l2_del_all_mc()
220 qeth_l2_send_setdelmac(card, mc->mc_addr, in qeth_l2_del_all_mc()
223 qeth_l2_send_delgroupmac(card, mc->mc_addr); in qeth_l2_del_all_mc()
228 spin_unlock_bh(&card->mclock); in qeth_l2_del_all_mc()
231 static inline int qeth_l2_get_cast_type(struct qeth_card *card, in qeth_l2_get_cast_type() argument
234 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_get_cast_type()
243 static void qeth_l2_fill_header(struct qeth_card *card, struct qeth_hdr *hdr, in qeth_l2_fill_header() argument
269 static int qeth_l2_send_setdelvlan_cb(struct qeth_card *card, in qeth_l2_send_setdelvlan_cb() argument
274 QETH_CARD_TEXT(card, 2, "L2sdvcb"); in qeth_l2_send_setdelvlan_cb()
279 QETH_CARD_IFNAME(card), cmd->hdr.return_code); in qeth_l2_send_setdelvlan_cb()
280 QETH_CARD_TEXT_(card, 2, "L2VL%4x", cmd->hdr.command); in qeth_l2_send_setdelvlan_cb()
281 QETH_CARD_TEXT_(card, 2, "err%d", cmd->hdr.return_code); in qeth_l2_send_setdelvlan_cb()
286 static int qeth_l2_send_setdelvlan(struct qeth_card *card, __u16 i, in qeth_l2_send_setdelvlan() argument
292 QETH_CARD_TEXT_(card, 4, "L2sdv%x", ipacmd); in qeth_l2_send_setdelvlan()
293 iob = qeth_get_ipacmd_buffer(card, ipacmd, QETH_PROT_IPV4); in qeth_l2_send_setdelvlan()
296 return qeth_send_ipa_cmd(card, iob, in qeth_l2_send_setdelvlan()
300 static void qeth_l2_process_vlans(struct qeth_card *card) in qeth_l2_process_vlans() argument
303 QETH_CARD_TEXT(card, 3, "L2prcvln"); in qeth_l2_process_vlans()
304 spin_lock_bh(&card->vlanlock); in qeth_l2_process_vlans()
305 list_for_each_entry(id, &card->vid_list, list) { in qeth_l2_process_vlans()
306 qeth_l2_send_setdelvlan(card, id->vid, IPA_CMD_SETVLAN); in qeth_l2_process_vlans()
308 spin_unlock_bh(&card->vlanlock); in qeth_l2_process_vlans()
314 struct qeth_card *card = dev->ml_priv; in qeth_l2_vlan_rx_add_vid() local
317 QETH_CARD_TEXT_(card, 4, "aid:%d", vid); in qeth_l2_vlan_rx_add_vid()
320 if (card->info.type == QETH_CARD_TYPE_OSM) { in qeth_l2_vlan_rx_add_vid()
321 QETH_CARD_TEXT(card, 3, "aidOSM"); in qeth_l2_vlan_rx_add_vid()
324 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_vlan_rx_add_vid()
325 QETH_CARD_TEXT(card, 3, "aidREC"); in qeth_l2_vlan_rx_add_vid()
331 qeth_l2_send_setdelvlan(card, vid, IPA_CMD_SETVLAN); in qeth_l2_vlan_rx_add_vid()
332 spin_lock_bh(&card->vlanlock); in qeth_l2_vlan_rx_add_vid()
333 list_add_tail(&id->list, &card->vid_list); in qeth_l2_vlan_rx_add_vid()
334 spin_unlock_bh(&card->vlanlock); in qeth_l2_vlan_rx_add_vid()
345 struct qeth_card *card = dev->ml_priv; in qeth_l2_vlan_rx_kill_vid() local
347 QETH_CARD_TEXT_(card, 4, "kid:%d", vid); in qeth_l2_vlan_rx_kill_vid()
348 if (card->info.type == QETH_CARD_TYPE_OSM) { in qeth_l2_vlan_rx_kill_vid()
349 QETH_CARD_TEXT(card, 3, "kidOSM"); in qeth_l2_vlan_rx_kill_vid()
352 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_vlan_rx_kill_vid()
353 QETH_CARD_TEXT(card, 3, "kidREC"); in qeth_l2_vlan_rx_kill_vid()
356 spin_lock_bh(&card->vlanlock); in qeth_l2_vlan_rx_kill_vid()
357 list_for_each_entry(id, &card->vid_list, list) { in qeth_l2_vlan_rx_kill_vid()
364 spin_unlock_bh(&card->vlanlock); in qeth_l2_vlan_rx_kill_vid()
366 qeth_l2_send_setdelvlan(card, vid, IPA_CMD_DELVLAN); in qeth_l2_vlan_rx_kill_vid()
369 qeth_l2_set_multicast_list(card->dev); in qeth_l2_vlan_rx_kill_vid()
373 static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode) in qeth_l2_stop_card() argument
378 QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); in qeth_l2_stop_card()
380 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_stop_card()
381 if (card->read.state == CH_STATE_UP && in qeth_l2_stop_card()
382 card->write.state == CH_STATE_UP && in qeth_l2_stop_card()
383 (card->state == CARD_STATE_UP)) { in qeth_l2_stop_card()
385 card->info.type != QETH_CARD_TYPE_OSN) { in qeth_l2_stop_card()
386 qeth_l2_stop(card->dev); in qeth_l2_stop_card()
389 dev_close(card->dev); in qeth_l2_stop_card()
392 card->info.mac_bits &= ~QETH_LAYER2_MAC_REGISTERED; in qeth_l2_stop_card()
393 card->state = CARD_STATE_SOFTSETUP; in qeth_l2_stop_card()
395 if (card->state == CARD_STATE_SOFTSETUP) { in qeth_l2_stop_card()
396 qeth_l2_del_all_mc(card, 0); in qeth_l2_stop_card()
397 qeth_clear_ipacmd_list(card); in qeth_l2_stop_card()
398 card->state = CARD_STATE_HARDSETUP; in qeth_l2_stop_card()
400 if (card->state == CARD_STATE_HARDSETUP) { in qeth_l2_stop_card()
401 qeth_qdio_clear_card(card, 0); in qeth_l2_stop_card()
402 qeth_clear_qdio_buffers(card); in qeth_l2_stop_card()
403 qeth_clear_working_pool_list(card); in qeth_l2_stop_card()
404 card->state = CARD_STATE_DOWN; in qeth_l2_stop_card()
406 if (card->state == CARD_STATE_DOWN) { in qeth_l2_stop_card()
407 qeth_clear_cmd_buffers(&card->read); in qeth_l2_stop_card()
408 qeth_clear_cmd_buffers(&card->write); in qeth_l2_stop_card()
413 static int qeth_l2_process_inbound_buffer(struct qeth_card *card, in qeth_l2_process_inbound_buffer() argument
424 skb = qeth_core_get_next_skb(card, in qeth_l2_process_inbound_buffer()
425 &card->qdio.in_q->bufs[card->rx.b_index], in qeth_l2_process_inbound_buffer()
426 &card->rx.b_element, &card->rx.e_offset, &hdr); in qeth_l2_process_inbound_buffer()
431 skb->dev = card->dev; in qeth_l2_process_inbound_buffer()
438 *((__u32 *)skb->cb) = ++card->seqno.pkt_seqno; in qeth_l2_process_inbound_buffer()
443 if (card->info.type == QETH_CARD_TYPE_OSN) { in qeth_l2_process_inbound_buffer()
448 card->osn_info.data_cb(skb); in qeth_l2_process_inbound_buffer()
454 QETH_CARD_TEXT(card, 3, "inbunkno"); in qeth_l2_process_inbound_buffer()
460 card->stats.rx_packets++; in qeth_l2_process_inbound_buffer()
461 card->stats.rx_bytes += len; in qeth_l2_process_inbound_buffer()
468 struct qeth_card *card = container_of(napi, struct qeth_card, napi); in qeth_l2_poll() local
474 if (card->options.performance_stats) { in qeth_l2_poll()
475 card->perf_stats.inbound_cnt++; in qeth_l2_poll()
476 card->perf_stats.inbound_start_time = qeth_get_micros(); in qeth_l2_poll()
480 if (!card->rx.b_count) { in qeth_l2_poll()
481 card->rx.qdio_err = 0; in qeth_l2_poll()
482 card->rx.b_count = qdio_get_next_buffers( in qeth_l2_poll()
483 card->data.ccwdev, 0, &card->rx.b_index, in qeth_l2_poll()
484 &card->rx.qdio_err); in qeth_l2_poll()
485 if (card->rx.b_count <= 0) { in qeth_l2_poll()
486 card->rx.b_count = 0; in qeth_l2_poll()
489 card->rx.b_element = in qeth_l2_poll()
490 &card->qdio.in_q->bufs[card->rx.b_index] in qeth_l2_poll()
492 card->rx.e_offset = 0; in qeth_l2_poll()
495 while (card->rx.b_count) { in qeth_l2_poll()
496 buffer = &card->qdio.in_q->bufs[card->rx.b_index]; in qeth_l2_poll()
497 if (!(card->rx.qdio_err && in qeth_l2_poll()
498 qeth_check_qdio_errors(card, buffer->buffer, in qeth_l2_poll()
499 card->rx.qdio_err, "qinerr"))) in qeth_l2_poll()
501 card, new_budget, &done); in qeth_l2_poll()
506 if (card->options.performance_stats) in qeth_l2_poll()
507 card->perf_stats.bufs_rec++; in qeth_l2_poll()
508 qeth_put_buffer_pool_entry(card, in qeth_l2_poll()
510 qeth_queue_input_buffer(card, card->rx.b_index); in qeth_l2_poll()
511 card->rx.b_count--; in qeth_l2_poll()
512 if (card->rx.b_count) { in qeth_l2_poll()
513 card->rx.b_index = in qeth_l2_poll()
514 (card->rx.b_index + 1) % in qeth_l2_poll()
516 card->rx.b_element = in qeth_l2_poll()
517 &card->qdio.in_q in qeth_l2_poll()
518 ->bufs[card->rx.b_index] in qeth_l2_poll()
520 card->rx.e_offset = 0; in qeth_l2_poll()
532 if (qdio_start_irq(card->data.ccwdev, 0)) in qeth_l2_poll()
533 napi_schedule(&card->napi); in qeth_l2_poll()
535 if (card->options.performance_stats) in qeth_l2_poll()
536 card->perf_stats.inbound_time += qeth_get_micros() - in qeth_l2_poll()
537 card->perf_stats.inbound_start_time; in qeth_l2_poll()
541 static int qeth_l2_send_setdelmac(struct qeth_card *card, __u8 *mac, in qeth_l2_send_setdelmac() argument
550 QETH_CARD_TEXT(card, 2, "L2sdmac"); in qeth_l2_send_setdelmac()
551 iob = qeth_get_ipacmd_buffer(card, ipacmd, QETH_PROT_IPV4); in qeth_l2_send_setdelmac()
555 return qeth_send_ipa_cmd(card, iob, reply_cb, NULL); in qeth_l2_send_setdelmac()
558 static int qeth_l2_send_setmac_cb(struct qeth_card *card, in qeth_l2_send_setmac_cb() argument
564 QETH_CARD_TEXT(card, 2, "L2Smaccb"); in qeth_l2_send_setmac_cb()
567 QETH_CARD_TEXT_(card, 2, "L2er%x", cmd->hdr.return_code); in qeth_l2_send_setmac_cb()
568 card->info.mac_bits &= ~QETH_LAYER2_MAC_REGISTERED; in qeth_l2_send_setmac_cb()
572 dev_warn(&card->gdev->dev, in qeth_l2_send_setmac_cb()
578 dev_warn(&card->gdev->dev, in qeth_l2_send_setmac_cb()
586 card->info.mac_bits |= QETH_LAYER2_MAC_REGISTERED; in qeth_l2_send_setmac_cb()
587 memcpy(card->dev->dev_addr, cmd->data.setdelmac.mac, in qeth_l2_send_setmac_cb()
589 dev_info(&card->gdev->dev, in qeth_l2_send_setmac_cb()
591 card->dev->dev_addr, card->dev->name); in qeth_l2_send_setmac_cb()
596 static int qeth_l2_send_setmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_setmac() argument
598 QETH_CARD_TEXT(card, 2, "L2Setmac"); in qeth_l2_send_setmac()
599 return qeth_l2_send_setdelmac(card, mac, IPA_CMD_SETVMAC, in qeth_l2_send_setmac()
603 static int qeth_l2_send_delmac_cb(struct qeth_card *card, in qeth_l2_send_delmac_cb() argument
609 QETH_CARD_TEXT(card, 2, "L2Dmaccb"); in qeth_l2_send_delmac_cb()
612 QETH_CARD_TEXT_(card, 2, "err%d", cmd->hdr.return_code); in qeth_l2_send_delmac_cb()
615 card->info.mac_bits &= ~QETH_LAYER2_MAC_REGISTERED; in qeth_l2_send_delmac_cb()
620 static int qeth_l2_send_delmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_delmac() argument
622 QETH_CARD_TEXT(card, 2, "L2Delmac"); in qeth_l2_send_delmac()
623 if (!(card->info.mac_bits & QETH_LAYER2_MAC_REGISTERED)) in qeth_l2_send_delmac()
625 return qeth_l2_send_setdelmac(card, mac, IPA_CMD_DELVMAC, in qeth_l2_send_delmac()
629 static int qeth_l2_request_initial_mac(struct qeth_card *card) in qeth_l2_request_initial_mac() argument
635 QETH_DBF_TEXT_(SETUP, 2, "doL2%s", CARD_BUS_ID(card)); in qeth_l2_request_initial_mac()
637 if (qeth_is_supported(card, IPA_SETADAPTERPARMS)) { in qeth_l2_request_initial_mac()
638 rc = qeth_query_setadapterparms(card); in qeth_l2_request_initial_mac()
642 CARD_BUS_ID(card), rc); in qeth_l2_request_initial_mac()
646 if (card->info.type == QETH_CARD_TYPE_IQD || in qeth_l2_request_initial_mac()
647 card->info.type == QETH_CARD_TYPE_OSM || in qeth_l2_request_initial_mac()
648 card->info.type == QETH_CARD_TYPE_OSX || in qeth_l2_request_initial_mac()
649 card->info.guestlan) { in qeth_l2_request_initial_mac()
650 rc = qeth_setadpparms_change_macaddr(card); in qeth_l2_request_initial_mac()
653 "device %s: x%x\n", CARD_BUS_ID(card), rc); in qeth_l2_request_initial_mac()
657 QETH_DBF_HEX(SETUP, 2, card->dev->dev_addr, OSA_ADDR_LEN); in qeth_l2_request_initial_mac()
659 eth_random_addr(card->dev->dev_addr); in qeth_l2_request_initial_mac()
660 memcpy(card->dev->dev_addr, vendor_pre, 3); in qeth_l2_request_initial_mac()
668 struct qeth_card *card = dev->ml_priv; in qeth_l2_set_mac_address() local
671 QETH_CARD_TEXT(card, 3, "setmac"); in qeth_l2_set_mac_address()
674 QETH_CARD_TEXT(card, 3, "setmcINV"); in qeth_l2_set_mac_address()
678 if (card->info.type == QETH_CARD_TYPE_OSN || in qeth_l2_set_mac_address()
679 card->info.type == QETH_CARD_TYPE_OSM || in qeth_l2_set_mac_address()
680 card->info.type == QETH_CARD_TYPE_OSX) { in qeth_l2_set_mac_address()
681 QETH_CARD_TEXT(card, 3, "setmcTYP"); in qeth_l2_set_mac_address()
684 QETH_CARD_HEX(card, 3, addr->sa_data, OSA_ADDR_LEN); in qeth_l2_set_mac_address()
685 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_set_mac_address()
686 QETH_CARD_TEXT(card, 3, "setmcREC"); in qeth_l2_set_mac_address()
689 rc = qeth_l2_send_delmac(card, &card->dev->dev_addr[0]); in qeth_l2_set_mac_address()
691 rc = qeth_l2_send_setmac(card, addr->sa_data); in qeth_l2_set_mac_address()
697 struct qeth_card *card = dev->ml_priv; in qeth_l2_set_multicast_list() local
700 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_set_multicast_list()
703 QETH_CARD_TEXT(card, 3, "setmulti"); in qeth_l2_set_multicast_list()
704 if (qeth_threads_running(card, QETH_RECOVER_THREAD) && in qeth_l2_set_multicast_list()
705 (card->state != CARD_STATE_UP)) in qeth_l2_set_multicast_list()
707 qeth_l2_del_all_mc(card, 1); in qeth_l2_set_multicast_list()
708 spin_lock_bh(&card->mclock); in qeth_l2_set_multicast_list()
710 qeth_l2_add_mc(card, ha->addr, 0); in qeth_l2_set_multicast_list()
713 qeth_l2_add_mc(card, ha->addr, 1); in qeth_l2_set_multicast_list()
715 spin_unlock_bh(&card->mclock); in qeth_l2_set_multicast_list()
716 if (!qeth_adp_supported(card, IPA_SETADP_SET_PROMISC_MODE)) in qeth_l2_set_multicast_list()
718 qeth_setadp_promisc_mode(card); in qeth_l2_set_multicast_list()
726 struct qeth_card *card = dev->ml_priv; in qeth_l2_hard_start_xmit() local
728 int cast_type = qeth_l2_get_cast_type(card, skb); in qeth_l2_hard_start_xmit()
735 if (card->qdio.do_prio_queueing || (cast_type && in qeth_l2_hard_start_xmit()
736 card->info.is_multicast_different)) in qeth_l2_hard_start_xmit()
737 queue = card->qdio.out_qs[qeth_get_priority_queue(card, skb, in qeth_l2_hard_start_xmit()
740 queue = card->qdio.out_qs[card->qdio.default_out_queue]; in qeth_l2_hard_start_xmit()
742 if ((card->state != CARD_STATE_UP) || !card->lan_online) { in qeth_l2_hard_start_xmit()
743 card->stats.tx_carrier_errors++; in qeth_l2_hard_start_xmit()
747 if ((card->info.type == QETH_CARD_TYPE_OSN) && in qeth_l2_hard_start_xmit()
751 if (card->options.performance_stats) { in qeth_l2_hard_start_xmit()
752 card->perf_stats.outbound_cnt++; in qeth_l2_hard_start_xmit()
753 card->perf_stats.outbound_start_time = qeth_get_micros(); in qeth_l2_hard_start_xmit()
757 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_hard_start_xmit()
760 if (card->info.type == QETH_CARD_TYPE_IQD) { in qeth_l2_hard_start_xmit()
770 qeth_l2_fill_header(card, hdr, new_skb, cast_type); in qeth_l2_hard_start_xmit()
783 qeth_l2_fill_header(card, hdr, new_skb, cast_type); in qeth_l2_hard_start_xmit()
787 elements = qeth_get_elements_no(card, new_skb, elements_needed); in qeth_l2_hard_start_xmit()
794 if (card->info.type != QETH_CARD_TYPE_IQD) { in qeth_l2_hard_start_xmit()
798 rc = qeth_do_send_packet(card, queue, new_skb, hdr, in qeth_l2_hard_start_xmit()
801 rc = qeth_do_send_packet_fast(card, queue, new_skb, hdr, in qeth_l2_hard_start_xmit()
804 card->stats.tx_packets++; in qeth_l2_hard_start_xmit()
805 card->stats.tx_bytes += tx_bytes; in qeth_l2_hard_start_xmit()
822 if (card->options.performance_stats) in qeth_l2_hard_start_xmit()
823 card->perf_stats.outbound_time += qeth_get_micros() - in qeth_l2_hard_start_xmit()
824 card->perf_stats.outbound_start_time; in qeth_l2_hard_start_xmit()
828 card->stats.tx_dropped++; in qeth_l2_hard_start_xmit()
829 card->stats.tx_errors++; in qeth_l2_hard_start_xmit()
839 struct qeth_card *card = dev->ml_priv; in __qeth_l2_open() local
842 QETH_CARD_TEXT(card, 4, "qethopen"); in __qeth_l2_open()
843 if (card->state == CARD_STATE_UP) in __qeth_l2_open()
845 if (card->state != CARD_STATE_SOFTSETUP) in __qeth_l2_open()
848 if ((card->info.type != QETH_CARD_TYPE_OSN) && in __qeth_l2_open()
849 (!(card->info.mac_bits & QETH_LAYER2_MAC_REGISTERED))) { in __qeth_l2_open()
850 QETH_CARD_TEXT(card, 4, "nomacadr"); in __qeth_l2_open()
853 card->data.state = CH_STATE_UP; in __qeth_l2_open()
854 card->state = CARD_STATE_UP; in __qeth_l2_open()
857 if (qdio_stop_irq(card->data.ccwdev, 0) >= 0) { in __qeth_l2_open()
858 napi_enable(&card->napi); in __qeth_l2_open()
859 napi_schedule(&card->napi); in __qeth_l2_open()
867 struct qeth_card *card = dev->ml_priv; in qeth_l2_open() local
869 QETH_CARD_TEXT(card, 5, "qethope_"); in qeth_l2_open()
870 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_open()
871 QETH_CARD_TEXT(card, 3, "openREC"); in qeth_l2_open()
879 struct qeth_card *card = dev->ml_priv; in qeth_l2_stop() local
881 QETH_CARD_TEXT(card, 4, "qethstop"); in qeth_l2_stop()
883 if (card->state == CARD_STATE_UP) { in qeth_l2_stop()
884 card->state = CARD_STATE_SOFTSETUP; in qeth_l2_stop()
885 napi_disable(&card->napi); in qeth_l2_stop()
897 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_probe_device() local
905 INIT_LIST_HEAD(&card->vid_list); in qeth_l2_probe_device()
906 INIT_LIST_HEAD(&card->mc_list); in qeth_l2_probe_device()
907 card->options.layer2 = 1; in qeth_l2_probe_device()
908 card->info.hwtrap = 0; in qeth_l2_probe_device()
914 struct qeth_card *card = dev_get_drvdata(&cgdev->dev); in qeth_l2_remove_device() local
918 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_remove_device()
919 wait_event(card->wait_q, qeth_threads_running(card, 0xffffffff) == 0); in qeth_l2_remove_device()
924 if (card->dev) { in qeth_l2_remove_device()
925 netif_napi_del(&card->napi); in qeth_l2_remove_device()
926 unregister_netdev(card->dev); in qeth_l2_remove_device()
927 card->dev = NULL; in qeth_l2_remove_device()
963 static int qeth_l2_setup_netdev(struct qeth_card *card) in qeth_l2_setup_netdev() argument
965 switch (card->info.type) { in qeth_l2_setup_netdev()
967 card->dev = alloc_netdev(0, "hsi%d", NET_NAME_UNKNOWN, in qeth_l2_setup_netdev()
971 card->dev = alloc_netdev(0, "osn%d", NET_NAME_UNKNOWN, in qeth_l2_setup_netdev()
975 card->dev = alloc_etherdev(0); in qeth_l2_setup_netdev()
978 if (!card->dev) in qeth_l2_setup_netdev()
981 card->dev->ml_priv = card; in qeth_l2_setup_netdev()
982 card->dev->watchdog_timeo = QETH_TX_TIMEOUT; in qeth_l2_setup_netdev()
983 card->dev->mtu = card->info.initial_mtu; in qeth_l2_setup_netdev()
984 card->dev->netdev_ops = &qeth_l2_netdev_ops; in qeth_l2_setup_netdev()
985 if (card->info.type == QETH_CARD_TYPE_OSN) { in qeth_l2_setup_netdev()
986 card->dev->ethtool_ops = &qeth_l2_osn_ops; in qeth_l2_setup_netdev()
987 card->dev->flags |= IFF_NOARP; in qeth_l2_setup_netdev()
989 card->dev->ethtool_ops = &qeth_l2_ethtool_ops; in qeth_l2_setup_netdev()
991 card->dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER; in qeth_l2_setup_netdev()
992 card->info.broadcast_capable = 1; in qeth_l2_setup_netdev()
993 qeth_l2_request_initial_mac(card); in qeth_l2_setup_netdev()
994 SET_NETDEV_DEV(card->dev, &card->gdev->dev); in qeth_l2_setup_netdev()
995 netif_napi_add(card->dev, &card->napi, qeth_l2_poll, QETH_NAPI_WEIGHT); in qeth_l2_setup_netdev()
996 return register_netdev(card->dev); in qeth_l2_setup_netdev()
1001 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in __qeth_l2_set_online() local
1005 mutex_lock(&card->discipline_mutex); in __qeth_l2_set_online()
1006 mutex_lock(&card->conf_mutex); in __qeth_l2_set_online()
1008 QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); in __qeth_l2_set_online()
1010 recover_flag = card->state; in __qeth_l2_set_online()
1011 rc = qeth_core_hardsetup_card(card); in __qeth_l2_set_online()
1017 qeth_bridgeport_query_support(card); in __qeth_l2_set_online()
1018 if (card->options.sbp.supported_funcs) in __qeth_l2_set_online()
1019 dev_info(&card->gdev->dev, in __qeth_l2_set_online()
1021 qeth_trace_features(card); in __qeth_l2_set_online()
1023 if (!card->dev && qeth_l2_setup_netdev(card)) { in __qeth_l2_set_online()
1028 if (card->info.type != QETH_CARD_TYPE_OSN) in __qeth_l2_set_online()
1029 qeth_l2_send_setmac(card, &card->dev->dev_addr[0]); in __qeth_l2_set_online()
1031 if (qeth_is_diagass_supported(card, QETH_DIAGS_CMD_TRAP)) { in __qeth_l2_set_online()
1032 if (card->info.hwtrap && in __qeth_l2_set_online()
1033 qeth_hw_trap(card, QETH_DIAGS_TRAP_ARM)) in __qeth_l2_set_online()
1034 card->info.hwtrap = 0; in __qeth_l2_set_online()
1036 card->info.hwtrap = 0; in __qeth_l2_set_online()
1038 qeth_l2_setup_bridgeport_attrs(card); in __qeth_l2_set_online()
1040 card->state = CARD_STATE_HARDSETUP; in __qeth_l2_set_online()
1041 memset(&card->rx, 0, sizeof(struct qeth_rx)); in __qeth_l2_set_online()
1042 qeth_print_status_message(card); in __qeth_l2_set_online()
1047 rc = qeth_send_startlan(card); in __qeth_l2_set_online()
1051 dev_warn(&card->gdev->dev, in __qeth_l2_set_online()
1053 card->lan_online = 0; in __qeth_l2_set_online()
1059 card->lan_online = 1; in __qeth_l2_set_online()
1062 if ((card->info.type == QETH_CARD_TYPE_OSD) || in __qeth_l2_set_online()
1063 (card->info.type == QETH_CARD_TYPE_OSX)) { in __qeth_l2_set_online()
1065 rc = qeth_set_access_ctrl_online(card, 0); in __qeth_l2_set_online()
1072 if (card->info.type != QETH_CARD_TYPE_OSN && in __qeth_l2_set_online()
1073 card->info.type != QETH_CARD_TYPE_OSM) in __qeth_l2_set_online()
1074 qeth_l2_process_vlans(card); in __qeth_l2_set_online()
1076 netif_tx_disable(card->dev); in __qeth_l2_set_online()
1078 rc = qeth_init_qdio_queues(card); in __qeth_l2_set_online()
1084 card->state = CARD_STATE_SOFTSETUP; in __qeth_l2_set_online()
1085 if (card->lan_online) in __qeth_l2_set_online()
1086 netif_carrier_on(card->dev); in __qeth_l2_set_online()
1088 netif_carrier_off(card->dev); in __qeth_l2_set_online()
1090 qeth_set_allowed_threads(card, 0xffffffff, 0); in __qeth_l2_set_online()
1093 card->info.type != QETH_CARD_TYPE_OSN) { in __qeth_l2_set_online()
1094 __qeth_l2_open(card->dev); in __qeth_l2_set_online()
1097 dev_open(card->dev); in __qeth_l2_set_online()
1101 qeth_l2_set_multicast_list(card->dev); in __qeth_l2_set_online()
1105 mutex_unlock(&card->conf_mutex); in __qeth_l2_set_online()
1106 mutex_unlock(&card->discipline_mutex); in __qeth_l2_set_online()
1110 qeth_l2_stop_card(card, 0); in __qeth_l2_set_online()
1111 ccw_device_set_offline(CARD_DDEV(card)); in __qeth_l2_set_online()
1112 ccw_device_set_offline(CARD_WDEV(card)); in __qeth_l2_set_online()
1113 ccw_device_set_offline(CARD_RDEV(card)); in __qeth_l2_set_online()
1114 qdio_free(CARD_DDEV(card)); in __qeth_l2_set_online()
1116 card->state = CARD_STATE_RECOVER; in __qeth_l2_set_online()
1118 card->state = CARD_STATE_DOWN; in __qeth_l2_set_online()
1119 mutex_unlock(&card->conf_mutex); in __qeth_l2_set_online()
1120 mutex_unlock(&card->discipline_mutex); in __qeth_l2_set_online()
1132 struct qeth_card *card = dev_get_drvdata(&cgdev->dev); in __qeth_l2_set_offline() local
1136 mutex_lock(&card->discipline_mutex); in __qeth_l2_set_offline()
1137 mutex_lock(&card->conf_mutex); in __qeth_l2_set_offline()
1139 QETH_DBF_HEX(SETUP, 3, &card, sizeof(void *)); in __qeth_l2_set_offline()
1141 if (card->dev && netif_carrier_ok(card->dev)) in __qeth_l2_set_offline()
1142 netif_carrier_off(card->dev); in __qeth_l2_set_offline()
1143 recover_flag = card->state; in __qeth_l2_set_offline()
1144 if ((!recovery_mode && card->info.hwtrap) || card->info.hwtrap == 2) { in __qeth_l2_set_offline()
1145 qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM); in __qeth_l2_set_offline()
1146 card->info.hwtrap = 1; in __qeth_l2_set_offline()
1148 qeth_l2_stop_card(card, recovery_mode); in __qeth_l2_set_offline()
1149 rc = ccw_device_set_offline(CARD_DDEV(card)); in __qeth_l2_set_offline()
1150 rc2 = ccw_device_set_offline(CARD_WDEV(card)); in __qeth_l2_set_offline()
1151 rc3 = ccw_device_set_offline(CARD_RDEV(card)); in __qeth_l2_set_offline()
1156 qdio_free(CARD_DDEV(card)); in __qeth_l2_set_offline()
1158 card->state = CARD_STATE_RECOVER; in __qeth_l2_set_offline()
1161 mutex_unlock(&card->conf_mutex); in __qeth_l2_set_offline()
1162 mutex_unlock(&card->discipline_mutex); in __qeth_l2_set_offline()
1173 struct qeth_card *card; in qeth_l2_recover() local
1176 card = (struct qeth_card *) ptr; in qeth_l2_recover()
1177 QETH_CARD_TEXT(card, 2, "recover1"); in qeth_l2_recover()
1178 if (!qeth_do_run_thread(card, QETH_RECOVER_THREAD)) in qeth_l2_recover()
1180 QETH_CARD_TEXT(card, 2, "recover2"); in qeth_l2_recover()
1181 dev_warn(&card->gdev->dev, in qeth_l2_recover()
1183 qeth_set_recovery_task(card); in qeth_l2_recover()
1184 __qeth_l2_set_offline(card->gdev, 1); in qeth_l2_recover()
1185 rc = __qeth_l2_set_online(card->gdev, 1); in qeth_l2_recover()
1187 dev_info(&card->gdev->dev, in qeth_l2_recover()
1190 qeth_close_dev(card); in qeth_l2_recover()
1191 dev_warn(&card->gdev->dev, "The qeth device driver " in qeth_l2_recover()
1194 qeth_clear_recovery_task(card); in qeth_l2_recover()
1195 qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); in qeth_l2_recover()
1196 qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); in qeth_l2_recover()
1213 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_shutdown() local
1214 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_shutdown()
1215 if ((gdev->state == CCWGROUP_ONLINE) && card->info.hwtrap) in qeth_l2_shutdown()
1216 qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM); in qeth_l2_shutdown()
1217 qeth_qdio_clear_card(card, 0); in qeth_l2_shutdown()
1218 qeth_clear_qdio_buffers(card); in qeth_l2_shutdown()
1219 qdio_free(CARD_DDEV(card)); in qeth_l2_shutdown()
1224 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_pm_suspend() local
1226 if (card->dev) in qeth_l2_pm_suspend()
1227 netif_device_detach(card->dev); in qeth_l2_pm_suspend()
1228 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_pm_suspend()
1229 wait_event(card->wait_q, qeth_threads_running(card, 0xffffffff) == 0); in qeth_l2_pm_suspend()
1232 if (card->state == CARD_STATE_UP) { in qeth_l2_pm_suspend()
1233 if (card->info.hwtrap) in qeth_l2_pm_suspend()
1234 qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM); in qeth_l2_pm_suspend()
1235 __qeth_l2_set_offline(card->gdev, 1); in qeth_l2_pm_suspend()
1237 __qeth_l2_set_offline(card->gdev, 0); in qeth_l2_pm_suspend()
1243 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_pm_resume() local
1249 if (card->state == CARD_STATE_RECOVER) { in qeth_l2_pm_resume()
1250 rc = __qeth_l2_set_online(card->gdev, 1); in qeth_l2_pm_resume()
1253 dev_close(card->dev); in qeth_l2_pm_resume()
1257 rc = __qeth_l2_set_online(card->gdev, 0); in qeth_l2_pm_resume()
1259 qeth_set_allowed_threads(card, 0xffffffff, 0); in qeth_l2_pm_resume()
1260 if (card->dev) in qeth_l2_pm_resume()
1261 netif_device_attach(card->dev); in qeth_l2_pm_resume()
1263 dev_warn(&card->gdev->dev, "The qeth device driver " in qeth_l2_pm_resume()
1269 static int qeth_l2_control_event(struct qeth_card *card, in qeth_l2_control_event() argument
1276 qeth_bridge_state_change(card, cmd); in qeth_l2_control_event()
1281 qeth_bridge_host_event(card, cmd); in qeth_l2_control_event()
1306 static int qeth_osn_send_control_data(struct qeth_card *card, int len, in qeth_osn_send_control_data() argument
1312 QETH_CARD_TEXT(card, 5, "osndctrd"); in qeth_osn_send_control_data()
1314 wait_event(card->wait_q, in qeth_osn_send_control_data()
1315 atomic_cmpxchg(&card->write.irq_pending, 0, 1) == 0); in qeth_osn_send_control_data()
1316 qeth_prepare_control_data(card, len, iob); in qeth_osn_send_control_data()
1317 QETH_CARD_TEXT(card, 6, "osnoirqp"); in qeth_osn_send_control_data()
1318 spin_lock_irqsave(get_ccwdev_lock(card->write.ccwdev), flags); in qeth_osn_send_control_data()
1319 rc = ccw_device_start(card->write.ccwdev, &card->write.ccw, in qeth_osn_send_control_data()
1321 spin_unlock_irqrestore(get_ccwdev_lock(card->write.ccwdev), flags); in qeth_osn_send_control_data()
1325 QETH_CARD_TEXT_(card, 2, " err%d", rc); in qeth_osn_send_control_data()
1327 atomic_set(&card->write.irq_pending, 0); in qeth_osn_send_control_data()
1328 wake_up(&card->wait_q); in qeth_osn_send_control_data()
1333 static int qeth_osn_send_ipa_cmd(struct qeth_card *card, in qeth_osn_send_ipa_cmd() argument
1338 QETH_CARD_TEXT(card, 4, "osndipa"); in qeth_osn_send_ipa_cmd()
1340 qeth_prepare_ipa_cmd(card, iob, QETH_PROT_OSN2); in qeth_osn_send_ipa_cmd()
1347 return qeth_osn_send_control_data(card, s1, iob); in qeth_osn_send_ipa_cmd()
1353 struct qeth_card *card; in qeth_osn_assist() local
1358 card = dev->ml_priv; in qeth_osn_assist()
1359 if (!card) in qeth_osn_assist()
1361 QETH_CARD_TEXT(card, 2, "osnsdmc"); in qeth_osn_assist()
1362 if ((card->state != CARD_STATE_UP) && in qeth_osn_assist()
1363 (card->state != CARD_STATE_SOFTSETUP)) in qeth_osn_assist()
1365 iob = qeth_wait_for_buffer(&card->write); in qeth_osn_assist()
1367 rc = qeth_osn_send_ipa_cmd(card, iob, data_len); in qeth_osn_assist()
1376 struct qeth_card *card; in qeth_osn_register() local
1381 card = (*dev)->ml_priv; in qeth_osn_register()
1382 if (!card) in qeth_osn_register()
1384 QETH_CARD_TEXT(card, 2, "osnreg"); in qeth_osn_register()
1387 card->osn_info.assist_cb = assist_cb; in qeth_osn_register()
1388 card->osn_info.data_cb = data_cb; in qeth_osn_register()
1395 struct qeth_card *card; in qeth_osn_deregister() local
1399 card = dev->ml_priv; in qeth_osn_deregister()
1400 if (!card) in qeth_osn_deregister()
1402 QETH_CARD_TEXT(card, 2, "osndereg"); in qeth_osn_deregister()
1403 card->osn_info.assist_cb = NULL; in qeth_osn_deregister()
1404 card->osn_info.data_cb = NULL; in qeth_osn_deregister()
1428 static void qeth_bridge_emit_host_event(struct qeth_card *card, in qeth_bridge_emit_host_event() argument
1473 kobject_uevent_env(&card->gdev->dev.kobj, KOBJ_CHANGE, env); in qeth_bridge_emit_host_event()
1478 struct qeth_card *card; member
1500 mutex_lock(&data->card->conf_mutex); in qeth_bridge_state_change_worker()
1501 data->card->options.sbp.role = entry->role; in qeth_bridge_state_change_worker()
1502 mutex_unlock(&data->card->conf_mutex); in qeth_bridge_state_change_worker()
1515 kobject_uevent_env(&data->card->gdev->dev.kobj, in qeth_bridge_state_change_worker()
1520 static void qeth_bridge_state_change(struct qeth_card *card, in qeth_bridge_state_change() argument
1528 QETH_CARD_TEXT(card, 2, "brstchng"); in qeth_bridge_state_change()
1530 QETH_CARD_TEXT_(card, 2, "BPsz%.8d", qports->entry_length); in qeth_bridge_state_change()
1537 QETH_CARD_TEXT(card, 2, "BPSalloc"); in qeth_bridge_state_change()
1541 data->card = card; in qeth_bridge_state_change()
1549 struct qeth_card *card; member
1560 dev_info(&data->card->gdev->dev, in qeth_bridge_host_event_worker()
1562 data->card->dev->name, in qeth_bridge_host_event_worker()
1568 mutex_lock(&data->card->conf_mutex); in qeth_bridge_host_event_worker()
1569 data->card->options.sbp.hostnotification = 0; in qeth_bridge_host_event_worker()
1570 mutex_unlock(&data->card->conf_mutex); in qeth_bridge_host_event_worker()
1571 qeth_bridge_emit_host_event(data->card, anev_abort, in qeth_bridge_host_event_worker()
1577 qeth_bridge_emit_host_event(data->card, in qeth_bridge_host_event_worker()
1585 static void qeth_bridge_host_event(struct qeth_card *card, in qeth_bridge_host_event() argument
1593 QETH_CARD_TEXT(card, 2, "brhostev"); in qeth_bridge_host_event()
1599 QETH_CARD_TEXT_(card, 2, "BPHe%04x", in qeth_bridge_host_event()
1609 QETH_CARD_TEXT(card, 2, "BPHalloc"); in qeth_bridge_host_event()
1613 data->card = card; in qeth_bridge_host_event()
1641 static int qeth_bridgeport_makerc(struct qeth_card *card, in qeth_bridgeport_makerc() argument
1657 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1664 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1669 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1678 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1683 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1688 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1693 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1710 QETH_CARD_TEXT_(card, 2, "SBPi%04x", cbctl->ipa_rc); in qeth_bridgeport_makerc()
1711 QETH_CARD_TEXT_(card, 2, "SBPc%04x", cbctl->cmd_rc); in qeth_bridgeport_makerc()
1716 static int qeth_bridgeport_query_support_cb(struct qeth_card *card, in qeth_bridgeport_query_support_cb() argument
1721 QETH_CARD_TEXT(card, 2, "brqsupcb"); in qeth_bridgeport_query_support_cb()
1740 static void qeth_bridgeport_query_support(struct qeth_card *card) in qeth_bridgeport_query_support() argument
1746 QETH_CARD_TEXT(card, 2, "brqsuppo"); in qeth_bridgeport_query_support()
1747 iob = qeth_get_ipacmd_buffer(card, IPA_CMD_SETBRIDGEPORT, 0); in qeth_bridgeport_query_support()
1756 if (qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_support_cb, in qeth_bridgeport_query_support()
1758 qeth_bridgeport_makerc(card, &cbctl, in qeth_bridgeport_query_support()
1761 card->options.sbp.role = QETH_SBP_ROLE_NONE; in qeth_bridgeport_query_support()
1764 card->options.sbp.supported_funcs = cbctl.data.supported; in qeth_bridgeport_query_support()
1767 static int qeth_bridgeport_query_ports_cb(struct qeth_card *card, in qeth_bridgeport_query_ports_cb() argument
1774 QETH_CARD_TEXT(card, 2, "brqprtcb"); in qeth_bridgeport_query_ports_cb()
1781 QETH_CARD_TEXT_(card, 2, "SBPs%04x", qports->entry_length); in qeth_bridgeport_query_ports_cb()
1804 int qeth_bridgeport_query_ports(struct qeth_card *card, in qeth_bridgeport_query_ports() argument
1819 QETH_CARD_TEXT(card, 2, "brqports"); in qeth_bridgeport_query_ports()
1820 if (!(card->options.sbp.supported_funcs & IPA_SBP_QUERY_BRIDGE_PORTS)) in qeth_bridgeport_query_ports()
1822 iob = qeth_get_ipacmd_buffer(card, IPA_CMD_SETBRIDGEPORT, 0); in qeth_bridgeport_query_ports()
1830 rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_ports_cb, in qeth_bridgeport_query_ports()
1834 rc = qeth_bridgeport_makerc(card, &cbctl, IPA_SBP_QUERY_BRIDGE_PORTS); in qeth_bridgeport_query_ports()
1841 static int qeth_bridgeport_set_cb(struct qeth_card *card, in qeth_bridgeport_set_cb() argument
1846 QETH_CARD_TEXT(card, 2, "brsetrcb"); in qeth_bridgeport_set_cb()
1859 int qeth_bridgeport_setrole(struct qeth_card *card, enum qeth_sbp_roles role) in qeth_bridgeport_setrole() argument
1868 QETH_CARD_TEXT(card, 2, "brsetrol"); in qeth_bridgeport_setrole()
1888 if (!(card->options.sbp.supported_funcs & setcmd)) in qeth_bridgeport_setrole()
1890 iob = qeth_get_ipacmd_buffer(card, IPA_CMD_SETBRIDGEPORT, 0); in qeth_bridgeport_setrole()
1896 rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_set_cb, in qeth_bridgeport_setrole()
1900 rc = qeth_bridgeport_makerc(card, &cbctl, setcmd); in qeth_bridgeport_setrole()
1910 static int qeth_anset_makerc(struct qeth_card *card, int pnso_rc, u16 response) in qeth_anset_makerc() argument
1923 dev_err(&card->gdev->dev, in qeth_anset_makerc()
1936 QETH_CARD_TEXT_(card, 2, "SBPp%04x", pnso_rc); in qeth_anset_makerc()
1937 QETH_CARD_TEXT_(card, 2, "SBPr%04x", response); in qeth_anset_makerc()
1945 struct qeth_card *card = (struct qeth_card *)priv; in qeth_bridgeport_an_set_cb() local
1958 qeth_bridge_emit_host_event(card, anev_reg_unreg, code, in qeth_bridgeport_an_set_cb()
1973 int qeth_bridgeport_an_set(struct qeth_card *card, int enable) in qeth_bridgeport_an_set() argument
1980 if (!card) in qeth_bridgeport_an_set()
1982 if (!card->options.sbp.supported_funcs) in qeth_bridgeport_an_set()
1984 ddev = CARD_DDEV(card); in qeth_bridgeport_an_set()
1988 qeth_bridge_emit_host_event(card, anev_reset, 0, NULL, NULL); in qeth_bridgeport_an_set()
1990 qeth_bridgeport_an_set_cb, card); in qeth_bridgeport_an_set()
1993 return qeth_anset_makerc(card, rc, response); in qeth_bridgeport_an_set()