417 NULL, /* bus operations */
418 ddi_power /* power management */
419 };
420
421 #define FCIP_VERSION "1.61"
422 #define FCIP_NAME "SunFC FCIP v" FCIP_VERSION
423
424 #define PORT_DRIVER "fp"
425
426 #define GETSTRUCT(struct, number) \
427 ((struct *)kmem_zalloc((size_t)(sizeof (struct) * (number)), \
428 KM_SLEEP))
429
430 static struct modldrv modldrv = {
431 &mod_driverops, /* Type of module - driver */
432 FCIP_NAME, /* Name of module */
433 &fcip_ops, /* driver ops */
434 };
435
436 static struct modlinkage modlinkage = {
437 MODREV_1, (void *)&modldrv, NULL
438 };
439
440
441 /*
442 * Now for some global statics
443 */
444 static uint32_t fcip_ub_nbufs = FCIP_UB_NBUFS;
445 static uint32_t fcip_ub_size = FCIP_UB_SIZE;
446 static int fcip_pkt_ttl_ticks = FCIP_PKT_TTL;
447 static int fcip_tick_incr = 1;
448 static int fcip_wait_cmds = FCIP_WAIT_CMDS;
449 static int fcip_num_attaching = 0;
450 static int fcip_port_attach_pending = 0;
451 static int fcip_create_nodes_on_demand = 1; /* keep it similar to fcp */
452 static int fcip_cache_on_arp_broadcast = 0;
453 static int fcip_farp_supported = 0;
454 static int fcip_minor_node_created = 0;
455
456 /*
457 * Supported FCAs
526 0, /* dl_reserved */
527 0, /* dl_current_state */
528 -2, /* dl_sap_length */
529 DL_CLDLS, /* dl_service_mode */
530 0, /* dl_qos_length */
531 0, /* dl_qos_offset */
532 0, /* dl_range_length */
533 0, /* dl_range_offset */
534 DL_STYLE2, /* dl_provider_style */
535 sizeof (dl_info_ack_t), /* dl_addr_offset */
536 DL_VERSION_2, /* dl_version */
537 ETHERADDRL, /* dl_brdcst_addr_length */
538 sizeof (dl_info_ack_t) + FCIPADDRL, /* dl_brdcst_addr_offset */
539 0 /* dl_growth */
540 };
541
542 /*
543 * FCIP broadcast address definition.
544 */
545 static struct ether_addr fcipnhbroadcastaddr = {
546 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
547 };
548
549 /*
550 * RFC2625 requires the broadcast ARP address in the ARP data payload to
551 * be set to 0x00 00 00 00 00 00 for ARP broadcast packets
552 */
553 static struct ether_addr fcip_arpbroadcast_addr = {
554 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
555 };
556
557
558 #define ether_bcopy(src, dest) bcopy((src), (dest), ETHERADDRL);
559
560 /*
561 * global kernel locks
562 */
563 static kcondvar_t fcip_global_cv;
564 static kmutex_t fcip_global_mutex;
565
566 /*
567 * fctl external defines
568 */
569 extern int fc_ulp_add(fc_ulp_modinfo_t *);
570
571 /*
572 * fctl data structures
573 */
574
|
417 NULL, /* bus operations */
418 ddi_power /* power management */
419 };
420
421 #define FCIP_VERSION "1.61"
422 #define FCIP_NAME "SunFC FCIP v" FCIP_VERSION
423
424 #define PORT_DRIVER "fp"
425
426 #define GETSTRUCT(struct, number) \
427 ((struct *)kmem_zalloc((size_t)(sizeof (struct) * (number)), \
428 KM_SLEEP))
429
430 static struct modldrv modldrv = {
431 &mod_driverops, /* Type of module - driver */
432 FCIP_NAME, /* Name of module */
433 &fcip_ops, /* driver ops */
434 };
435
436 static struct modlinkage modlinkage = {
437 MODREV_1, { (void *)&modldrv, NULL }
438 };
439
440
441 /*
442 * Now for some global statics
443 */
444 static uint32_t fcip_ub_nbufs = FCIP_UB_NBUFS;
445 static uint32_t fcip_ub_size = FCIP_UB_SIZE;
446 static int fcip_pkt_ttl_ticks = FCIP_PKT_TTL;
447 static int fcip_tick_incr = 1;
448 static int fcip_wait_cmds = FCIP_WAIT_CMDS;
449 static int fcip_num_attaching = 0;
450 static int fcip_port_attach_pending = 0;
451 static int fcip_create_nodes_on_demand = 1; /* keep it similar to fcp */
452 static int fcip_cache_on_arp_broadcast = 0;
453 static int fcip_farp_supported = 0;
454 static int fcip_minor_node_created = 0;
455
456 /*
457 * Supported FCAs
526 0, /* dl_reserved */
527 0, /* dl_current_state */
528 -2, /* dl_sap_length */
529 DL_CLDLS, /* dl_service_mode */
530 0, /* dl_qos_length */
531 0, /* dl_qos_offset */
532 0, /* dl_range_length */
533 0, /* dl_range_offset */
534 DL_STYLE2, /* dl_provider_style */
535 sizeof (dl_info_ack_t), /* dl_addr_offset */
536 DL_VERSION_2, /* dl_version */
537 ETHERADDRL, /* dl_brdcst_addr_length */
538 sizeof (dl_info_ack_t) + FCIPADDRL, /* dl_brdcst_addr_offset */
539 0 /* dl_growth */
540 };
541
542 /*
543 * FCIP broadcast address definition.
544 */
545 static struct ether_addr fcipnhbroadcastaddr = {
546 { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
547 };
548
549 /*
550 * RFC2625 requires the broadcast ARP address in the ARP data payload to
551 * be set to 0x00 00 00 00 00 00 for ARP broadcast packets
552 */
553 static struct ether_addr fcip_arpbroadcast_addr = {
554 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
555 };
556
557
558 #define ether_bcopy(src, dest) bcopy((src), (dest), ETHERADDRL);
559
560 /*
561 * global kernel locks
562 */
563 static kcondvar_t fcip_global_cv;
564 static kmutex_t fcip_global_mutex;
565
566 /*
567 * fctl external defines
568 */
569 extern int fc_ulp_add(fc_ulp_modinfo_t *);
570
571 /*
572 * fctl data structures
573 */
574
|