Comunicación backchannel desde un controlador de miniport de VF
Un miniportador de una función virtual PCI Express (PCIe) (VF) se comunica con el controlador miniporte de la función física PCIe (PF) para leer o escribir datos de un bloque de configuración de VF.
Un bloque de configuración de VF se usa para la comunicación backchannel entre los controladores de miniporte PF y VF. El proveedor de hardware independiente (IHV) puede definir uno o varios bloques de configuración de VF para el dispositivo. Cada bloque de configuración de VF tiene un formato, longitud y identificador de bloque definidos por IHV. Por ejemplo, el IHV puede definir un bloque de configuración de VF que se puede usar para la dirección de control de acceso multimedia (MAC) del controlador de miniporte VF. Se puede usar otro bloque de configuración de VF para la configuración actual de VF y puerto virtual (VPort).
Nota Los datos de cada bloque de configuración de VF solo los usan los controladores de miniporte PF y VF. El formato y el contenido de estos datos son opacos para los componentes del sistema operativo Windows.
El IHV asigna un identificador único a cada bloque de configuración de VF. Esto permite que el controlador de miniporte VF consulte o establezca información sobre bloques de configuración de VF específicos.
Los controladores de minipuerto de VF inician la operación de lectura o escritura en un bloque de configuración de VF especificado a través de las siguientes funciones:
NdisMReadConfigBlock, que lee los datos de un bloque de configuración de VF especificado. Cuando el controlador de miniporte VF llama a esta función, especifica el identificador de bloque y la longitud de los datos que se van a leer. El controlador también pasa un puntero al búfer que contendrá los datos solicitados.
NdisMWriteConfigBlock, que escribe datos en un bloque de configuración de VF especificado. Cuando el controlador de miniporte VF llama a esta función, especifica el identificador de bloque y la longitud de los datos que se van a escribir. El controlador también pasa un puntero al búfer desde el que se van a escribir los datos.
El controlador de minipuerto PF administra el acceso al bloque de configuración de VF especificado de las siguientes maneras:
Cuando el controlador de miniporte VF llama a NdisMReadConfigBlock, NDIS emite una solicitud de método de identificador de objeto (OID) de OID_SRIOV_READ_VF_CONFIG_BLOCK al controlador de miniporte PF. Esta solicitud de OID contiene los datos de parámetro que pasó el controlador de miniporte VF en la llamada de función.
El controlador de miniporte PF realiza la operación de lectura y devuelve los datos solicitados cuando el controlador completa la solicitud OID. Una vez completada la solicitud OID, NDIS vuelve de la llamada a NdisMReadConfigBlock.
Cuando el controlador de miniporte VF llama a NdisMWriteConfigBlock, NDIS emite una solicitud de método OID de OID_SRIOV_WRITE_VF_CONFIG_BLOCK al controlador de minipuerto PF. Esta solicitud de OID contiene los datos de parámetro que pasó el controlador de miniporte VF en la llamada de función.
El controlador de miniporte PF realiza la operación de escritura y completa la solicitud OID. Una vez completada la solicitud OID, NDIS vuelve de la llamada a NdisMWriteConfigBlock.
En la ilustración siguiente se muestra el proceso implicado en la lectura y escritura de bloques de configuración de VF a través de la interfaz backchannel sr-IOV.