I know, in theory, how a hardware interrupt works, but how does it specifically function when a NIC receives packets of information? What is happening on a hardware level?
Quando a NIC recebe informações, ela verifica se as condições são atendidas para acionar uma interrupção de hardware. Isso geralmente é feito no firmware no controlador da NIC. Se, por exemplo, uma interrupção de recebimento já foi enviada, mas ainda não foi confirmada, não há motivo para enviar outra.
Se a NIC decidir enviar uma interrupção, o mecanismo real dependerá da interface da NIC e de como ela está configurada. A maneira antiga era realmente mudar a tensão em uma linha de interrupção dedicada. Isso iria para o controlador de interrupção, que normalmente afirmaria alguma outra linha que combinasse várias interrupções. O SO perguntaria então ao controlador de interrupção que as interrupções haviam sido acionadas.
A maneira mais recente é a "mensagem sinalizada interrupções" ( MSI ) onde o NIC basicamente escreve uma palavra específica para um determinado endereço e isso faz com que uma interrupção seja gerada por alguma outra peça de hardware, geralmente o controlador de barramento. Isso permite que um dispositivo tenha mais interrupções e também direcione interrupções para processadores específicos.
How would one properly diagnose whether or not physical damage has occurred in order to avoid what essentially amounted to throwing parts at a problem?
Geralmente é difícil fazer isso e é improvável que a maioria das pessoas tenha experiência suficiente para diagnosticar o problema. O hardware pode falhar de diferentes maneiras e muitas vezes é difícil dizer onde a falha ocorreu. Geralmente, é mais eficiente simplesmente substituir a parte com falha mais provável, verificar se o problema desaparece e, em seguida, repetir. Se houver evidência de um problema de hardware da NIC, tentarei substituir a NIC primeiro.