Lines Matching refs:card
33 static void qeth_bridgeport_query_support(struct qeth_card *card);
34 static void qeth_bridge_state_change(struct qeth_card *card,
36 static void qeth_bridge_host_event(struct qeth_card *card,
41 struct qeth_card *card = dev->ml_priv; in qeth_l2_do_ioctl() local
45 if (!card) in qeth_l2_do_ioctl()
48 if (!qeth_card_hw_is_reachable(card)) in qeth_l2_do_ioctl()
51 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_do_ioctl()
56 rc = qeth_snmp_command(card, rq->ifr_ifru.ifru_data); in qeth_l2_do_ioctl()
59 if ((card->info.type == QETH_CARD_TYPE_OSD || in qeth_l2_do_ioctl()
60 card->info.type == QETH_CARD_TYPE_OSM || in qeth_l2_do_ioctl()
61 card->info.type == QETH_CARD_TYPE_OSX) && in qeth_l2_do_ioctl()
62 !card->info.guestlan) in qeth_l2_do_ioctl()
79 rc = qeth_query_oat_command(card, rq->ifr_ifru.ifru_data); in qeth_l2_do_ioctl()
85 QETH_CARD_TEXT_(card, 2, "ioce%d", rc); in qeth_l2_do_ioctl()
91 struct qeth_card *card; in qeth_l2_verify_dev() local
96 list_for_each_entry(card, &qeth_core_card_list.list, list) { in qeth_l2_verify_dev()
97 if (card->dev == dev) { in qeth_l2_verify_dev()
109 struct qeth_card *card; in qeth_l2_netdev_by_devno() local
118 list_for_each_entry(card, &qeth_core_card_list.list, list) { in qeth_l2_netdev_by_devno()
119 ccw_device_get_id(CARD_RDEV(card), &read_devid); in qeth_l2_netdev_by_devno()
121 ndev = card->dev; in qeth_l2_netdev_by_devno()
129 static int qeth_setdel_makerc(struct qeth_card *card, int retcode) in qeth_setdel_makerc() argument
134 QETH_CARD_TEXT_(card, 2, "err%04x", retcode); in qeth_setdel_makerc()
166 static int qeth_l2_send_setgroupmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_setgroupmac() argument
170 QETH_CARD_TEXT(card, 2, "L2Sgmac"); in qeth_l2_send_setgroupmac()
171 rc = qeth_setdel_makerc(card, qeth_l2_send_setdelmac(card, mac, in qeth_l2_send_setgroupmac()
175 mac, QETH_CARD_IFNAME(card)); in qeth_l2_send_setgroupmac()
178 mac, QETH_CARD_IFNAME(card), rc); in qeth_l2_send_setgroupmac()
182 static int qeth_l2_send_delgroupmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_delgroupmac() argument
186 QETH_CARD_TEXT(card, 2, "L2Dgmac"); in qeth_l2_send_delgroupmac()
187 rc = qeth_setdel_makerc(card, qeth_l2_send_setdelmac(card, mac, in qeth_l2_send_delgroupmac()
192 mac, QETH_CARD_IFNAME(card), rc); in qeth_l2_send_delgroupmac()
196 static void qeth_l2_add_mc(struct qeth_card *card, __u8 *mac, int vmac) in qeth_l2_add_mc() argument
211 rc = qeth_setdel_makerc(card, in qeth_l2_add_mc()
212 qeth_l2_send_setdelmac(card, mac, IPA_CMD_SETVMAC)); in qeth_l2_add_mc()
214 rc = qeth_setdel_makerc(card, in qeth_l2_add_mc()
215 qeth_l2_send_setgroupmac(card, mac)); in qeth_l2_add_mc()
219 list_add_tail(&mc->list, &card->mc_list); in qeth_l2_add_mc()
224 static void qeth_l2_del_all_mc(struct qeth_card *card, int del) in qeth_l2_del_all_mc() argument
228 spin_lock_bh(&card->mclock); in qeth_l2_del_all_mc()
229 list_for_each_entry_safe(mc, tmp, &card->mc_list, list) { in qeth_l2_del_all_mc()
232 qeth_l2_send_setdelmac(card, mc->mc_addr, in qeth_l2_del_all_mc()
235 qeth_l2_send_delgroupmac(card, mc->mc_addr); in qeth_l2_del_all_mc()
240 spin_unlock_bh(&card->mclock); in qeth_l2_del_all_mc()
243 static inline int qeth_l2_get_cast_type(struct qeth_card *card, in qeth_l2_get_cast_type() argument
246 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_get_cast_type()
255 static void qeth_l2_fill_header(struct qeth_card *card, struct qeth_hdr *hdr, in qeth_l2_fill_header() argument
281 static int qeth_l2_send_setdelvlan_cb(struct qeth_card *card, in qeth_l2_send_setdelvlan_cb() argument
286 QETH_CARD_TEXT(card, 2, "L2sdvcb"); in qeth_l2_send_setdelvlan_cb()
291 QETH_CARD_IFNAME(card), cmd->hdr.return_code); in qeth_l2_send_setdelvlan_cb()
292 QETH_CARD_TEXT_(card, 2, "L2VL%4x", cmd->hdr.command); in qeth_l2_send_setdelvlan_cb()
293 QETH_CARD_TEXT_(card, 2, "err%d", cmd->hdr.return_code); in qeth_l2_send_setdelvlan_cb()
298 static int qeth_l2_send_setdelvlan(struct qeth_card *card, __u16 i, in qeth_l2_send_setdelvlan() argument
304 QETH_CARD_TEXT_(card, 4, "L2sdv%x", ipacmd); in qeth_l2_send_setdelvlan()
305 iob = qeth_get_ipacmd_buffer(card, ipacmd, QETH_PROT_IPV4); in qeth_l2_send_setdelvlan()
310 return qeth_send_ipa_cmd(card, iob, in qeth_l2_send_setdelvlan()
314 static void qeth_l2_process_vlans(struct qeth_card *card) in qeth_l2_process_vlans() argument
317 QETH_CARD_TEXT(card, 3, "L2prcvln"); in qeth_l2_process_vlans()
318 spin_lock_bh(&card->vlanlock); in qeth_l2_process_vlans()
319 list_for_each_entry(id, &card->vid_list, list) { in qeth_l2_process_vlans()
320 qeth_l2_send_setdelvlan(card, id->vid, IPA_CMD_SETVLAN); in qeth_l2_process_vlans()
322 spin_unlock_bh(&card->vlanlock); in qeth_l2_process_vlans()
328 struct qeth_card *card = dev->ml_priv; in qeth_l2_vlan_rx_add_vid() local
332 QETH_CARD_TEXT_(card, 4, "aid:%d", vid); in qeth_l2_vlan_rx_add_vid()
335 if (card->info.type == QETH_CARD_TYPE_OSM) { in qeth_l2_vlan_rx_add_vid()
336 QETH_CARD_TEXT(card, 3, "aidOSM"); in qeth_l2_vlan_rx_add_vid()
339 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_vlan_rx_add_vid()
340 QETH_CARD_TEXT(card, 3, "aidREC"); in qeth_l2_vlan_rx_add_vid()
346 rc = qeth_l2_send_setdelvlan(card, vid, IPA_CMD_SETVLAN); in qeth_l2_vlan_rx_add_vid()
351 spin_lock_bh(&card->vlanlock); in qeth_l2_vlan_rx_add_vid()
352 list_add_tail(&id->list, &card->vid_list); in qeth_l2_vlan_rx_add_vid()
353 spin_unlock_bh(&card->vlanlock); in qeth_l2_vlan_rx_add_vid()
364 struct qeth_card *card = dev->ml_priv; in qeth_l2_vlan_rx_kill_vid() local
367 QETH_CARD_TEXT_(card, 4, "kid:%d", vid); in qeth_l2_vlan_rx_kill_vid()
368 if (card->info.type == QETH_CARD_TYPE_OSM) { in qeth_l2_vlan_rx_kill_vid()
369 QETH_CARD_TEXT(card, 3, "kidOSM"); in qeth_l2_vlan_rx_kill_vid()
372 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_vlan_rx_kill_vid()
373 QETH_CARD_TEXT(card, 3, "kidREC"); in qeth_l2_vlan_rx_kill_vid()
376 spin_lock_bh(&card->vlanlock); in qeth_l2_vlan_rx_kill_vid()
377 list_for_each_entry(id, &card->vid_list, list) { in qeth_l2_vlan_rx_kill_vid()
384 spin_unlock_bh(&card->vlanlock); in qeth_l2_vlan_rx_kill_vid()
386 rc = qeth_l2_send_setdelvlan(card, vid, IPA_CMD_DELVLAN); in qeth_l2_vlan_rx_kill_vid()
389 qeth_l2_set_multicast_list(card->dev); in qeth_l2_vlan_rx_kill_vid()
393 static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode) in qeth_l2_stop_card() argument
398 QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); in qeth_l2_stop_card()
400 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_stop_card()
401 if (card->read.state == CH_STATE_UP && in qeth_l2_stop_card()
402 card->write.state == CH_STATE_UP && in qeth_l2_stop_card()
403 (card->state == CARD_STATE_UP)) { in qeth_l2_stop_card()
405 card->info.type != QETH_CARD_TYPE_OSN) { in qeth_l2_stop_card()
406 qeth_l2_stop(card->dev); in qeth_l2_stop_card()
409 dev_close(card->dev); in qeth_l2_stop_card()
412 card->info.mac_bits &= ~QETH_LAYER2_MAC_REGISTERED; in qeth_l2_stop_card()
413 card->state = CARD_STATE_SOFTSETUP; in qeth_l2_stop_card()
415 if (card->state == CARD_STATE_SOFTSETUP) { in qeth_l2_stop_card()
416 qeth_l2_del_all_mc(card, 0); in qeth_l2_stop_card()
417 qeth_clear_ipacmd_list(card); in qeth_l2_stop_card()
418 card->state = CARD_STATE_HARDSETUP; in qeth_l2_stop_card()
420 if (card->state == CARD_STATE_HARDSETUP) { in qeth_l2_stop_card()
421 qeth_qdio_clear_card(card, 0); in qeth_l2_stop_card()
422 qeth_clear_qdio_buffers(card); in qeth_l2_stop_card()
423 qeth_clear_working_pool_list(card); in qeth_l2_stop_card()
424 card->state = CARD_STATE_DOWN; in qeth_l2_stop_card()
426 if (card->state == CARD_STATE_DOWN) { in qeth_l2_stop_card()
427 qeth_clear_cmd_buffers(&card->read); in qeth_l2_stop_card()
428 qeth_clear_cmd_buffers(&card->write); in qeth_l2_stop_card()
433 static int qeth_l2_process_inbound_buffer(struct qeth_card *card, in qeth_l2_process_inbound_buffer() argument
444 skb = qeth_core_get_next_skb(card, in qeth_l2_process_inbound_buffer()
445 &card->qdio.in_q->bufs[card->rx.b_index], in qeth_l2_process_inbound_buffer()
446 &card->rx.b_element, &card->rx.e_offset, &hdr); in qeth_l2_process_inbound_buffer()
451 skb->dev = card->dev; in qeth_l2_process_inbound_buffer()
458 *((__u32 *)skb->cb) = ++card->seqno.pkt_seqno; in qeth_l2_process_inbound_buffer()
463 if (card->info.type == QETH_CARD_TYPE_OSN) { in qeth_l2_process_inbound_buffer()
468 card->osn_info.data_cb(skb); in qeth_l2_process_inbound_buffer()
474 QETH_CARD_TEXT(card, 3, "inbunkno"); in qeth_l2_process_inbound_buffer()
480 card->stats.rx_packets++; in qeth_l2_process_inbound_buffer()
481 card->stats.rx_bytes += len; in qeth_l2_process_inbound_buffer()
488 struct qeth_card *card = container_of(napi, struct qeth_card, napi); in qeth_l2_poll() local
494 if (card->options.performance_stats) { in qeth_l2_poll()
495 card->perf_stats.inbound_cnt++; in qeth_l2_poll()
496 card->perf_stats.inbound_start_time = qeth_get_micros(); in qeth_l2_poll()
500 if (!card->rx.b_count) { in qeth_l2_poll()
501 card->rx.qdio_err = 0; in qeth_l2_poll()
502 card->rx.b_count = qdio_get_next_buffers( in qeth_l2_poll()
503 card->data.ccwdev, 0, &card->rx.b_index, in qeth_l2_poll()
504 &card->rx.qdio_err); in qeth_l2_poll()
505 if (card->rx.b_count <= 0) { in qeth_l2_poll()
506 card->rx.b_count = 0; in qeth_l2_poll()
509 card->rx.b_element = in qeth_l2_poll()
510 &card->qdio.in_q->bufs[card->rx.b_index] in qeth_l2_poll()
512 card->rx.e_offset = 0; in qeth_l2_poll()
515 while (card->rx.b_count) { in qeth_l2_poll()
516 buffer = &card->qdio.in_q->bufs[card->rx.b_index]; in qeth_l2_poll()
517 if (!(card->rx.qdio_err && in qeth_l2_poll()
518 qeth_check_qdio_errors(card, buffer->buffer, in qeth_l2_poll()
519 card->rx.qdio_err, "qinerr"))) in qeth_l2_poll()
521 card, new_budget, &done); in qeth_l2_poll()
526 if (card->options.performance_stats) in qeth_l2_poll()
527 card->perf_stats.bufs_rec++; in qeth_l2_poll()
528 qeth_put_buffer_pool_entry(card, in qeth_l2_poll()
530 qeth_queue_input_buffer(card, card->rx.b_index); in qeth_l2_poll()
531 card->rx.b_count--; in qeth_l2_poll()
532 if (card->rx.b_count) { in qeth_l2_poll()
533 card->rx.b_index = in qeth_l2_poll()
534 (card->rx.b_index + 1) % in qeth_l2_poll()
536 card->rx.b_element = in qeth_l2_poll()
537 &card->qdio.in_q in qeth_l2_poll()
538 ->bufs[card->rx.b_index] in qeth_l2_poll()
540 card->rx.e_offset = 0; in qeth_l2_poll()
552 if (qdio_start_irq(card->data.ccwdev, 0)) in qeth_l2_poll()
553 napi_schedule(&card->napi); in qeth_l2_poll()
555 if (card->options.performance_stats) in qeth_l2_poll()
556 card->perf_stats.inbound_time += qeth_get_micros() - in qeth_l2_poll()
557 card->perf_stats.inbound_start_time; in qeth_l2_poll()
561 static int qeth_l2_send_setdelmac(struct qeth_card *card, __u8 *mac, in qeth_l2_send_setdelmac() argument
567 QETH_CARD_TEXT(card, 2, "L2sdmac"); in qeth_l2_send_setdelmac()
568 iob = qeth_get_ipacmd_buffer(card, ipacmd, QETH_PROT_IPV4); in qeth_l2_send_setdelmac()
574 return qeth_send_ipa_cmd(card, iob, NULL, NULL); in qeth_l2_send_setdelmac()
577 static int qeth_l2_send_setmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_setmac() argument
581 QETH_CARD_TEXT(card, 2, "L2Setmac"); in qeth_l2_send_setmac()
582 rc = qeth_setdel_makerc(card, qeth_l2_send_setdelmac(card, mac, in qeth_l2_send_setmac()
585 card->info.mac_bits |= QETH_LAYER2_MAC_REGISTERED; in qeth_l2_send_setmac()
586 memcpy(card->dev->dev_addr, mac, OSA_ADDR_LEN); in qeth_l2_send_setmac()
587 dev_info(&card->gdev->dev, in qeth_l2_send_setmac()
589 card->dev->dev_addr, card->dev->name); in qeth_l2_send_setmac()
591 card->info.mac_bits &= ~QETH_LAYER2_MAC_REGISTERED; in qeth_l2_send_setmac()
594 dev_warn(&card->gdev->dev, in qeth_l2_send_setmac()
598 dev_warn(&card->gdev->dev, in qeth_l2_send_setmac()
606 static int qeth_l2_send_delmac(struct qeth_card *card, __u8 *mac) in qeth_l2_send_delmac() argument
610 QETH_CARD_TEXT(card, 2, "L2Delmac"); in qeth_l2_send_delmac()
611 if (!(card->info.mac_bits & QETH_LAYER2_MAC_REGISTERED)) in qeth_l2_send_delmac()
613 rc = qeth_setdel_makerc(card, qeth_l2_send_setdelmac(card, mac, in qeth_l2_send_delmac()
616 card->info.mac_bits &= ~QETH_LAYER2_MAC_REGISTERED; in qeth_l2_send_delmac()
620 static int qeth_l2_request_initial_mac(struct qeth_card *card) in qeth_l2_request_initial_mac() argument
626 QETH_DBF_TEXT_(SETUP, 2, "doL2%s", CARD_BUS_ID(card)); in qeth_l2_request_initial_mac()
628 if (qeth_is_supported(card, IPA_SETADAPTERPARMS)) { in qeth_l2_request_initial_mac()
629 rc = qeth_query_setadapterparms(card); in qeth_l2_request_initial_mac()
633 CARD_BUS_ID(card), rc); in qeth_l2_request_initial_mac()
637 if (card->info.type == QETH_CARD_TYPE_IQD || in qeth_l2_request_initial_mac()
638 card->info.type == QETH_CARD_TYPE_OSM || in qeth_l2_request_initial_mac()
639 card->info.type == QETH_CARD_TYPE_OSX || in qeth_l2_request_initial_mac()
640 card->info.guestlan) { in qeth_l2_request_initial_mac()
641 rc = qeth_setadpparms_change_macaddr(card); in qeth_l2_request_initial_mac()
644 "device %s: x%x\n", CARD_BUS_ID(card), rc); in qeth_l2_request_initial_mac()
648 QETH_DBF_HEX(SETUP, 2, card->dev->dev_addr, OSA_ADDR_LEN); in qeth_l2_request_initial_mac()
650 eth_random_addr(card->dev->dev_addr); in qeth_l2_request_initial_mac()
651 memcpy(card->dev->dev_addr, vendor_pre, 3); in qeth_l2_request_initial_mac()
659 struct qeth_card *card = dev->ml_priv; in qeth_l2_set_mac_address() local
662 QETH_CARD_TEXT(card, 3, "setmac"); in qeth_l2_set_mac_address()
665 QETH_CARD_TEXT(card, 3, "setmcINV"); in qeth_l2_set_mac_address()
669 if (card->info.type == QETH_CARD_TYPE_OSN || in qeth_l2_set_mac_address()
670 card->info.type == QETH_CARD_TYPE_OSM || in qeth_l2_set_mac_address()
671 card->info.type == QETH_CARD_TYPE_OSX) { in qeth_l2_set_mac_address()
672 QETH_CARD_TEXT(card, 3, "setmcTYP"); in qeth_l2_set_mac_address()
675 QETH_CARD_HEX(card, 3, addr->sa_data, OSA_ADDR_LEN); in qeth_l2_set_mac_address()
676 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_set_mac_address()
677 QETH_CARD_TEXT(card, 3, "setmcREC"); in qeth_l2_set_mac_address()
680 rc = qeth_l2_send_delmac(card, &card->dev->dev_addr[0]); in qeth_l2_set_mac_address()
682 rc = qeth_l2_send_setmac(card, addr->sa_data); in qeth_l2_set_mac_address()
688 struct qeth_card *card = dev->ml_priv; in qeth_l2_set_multicast_list() local
691 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_set_multicast_list()
694 QETH_CARD_TEXT(card, 3, "setmulti"); in qeth_l2_set_multicast_list()
695 if (qeth_threads_running(card, QETH_RECOVER_THREAD) && in qeth_l2_set_multicast_list()
696 (card->state != CARD_STATE_UP)) in qeth_l2_set_multicast_list()
698 qeth_l2_del_all_mc(card, 1); in qeth_l2_set_multicast_list()
699 spin_lock_bh(&card->mclock); in qeth_l2_set_multicast_list()
701 qeth_l2_add_mc(card, ha->addr, 0); in qeth_l2_set_multicast_list()
704 qeth_l2_add_mc(card, ha->addr, 1); in qeth_l2_set_multicast_list()
706 spin_unlock_bh(&card->mclock); in qeth_l2_set_multicast_list()
707 if (!qeth_adp_supported(card, IPA_SETADP_SET_PROMISC_MODE)) in qeth_l2_set_multicast_list()
709 qeth_setadp_promisc_mode(card); in qeth_l2_set_multicast_list()
717 struct qeth_card *card = dev->ml_priv; in qeth_l2_hard_start_xmit() local
719 int cast_type = qeth_l2_get_cast_type(card, skb); in qeth_l2_hard_start_xmit()
726 if (card->qdio.do_prio_queueing || (cast_type && in qeth_l2_hard_start_xmit()
727 card->info.is_multicast_different)) in qeth_l2_hard_start_xmit()
728 queue = card->qdio.out_qs[qeth_get_priority_queue(card, skb, in qeth_l2_hard_start_xmit()
731 queue = card->qdio.out_qs[card->qdio.default_out_queue]; in qeth_l2_hard_start_xmit()
733 if ((card->state != CARD_STATE_UP) || !card->lan_online) { in qeth_l2_hard_start_xmit()
734 card->stats.tx_carrier_errors++; in qeth_l2_hard_start_xmit()
738 if ((card->info.type == QETH_CARD_TYPE_OSN) && in qeth_l2_hard_start_xmit()
742 if (card->options.performance_stats) { in qeth_l2_hard_start_xmit()
743 card->perf_stats.outbound_cnt++; in qeth_l2_hard_start_xmit()
744 card->perf_stats.outbound_start_time = qeth_get_micros(); in qeth_l2_hard_start_xmit()
748 if (card->info.type == QETH_CARD_TYPE_OSN) in qeth_l2_hard_start_xmit()
751 if (card->info.type == QETH_CARD_TYPE_IQD) { in qeth_l2_hard_start_xmit()
761 qeth_l2_fill_header(card, hdr, new_skb, cast_type); in qeth_l2_hard_start_xmit()
774 qeth_l2_fill_header(card, hdr, new_skb, cast_type); in qeth_l2_hard_start_xmit()
778 elements = qeth_get_elements_no(card, new_skb, elements_needed); in qeth_l2_hard_start_xmit()
785 if (card->info.type != QETH_CARD_TYPE_IQD) { in qeth_l2_hard_start_xmit()
789 rc = qeth_do_send_packet(card, queue, new_skb, hdr, in qeth_l2_hard_start_xmit()
792 rc = qeth_do_send_packet_fast(card, queue, new_skb, hdr, in qeth_l2_hard_start_xmit()
795 card->stats.tx_packets++; in qeth_l2_hard_start_xmit()
796 card->stats.tx_bytes += tx_bytes; in qeth_l2_hard_start_xmit()
813 if (card->options.performance_stats) in qeth_l2_hard_start_xmit()
814 card->perf_stats.outbound_time += qeth_get_micros() - in qeth_l2_hard_start_xmit()
815 card->perf_stats.outbound_start_time; in qeth_l2_hard_start_xmit()
819 card->stats.tx_dropped++; in qeth_l2_hard_start_xmit()
820 card->stats.tx_errors++; in qeth_l2_hard_start_xmit()
830 struct qeth_card *card = dev->ml_priv; in __qeth_l2_open() local
833 QETH_CARD_TEXT(card, 4, "qethopen"); in __qeth_l2_open()
834 if (card->state == CARD_STATE_UP) in __qeth_l2_open()
836 if (card->state != CARD_STATE_SOFTSETUP) in __qeth_l2_open()
839 if ((card->info.type != QETH_CARD_TYPE_OSN) && in __qeth_l2_open()
840 (!(card->info.mac_bits & QETH_LAYER2_MAC_REGISTERED))) { in __qeth_l2_open()
841 QETH_CARD_TEXT(card, 4, "nomacadr"); in __qeth_l2_open()
844 card->data.state = CH_STATE_UP; in __qeth_l2_open()
845 card->state = CARD_STATE_UP; in __qeth_l2_open()
848 if (qdio_stop_irq(card->data.ccwdev, 0) >= 0) { in __qeth_l2_open()
849 napi_enable(&card->napi); in __qeth_l2_open()
850 napi_schedule(&card->napi); in __qeth_l2_open()
858 struct qeth_card *card = dev->ml_priv; in qeth_l2_open() local
860 QETH_CARD_TEXT(card, 5, "qethope_"); in qeth_l2_open()
861 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { in qeth_l2_open()
862 QETH_CARD_TEXT(card, 3, "openREC"); in qeth_l2_open()
870 struct qeth_card *card = dev->ml_priv; in qeth_l2_stop() local
872 QETH_CARD_TEXT(card, 4, "qethstop"); in qeth_l2_stop()
874 if (card->state == CARD_STATE_UP) { in qeth_l2_stop()
875 card->state = CARD_STATE_SOFTSETUP; in qeth_l2_stop()
876 napi_disable(&card->napi); in qeth_l2_stop()
883 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_probe_device() local
886 INIT_LIST_HEAD(&card->vid_list); in qeth_l2_probe_device()
887 INIT_LIST_HEAD(&card->mc_list); in qeth_l2_probe_device()
888 card->options.layer2 = 1; in qeth_l2_probe_device()
889 card->info.hwtrap = 0; in qeth_l2_probe_device()
895 struct qeth_card *card = dev_get_drvdata(&cgdev->dev); in qeth_l2_remove_device() local
898 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_remove_device()
899 wait_event(card->wait_q, qeth_threads_running(card, 0xffffffff) == 0); in qeth_l2_remove_device()
904 if (card->dev) { in qeth_l2_remove_device()
905 unregister_netdev(card->dev); in qeth_l2_remove_device()
906 card->dev = NULL; in qeth_l2_remove_device()
942 static int qeth_l2_setup_netdev(struct qeth_card *card) in qeth_l2_setup_netdev() argument
944 switch (card->info.type) { in qeth_l2_setup_netdev()
946 card->dev = alloc_netdev(0, "hsi%d", NET_NAME_UNKNOWN, in qeth_l2_setup_netdev()
950 card->dev = alloc_netdev(0, "osn%d", NET_NAME_UNKNOWN, in qeth_l2_setup_netdev()
952 card->dev->flags |= IFF_NOARP; in qeth_l2_setup_netdev()
955 card->dev = alloc_etherdev(0); in qeth_l2_setup_netdev()
958 if (!card->dev) in qeth_l2_setup_netdev()
961 card->dev->ml_priv = card; in qeth_l2_setup_netdev()
962 card->dev->watchdog_timeo = QETH_TX_TIMEOUT; in qeth_l2_setup_netdev()
963 card->dev->mtu = card->info.initial_mtu; in qeth_l2_setup_netdev()
964 card->dev->netdev_ops = &qeth_l2_netdev_ops; in qeth_l2_setup_netdev()
965 card->dev->ethtool_ops = in qeth_l2_setup_netdev()
966 (card->info.type != QETH_CARD_TYPE_OSN) ? in qeth_l2_setup_netdev()
968 card->dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER; in qeth_l2_setup_netdev()
969 card->info.broadcast_capable = 1; in qeth_l2_setup_netdev()
970 qeth_l2_request_initial_mac(card); in qeth_l2_setup_netdev()
971 SET_NETDEV_DEV(card->dev, &card->gdev->dev); in qeth_l2_setup_netdev()
972 netif_napi_add(card->dev, &card->napi, qeth_l2_poll, QETH_NAPI_WEIGHT); in qeth_l2_setup_netdev()
973 return register_netdev(card->dev); in qeth_l2_setup_netdev()
978 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in __qeth_l2_set_online() local
982 mutex_lock(&card->discipline_mutex); in __qeth_l2_set_online()
983 mutex_lock(&card->conf_mutex); in __qeth_l2_set_online()
985 QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); in __qeth_l2_set_online()
987 recover_flag = card->state; in __qeth_l2_set_online()
988 rc = qeth_core_hardsetup_card(card); in __qeth_l2_set_online()
994 qeth_bridgeport_query_support(card); in __qeth_l2_set_online()
995 if (card->options.sbp.supported_funcs) in __qeth_l2_set_online()
996 dev_info(&card->gdev->dev, in __qeth_l2_set_online()
998 qeth_trace_features(card); in __qeth_l2_set_online()
1000 if (!card->dev && qeth_l2_setup_netdev(card)) { in __qeth_l2_set_online()
1005 if (card->info.type != QETH_CARD_TYPE_OSN) in __qeth_l2_set_online()
1006 qeth_l2_send_setmac(card, &card->dev->dev_addr[0]); in __qeth_l2_set_online()
1008 if (qeth_is_diagass_supported(card, QETH_DIAGS_CMD_TRAP)) { in __qeth_l2_set_online()
1009 if (card->info.hwtrap && in __qeth_l2_set_online()
1010 qeth_hw_trap(card, QETH_DIAGS_TRAP_ARM)) in __qeth_l2_set_online()
1011 card->info.hwtrap = 0; in __qeth_l2_set_online()
1013 card->info.hwtrap = 0; in __qeth_l2_set_online()
1015 qeth_l2_setup_bridgeport_attrs(card); in __qeth_l2_set_online()
1017 card->state = CARD_STATE_HARDSETUP; in __qeth_l2_set_online()
1018 memset(&card->rx, 0, sizeof(struct qeth_rx)); in __qeth_l2_set_online()
1019 qeth_print_status_message(card); in __qeth_l2_set_online()
1024 rc = qeth_send_startlan(card); in __qeth_l2_set_online()
1028 dev_warn(&card->gdev->dev, in __qeth_l2_set_online()
1030 card->lan_online = 0; in __qeth_l2_set_online()
1036 card->lan_online = 1; in __qeth_l2_set_online()
1039 if ((card->info.type == QETH_CARD_TYPE_OSD) || in __qeth_l2_set_online()
1040 (card->info.type == QETH_CARD_TYPE_OSX)) { in __qeth_l2_set_online()
1042 rc = qeth_set_access_ctrl_online(card, 0); in __qeth_l2_set_online()
1049 if (card->info.type != QETH_CARD_TYPE_OSN && in __qeth_l2_set_online()
1050 card->info.type != QETH_CARD_TYPE_OSM) in __qeth_l2_set_online()
1051 qeth_l2_process_vlans(card); in __qeth_l2_set_online()
1053 netif_tx_disable(card->dev); in __qeth_l2_set_online()
1055 rc = qeth_init_qdio_queues(card); in __qeth_l2_set_online()
1061 card->state = CARD_STATE_SOFTSETUP; in __qeth_l2_set_online()
1062 if (card->lan_online) in __qeth_l2_set_online()
1063 netif_carrier_on(card->dev); in __qeth_l2_set_online()
1065 netif_carrier_off(card->dev); in __qeth_l2_set_online()
1067 qeth_set_allowed_threads(card, 0xffffffff, 0); in __qeth_l2_set_online()
1070 card->info.type != QETH_CARD_TYPE_OSN) { in __qeth_l2_set_online()
1071 __qeth_l2_open(card->dev); in __qeth_l2_set_online()
1074 dev_open(card->dev); in __qeth_l2_set_online()
1078 qeth_l2_set_multicast_list(card->dev); in __qeth_l2_set_online()
1082 mutex_unlock(&card->conf_mutex); in __qeth_l2_set_online()
1083 mutex_unlock(&card->discipline_mutex); in __qeth_l2_set_online()
1087 qeth_l2_stop_card(card, 0); in __qeth_l2_set_online()
1088 ccw_device_set_offline(CARD_DDEV(card)); in __qeth_l2_set_online()
1089 ccw_device_set_offline(CARD_WDEV(card)); in __qeth_l2_set_online()
1090 ccw_device_set_offline(CARD_RDEV(card)); in __qeth_l2_set_online()
1091 qdio_free(CARD_DDEV(card)); in __qeth_l2_set_online()
1093 card->state = CARD_STATE_RECOVER; in __qeth_l2_set_online()
1095 card->state = CARD_STATE_DOWN; in __qeth_l2_set_online()
1096 mutex_unlock(&card->conf_mutex); in __qeth_l2_set_online()
1097 mutex_unlock(&card->discipline_mutex); in __qeth_l2_set_online()
1109 struct qeth_card *card = dev_get_drvdata(&cgdev->dev); in __qeth_l2_set_offline() local
1113 mutex_lock(&card->discipline_mutex); in __qeth_l2_set_offline()
1114 mutex_lock(&card->conf_mutex); in __qeth_l2_set_offline()
1116 QETH_DBF_HEX(SETUP, 3, &card, sizeof(void *)); in __qeth_l2_set_offline()
1118 if (card->dev && netif_carrier_ok(card->dev)) in __qeth_l2_set_offline()
1119 netif_carrier_off(card->dev); in __qeth_l2_set_offline()
1120 recover_flag = card->state; in __qeth_l2_set_offline()
1121 if ((!recovery_mode && card->info.hwtrap) || card->info.hwtrap == 2) { in __qeth_l2_set_offline()
1122 qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM); in __qeth_l2_set_offline()
1123 card->info.hwtrap = 1; in __qeth_l2_set_offline()
1125 qeth_l2_stop_card(card, recovery_mode); in __qeth_l2_set_offline()
1126 rc = ccw_device_set_offline(CARD_DDEV(card)); in __qeth_l2_set_offline()
1127 rc2 = ccw_device_set_offline(CARD_WDEV(card)); in __qeth_l2_set_offline()
1128 rc3 = ccw_device_set_offline(CARD_RDEV(card)); in __qeth_l2_set_offline()
1133 qdio_free(CARD_DDEV(card)); in __qeth_l2_set_offline()
1135 card->state = CARD_STATE_RECOVER; in __qeth_l2_set_offline()
1138 mutex_unlock(&card->conf_mutex); in __qeth_l2_set_offline()
1139 mutex_unlock(&card->discipline_mutex); in __qeth_l2_set_offline()
1150 struct qeth_card *card; in qeth_l2_recover() local
1153 card = (struct qeth_card *) ptr; in qeth_l2_recover()
1154 QETH_CARD_TEXT(card, 2, "recover1"); in qeth_l2_recover()
1155 if (!qeth_do_run_thread(card, QETH_RECOVER_THREAD)) in qeth_l2_recover()
1157 QETH_CARD_TEXT(card, 2, "recover2"); in qeth_l2_recover()
1158 dev_warn(&card->gdev->dev, in qeth_l2_recover()
1160 qeth_set_recovery_task(card); in qeth_l2_recover()
1161 __qeth_l2_set_offline(card->gdev, 1); in qeth_l2_recover()
1162 rc = __qeth_l2_set_online(card->gdev, 1); in qeth_l2_recover()
1164 dev_info(&card->gdev->dev, in qeth_l2_recover()
1167 qeth_close_dev(card); in qeth_l2_recover()
1168 dev_warn(&card->gdev->dev, "The qeth device driver " in qeth_l2_recover()
1171 qeth_clear_recovery_task(card); in qeth_l2_recover()
1172 qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); in qeth_l2_recover()
1173 qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); in qeth_l2_recover()
1190 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_shutdown() local
1191 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_shutdown()
1192 if ((gdev->state == CCWGROUP_ONLINE) && card->info.hwtrap) in qeth_l2_shutdown()
1193 qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM); in qeth_l2_shutdown()
1194 qeth_qdio_clear_card(card, 0); in qeth_l2_shutdown()
1195 qeth_clear_qdio_buffers(card); in qeth_l2_shutdown()
1196 qdio_free(CARD_DDEV(card)); in qeth_l2_shutdown()
1201 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_pm_suspend() local
1203 if (card->dev) in qeth_l2_pm_suspend()
1204 netif_device_detach(card->dev); in qeth_l2_pm_suspend()
1205 qeth_set_allowed_threads(card, 0, 1); in qeth_l2_pm_suspend()
1206 wait_event(card->wait_q, qeth_threads_running(card, 0xffffffff) == 0); in qeth_l2_pm_suspend()
1209 if (card->state == CARD_STATE_UP) { in qeth_l2_pm_suspend()
1210 if (card->info.hwtrap) in qeth_l2_pm_suspend()
1211 qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM); in qeth_l2_pm_suspend()
1212 __qeth_l2_set_offline(card->gdev, 1); in qeth_l2_pm_suspend()
1214 __qeth_l2_set_offline(card->gdev, 0); in qeth_l2_pm_suspend()
1220 struct qeth_card *card = dev_get_drvdata(&gdev->dev); in qeth_l2_pm_resume() local
1226 if (card->state == CARD_STATE_RECOVER) { in qeth_l2_pm_resume()
1227 rc = __qeth_l2_set_online(card->gdev, 1); in qeth_l2_pm_resume()
1230 dev_close(card->dev); in qeth_l2_pm_resume()
1234 rc = __qeth_l2_set_online(card->gdev, 0); in qeth_l2_pm_resume()
1236 qeth_set_allowed_threads(card, 0xffffffff, 0); in qeth_l2_pm_resume()
1237 if (card->dev) in qeth_l2_pm_resume()
1238 netif_device_attach(card->dev); in qeth_l2_pm_resume()
1240 dev_warn(&card->gdev->dev, "The qeth device driver " in qeth_l2_pm_resume()
1246 static int qeth_l2_control_event(struct qeth_card *card, in qeth_l2_control_event() argument
1253 qeth_bridge_state_change(card, cmd); in qeth_l2_control_event()
1258 qeth_bridge_host_event(card, cmd); in qeth_l2_control_event()
1282 static int qeth_osn_send_control_data(struct qeth_card *card, int len, in qeth_osn_send_control_data() argument
1288 QETH_CARD_TEXT(card, 5, "osndctrd"); in qeth_osn_send_control_data()
1290 wait_event(card->wait_q, in qeth_osn_send_control_data()
1291 atomic_cmpxchg(&card->write.irq_pending, 0, 1) == 0); in qeth_osn_send_control_data()
1292 qeth_prepare_control_data(card, len, iob); in qeth_osn_send_control_data()
1293 QETH_CARD_TEXT(card, 6, "osnoirqp"); in qeth_osn_send_control_data()
1294 spin_lock_irqsave(get_ccwdev_lock(card->write.ccwdev), flags); in qeth_osn_send_control_data()
1295 rc = ccw_device_start(card->write.ccwdev, &card->write.ccw, in qeth_osn_send_control_data()
1297 spin_unlock_irqrestore(get_ccwdev_lock(card->write.ccwdev), flags); in qeth_osn_send_control_data()
1301 QETH_CARD_TEXT_(card, 2, " err%d", rc); in qeth_osn_send_control_data()
1303 atomic_set(&card->write.irq_pending, 0); in qeth_osn_send_control_data()
1304 wake_up(&card->wait_q); in qeth_osn_send_control_data()
1309 static int qeth_osn_send_ipa_cmd(struct qeth_card *card, in qeth_osn_send_ipa_cmd() argument
1314 QETH_CARD_TEXT(card, 4, "osndipa"); in qeth_osn_send_ipa_cmd()
1316 qeth_prepare_ipa_cmd(card, iob, QETH_PROT_OSN2); in qeth_osn_send_ipa_cmd()
1323 return qeth_osn_send_control_data(card, s1, iob); in qeth_osn_send_ipa_cmd()
1329 struct qeth_card *card; in qeth_osn_assist() local
1334 card = dev->ml_priv; in qeth_osn_assist()
1335 if (!card) in qeth_osn_assist()
1337 QETH_CARD_TEXT(card, 2, "osnsdmc"); in qeth_osn_assist()
1338 if (!qeth_card_hw_is_reachable(card)) in qeth_osn_assist()
1340 iob = qeth_wait_for_buffer(&card->write); in qeth_osn_assist()
1342 rc = qeth_osn_send_ipa_cmd(card, iob, data_len); in qeth_osn_assist()
1351 struct qeth_card *card; in qeth_osn_register() local
1356 card = (*dev)->ml_priv; in qeth_osn_register()
1357 if (!card) in qeth_osn_register()
1359 QETH_CARD_TEXT(card, 2, "osnreg"); in qeth_osn_register()
1362 card->osn_info.assist_cb = assist_cb; in qeth_osn_register()
1363 card->osn_info.data_cb = data_cb; in qeth_osn_register()
1370 struct qeth_card *card; in qeth_osn_deregister() local
1374 card = dev->ml_priv; in qeth_osn_deregister()
1375 if (!card) in qeth_osn_deregister()
1377 QETH_CARD_TEXT(card, 2, "osndereg"); in qeth_osn_deregister()
1378 card->osn_info.assist_cb = NULL; in qeth_osn_deregister()
1379 card->osn_info.data_cb = NULL; in qeth_osn_deregister()
1403 static void qeth_bridge_emit_host_event(struct qeth_card *card, in qeth_bridge_emit_host_event() argument
1448 kobject_uevent_env(&card->gdev->dev.kobj, KOBJ_CHANGE, env); in qeth_bridge_emit_host_event()
1453 struct qeth_card *card; member
1475 mutex_lock(&data->card->conf_mutex); in qeth_bridge_state_change_worker()
1476 data->card->options.sbp.role = entry->role; in qeth_bridge_state_change_worker()
1477 mutex_unlock(&data->card->conf_mutex); in qeth_bridge_state_change_worker()
1490 kobject_uevent_env(&data->card->gdev->dev.kobj, in qeth_bridge_state_change_worker()
1495 static void qeth_bridge_state_change(struct qeth_card *card, in qeth_bridge_state_change() argument
1503 QETH_CARD_TEXT(card, 2, "brstchng"); in qeth_bridge_state_change()
1505 QETH_CARD_TEXT_(card, 2, "BPsz%04x", qports->entry_length); in qeth_bridge_state_change()
1512 QETH_CARD_TEXT(card, 2, "BPSalloc"); in qeth_bridge_state_change()
1516 data->card = card; in qeth_bridge_state_change()
1524 struct qeth_card *card; member
1535 dev_info(&data->card->gdev->dev, in qeth_bridge_host_event_worker()
1537 data->card->dev->name, in qeth_bridge_host_event_worker()
1543 mutex_lock(&data->card->conf_mutex); in qeth_bridge_host_event_worker()
1544 data->card->options.sbp.hostnotification = 0; in qeth_bridge_host_event_worker()
1545 mutex_unlock(&data->card->conf_mutex); in qeth_bridge_host_event_worker()
1546 qeth_bridge_emit_host_event(data->card, anev_abort, in qeth_bridge_host_event_worker()
1552 qeth_bridge_emit_host_event(data->card, in qeth_bridge_host_event_worker()
1560 static void qeth_bridge_host_event(struct qeth_card *card, in qeth_bridge_host_event() argument
1568 QETH_CARD_TEXT(card, 2, "brhostev"); in qeth_bridge_host_event()
1574 QETH_CARD_TEXT_(card, 2, "BPHe%04x", in qeth_bridge_host_event()
1584 QETH_CARD_TEXT(card, 2, "BPHalloc"); in qeth_bridge_host_event()
1588 data->card = card; in qeth_bridge_host_event()
1616 static int qeth_bridgeport_makerc(struct qeth_card *card, in qeth_bridgeport_makerc() argument
1632 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1639 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1644 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1653 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1658 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1663 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1668 dev_err(&card->gdev->dev, in qeth_bridgeport_makerc()
1685 QETH_CARD_TEXT_(card, 2, "SBPi%04x", cbctl->ipa_rc); in qeth_bridgeport_makerc()
1686 QETH_CARD_TEXT_(card, 2, "SBPc%04x", cbctl->cmd_rc); in qeth_bridgeport_makerc()
1691 static int qeth_bridgeport_query_support_cb(struct qeth_card *card, in qeth_bridgeport_query_support_cb() argument
1696 QETH_CARD_TEXT(card, 2, "brqsupcb"); in qeth_bridgeport_query_support_cb()
1715 static void qeth_bridgeport_query_support(struct qeth_card *card) in qeth_bridgeport_query_support() argument
1721 QETH_CARD_TEXT(card, 2, "brqsuppo"); in qeth_bridgeport_query_support()
1722 iob = qeth_get_ipacmd_buffer(card, IPA_CMD_SETBRIDGEPORT, 0); in qeth_bridgeport_query_support()
1733 if (qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_support_cb, in qeth_bridgeport_query_support()
1735 qeth_bridgeport_makerc(card, &cbctl, in qeth_bridgeport_query_support()
1738 card->options.sbp.role = QETH_SBP_ROLE_NONE; in qeth_bridgeport_query_support()
1741 card->options.sbp.supported_funcs = cbctl.data.supported; in qeth_bridgeport_query_support()
1744 static int qeth_bridgeport_query_ports_cb(struct qeth_card *card, in qeth_bridgeport_query_ports_cb() argument
1751 QETH_CARD_TEXT(card, 2, "brqprtcb"); in qeth_bridgeport_query_ports_cb()
1758 QETH_CARD_TEXT_(card, 2, "SBPs%04x", qports->entry_length); in qeth_bridgeport_query_ports_cb()
1781 int qeth_bridgeport_query_ports(struct qeth_card *card, in qeth_bridgeport_query_ports() argument
1796 QETH_CARD_TEXT(card, 2, "brqports"); in qeth_bridgeport_query_ports()
1797 if (!(card->options.sbp.supported_funcs & IPA_SBP_QUERY_BRIDGE_PORTS)) in qeth_bridgeport_query_ports()
1799 iob = qeth_get_ipacmd_buffer(card, IPA_CMD_SETBRIDGEPORT, 0); in qeth_bridgeport_query_ports()
1809 rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_ports_cb, in qeth_bridgeport_query_ports()
1813 rc = qeth_bridgeport_makerc(card, &cbctl, IPA_SBP_QUERY_BRIDGE_PORTS); in qeth_bridgeport_query_ports()
1818 static int qeth_bridgeport_set_cb(struct qeth_card *card, in qeth_bridgeport_set_cb() argument
1823 QETH_CARD_TEXT(card, 2, "brsetrcb"); in qeth_bridgeport_set_cb()
1836 int qeth_bridgeport_setrole(struct qeth_card *card, enum qeth_sbp_roles role) in qeth_bridgeport_setrole() argument
1845 QETH_CARD_TEXT(card, 2, "brsetrol"); in qeth_bridgeport_setrole()
1865 if (!(card->options.sbp.supported_funcs & setcmd)) in qeth_bridgeport_setrole()
1867 iob = qeth_get_ipacmd_buffer(card, IPA_CMD_SETBRIDGEPORT, 0); in qeth_bridgeport_setrole()
1875 rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_set_cb, in qeth_bridgeport_setrole()
1879 rc = qeth_bridgeport_makerc(card, &cbctl, setcmd); in qeth_bridgeport_setrole()
1889 static int qeth_anset_makerc(struct qeth_card *card, int pnso_rc, u16 response) in qeth_anset_makerc() argument
1902 dev_err(&card->gdev->dev, in qeth_anset_makerc()
1915 QETH_CARD_TEXT_(card, 2, "SBPp%04x", pnso_rc); in qeth_anset_makerc()
1916 QETH_CARD_TEXT_(card, 2, "SBPr%04x", response); in qeth_anset_makerc()
1924 struct qeth_card *card = (struct qeth_card *)priv; in qeth_bridgeport_an_set_cb() local
1937 qeth_bridge_emit_host_event(card, anev_reg_unreg, code, in qeth_bridgeport_an_set_cb()
1952 int qeth_bridgeport_an_set(struct qeth_card *card, int enable) in qeth_bridgeport_an_set() argument
1959 if (!card) in qeth_bridgeport_an_set()
1961 if (!card->options.sbp.supported_funcs) in qeth_bridgeport_an_set()
1963 ddev = CARD_DDEV(card); in qeth_bridgeport_an_set()
1967 qeth_bridge_emit_host_event(card, anev_reset, 0, NULL, NULL); in qeth_bridgeport_an_set()
1969 qeth_bridgeport_an_set_cb, card); in qeth_bridgeport_an_set()
1972 return qeth_anset_makerc(card, rc, response); in qeth_bridgeport_an_set()