void ftape_log_vendor_id(void) { int vendor_index; TRACE_FUN(ft_t_flow); ftape_report_vendor_id(&ft_drive_type.vendor_id); vendor_index = lookup_vendor_id(ft_drive_type.vendor_id); if (ft_drive_type.vendor_id == UNKNOWN_VENDOR && ft_drive_type.wake_up == wake_up_colorado) { vendor_index = 0; /* hack to get rid of all this mail */ ft_drive_type.vendor_id = 0; } if (vendor_index < 0) { /* Unknown vendor id, first time opening device. The * drive_type remains set to type found at wakeup * time, this will probably keep the driver operating * for this new vendor. */ TRACE(ft_t_warn, "\n" KERN_INFO "============ unknown vendor id ===========\n" KERN_INFO "A new, yet unsupported tape drive is found\n" KERN_INFO "Please report the following values:\n" KERN_INFO " Vendor id : 0x%04x\n" KERN_INFO " Wakeup method : %s\n" KERN_INFO "And a description of your tape drive\n" KERN_INFO "to "THE_FTAPE_MAINTAINER"\n" KERN_INFO "==========================================", ft_drive_type.vendor_id, methods[ft_drive_type.wake_up].name); ft_drive_type.speed = 0; /* unknown */ } else { ft_drive_type.name = vendors[vendor_index].name; ft_drive_type.speed = vendors[vendor_index].speed; TRACE(ft_t_info, "tape drive type: %s", ft_drive_type.name); /* scan all methods for this vendor_id in table */ while(ft_drive_type.wake_up != vendors[vendor_index].wake_up) { if (vendor_index < NR_ITEMS(vendors) - 1 && vendors[vendor_index + 1].vendor_id == ft_drive_type.vendor_id) { ++vendor_index; } else { break; } } if (ft_drive_type.wake_up != vendors[vendor_index].wake_up) { TRACE(ft_t_warn, "\n" KERN_INFO "==========================================\n" KERN_INFO "wakeup type mismatch:\n" KERN_INFO "found: %s, expected: %s\n" KERN_INFO "please report this to "THE_FTAPE_MAINTAINER"\n" KERN_INFO "==========================================", methods[ft_drive_type.wake_up].name, methods[vendors[vendor_index].wake_up].name); } } TRACE_EXIT; }
void ftape_log_vendor_id(void) { TRACE_FUN(5, "ftape_log_vendor_id"); int vendor_index; ftape_report_vendor_id(&drive_type.vendor_id); vendor_index = lookup_vendor_id(drive_type.vendor_id); if (drive_type.vendor_id == UNKNOWN_VENDOR && drive_type.wake_up == wake_up_colorado) { vendor_index = 0; drive_type.vendor_id = 0; /* hack to get rid of all this mail */ } if (vendor_index < 0) { /* Unknown vendor id, first time opening device. * The drive_type remains set to type found at wakeup time, this * will probably keep the driver operating for this new vendor. */ TRACE(-1, "============ unknown vendor id ==========="); TRACE(-1, "A new, yet unsupported tape drive is found"); TRACE(-1, "Please report the following values:"); TRACEx1(-1, " Vendor id : 0x%04x", drive_type.vendor_id); TRACEx1(-1, " Wakeup method : %s", methods[drive_type.wake_up].name); TRACE(-1, "And a description of your tape drive to:"); TRACE(-1, "Claus Heine <*****@*****.**>"); TRACE(-1, "=========================================="); drive_type.speed = 500; /* deci-ips: very safe value */ } else { drive_type.name = vendors[vendor_index].name; drive_type.speed = vendors[vendor_index].speed; TRACEx1(3, "tape drive type: %s", drive_type.name); /* scan all methods for this vendor_id in table */ while (drive_type.wake_up != vendors[vendor_index].wake_up) { if (vendor_index < NR_ITEMS(vendors) - 1 && vendors[vendor_index + 1].vendor_id == drive_type.vendor_id) { ++vendor_index; } else { break; } } if (drive_type.wake_up != vendors[vendor_index].wake_up) { TRACE(-1, "=========================================="); TRACE(-1, "wakeup type mismatch:"); TRACEx2(-1, "found: %s, expected: %s", methods[drive_type.wake_up].name, methods[vendors[vendor_index].wake_up].name); TRACE(-1, "please report this to <*****@*****.**>"); TRACE(-1, "=========================================="); } } TRACE_EXIT; }