Indicando alterações nos parâmetros de QoS do NDIS remoto
O driver de miniporto que dá suporte à QoS (Qualidade de Serviço) do NDIS emite um NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status indicação quando seus parâmetros de QoS NDIS remotos são recebidos de um par pela primeira vez ou alterados posteriormente. O driver de miniporto recebe esses parâmetros de QoS de um par remoto por meio do protocolo DCBX (Data Center Bridging Exchange) do IEEE 802.1Qaz.
O driver de miniporte deve seguir estas diretrizes para emitir uma indicação de status NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE:
Se o driver de miniporto não tiver recebido um quadro DCBX de um par remoto, ele não deverá emitir um NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status indicação.
O driver de miniporto deve emitir um NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status indicação depois de receber pela primeira vez as configurações de QoS de um par remoto.
Nota O driver de miniporto deve emitir essa status indicação se o adaptador de rede recebe configurações remotas de parâmetro QoS de um par antes que os parâmetros de QoS locais do driver sejam definidos. Para obter mais informações, consulte Definindo parâmetros de QoS do NDIS local.
Após essa indicação de status inicial, o driver de miniporto só deve emitir uma indicação de status NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE quando determina uma alteração nas configurações de QoS no par remoto.
Nota Os drivers de miniporto não devem emitir um NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status indicação se não houve alterações nos parâmetros remotos de QoS do NDIS. Se o driver fizer esse tipo de indicação de status, o NDIS poderá não passar a indicação para drivers sobressociantes.
Nota O driver de miniporto deve emitir NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status indicações se seus recursos de QoS NDIS estiverem habilitados no momento. Começando com Windows Server 2012, essas indicações permitem que os administradores do sistema exibam as configurações de DCB (Ponte de Data Center e QoS do NDIS), independentemente de o recurso do servidor Microsoft DCB estar instalado.
Diretrizes para emitir a indicação de status de NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE
O driver de miniporte segue estas etapas quando emite a indicação de status NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE:
O driver de miniporto aloca um buffer grande o suficiente para conter o seguinte:
Uma estrutura NDIS_QOS_PARAMETERS que contém as configurações de QoS do NDIS, bem como parâmetros operacionais globais para as classes de tráfego QoS do NDIS.
Uma matriz de estruturas de NDIS_QOS_CLASSIFICATION_ELEMENT . Cada uma dessas estruturas especifica uma classificação de tráfego conforme definido por um padrão de dados de pacote (condição) e nível de prioridade do IEEE 802.1p associado (ação). Se o adaptador de rede encontrar um padrão no pacote de transmissão ou saída que corresponde a uma condição, ele atribuirá o nível de prioridade associado ao pacote. O adaptador também aplica as outras políticas de QoS do NDIS ao pacote com base no nível de prioridade.
O miniporto inicializa a estrutura NDIS_QOS_PARAMETERS com os parâmetros remotos de QoS do NDIS. O driver deve fornecer o conjunto completo de parâmetros remotos que foram recebidos do quadro DCBX enviado pelo par remoto.
Quando o driver de miniporto inicializa o membro Header , ele define o membro Type de Header como NDIS_OBJECT_TYPE_QOS_PARAMETERS. O driver de miniporte define o membro Revision de Header como NDIS_QOS_PARAMETERS_REVISION_1 e o membro Size como NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1.
O driver de miniporto define os sinalizadores de NDIS_QOS_PARAMETERS_Xxx_CHANGED apropriados se os membros correspondentes contiverem dados que foram alterados desde que o driver de miniporto emitiu anteriormente uma indicação status NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE.
Nota Definir esses sinalizadores NDIS_QOS_PARAMETERS_Xxx_CHANGED é opcional. O NDIS sempre pressupõe que os membros do NDIS_QOS_PARAMETERS sejam especificados mesmo que não tenham sido alterados em relação ao NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE anterior status indicação.
O driver de miniporto define o membro Flags para especificar status informações para os dados contidos nos membros da estrutura NDIS_QOS_PARAMETERS.
Por exemplo, o driver de miniporto define os sinalizadores NDIS_QOS_PARAMETERS_Xxx_CHANGED apropriados no membro Flags para os membros que contêm dados alterados desde que o driver de miniporto emitiu anteriormente uma indicação de status NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE.
Para obter mais informações sobre como definir o membro Flags, consulte Diretrizes para definir o membro flags.
O driver de miniporto inicializa uma estrutura NDIS_QOS_CLASSIFICATION_ELEMENT para cada classificação de tráfego dos parâmetros remotos de QoS do NDIS. O driver adiciona esses elementos após o final da estrutura de NDIS_QOS_PARAMETERS no buffer.
Nota O driver de miniporte não deve definir o sinalizador NDIS_QOS_CLASSIFICATION_ENFORCED_BY_MINIPORT no membro Flags de nenhuma estrutura de NDIS_QOS_CLASSIFICATION_ELEMENT .
O driver define o membro NumClassificationElements da estrutura NDIS_QOS_PARAMETERS para o número de elementos de classificação na matriz. O driver define o membro FirstClassificationElementOffset como o deslocamento de bytes do primeiro elemento desde o início do buffer. O driver também define o membro ClassificationElementSize como o comprimento, em bytes, de cada elemento na matriz.
Nota A partir do NDIS 6.30, o driver de miniporto deve definir o membro ClassificationElementSize como
sizeof(NDIS_QOS_CLASSIFICATION_ELEMENT
).O driver de miniporta inicializa uma estrutura NDIS_STATUS_INDICATION para a indicação de status da seguinte maneira:
O membro StatusCode deve ser definido como NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE.
O membro StatusBuffer deve ser definido como o ponteiro para o buffer que contém os parâmetros de QoS do NDIS remotos.
O membro StatusBufferSize deve ser definido como o comprimento, em bytes, do buffer.
O driver de miniporte emite a indicação status chamando NdisMIndicateStatusEx. O driver deve passar um ponteiro para a estrutura NDIS_STATUS_INDICATION para o parâmetro StatusIndication .
Diretrizes para definir o membro flags
O driver de miniporto define os seguintes sinalizadores no membro Flags da estrutura NDIS_QOS_PARAMETERS para especificar quais parâmetros operacionais de QoS do NDIS foram configurados ou alterados no adaptador de rede:
NDIS_QOS_PARAMETERS_ETS_CONFIGURED
Se esse sinalizador estiver definido, o driver de miniporto configurou o adaptador de rede com os parâmetros ETS contidos nos seguintes membros:
NumTrafficClasses
PriorityAssignmentTable
TcBandwidthAssignmentTable
TsaAssignmentTable
Nota O driver de miniporto deve dar suporte ao ETS para dar suporte ao NDIS QoS para DCB. No entanto, a configuração desse sinalizador não especifica se o adaptador de rede dá suporte ao ETS. Em vez disso, a configuração desse sinalizador especifica apenas se os parâmetros ETS estão configurados no adaptador de rede.
NDIS_QOS_PARAMETERS_ETS_CHANGED
Se esse sinalizador estiver definido, um ou mais parâmetros ETS serão alterados nos seguintes membros:
NumTrafficClasses
PriorityAssignmentTable
TcBandwidthAssignmentTable
TsaAssignmentTable
NDIS_QOS_PARAMETERS_PFC_CONFIGURED
Se esse sinalizador estiver definido, o driver de miniporto definirá o adaptador de rede com as configurações PFC contidas no membro PfcEnable .
Nota O driver de miniporto deve dar suporte ao PFC para dar suporte ao QoS do NDIS para DCB. A configuração desse sinalizador não especifica se o adaptador de rede dá suporte ao PFC. Em vez disso, a configuração desse sinalizador especifica apenas se os parâmetros PFC estão habilitados no adaptador de rede.
NDIS_QOS_PARAMETERS_PFC_CHANGED
Se esse sinalizador estiver definido, uma ou mais configurações de PFC serão alteradas no membro PfcEnable .
NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED
Se esse sinalizador estiver definido, o driver de miniporto configurou o adaptador de rede com os parâmetros de classificações de tráfego QoS especificados nos seguintes membros:
NumClassificationElements
ClassificationElementSize
FirstClassificationElementOffset
NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED
Se esse sinalizador estiver definido, um ou mais parâmetros de classificação de tráfego QoS serão alterados nos seguintes membros:
NumClassificationElements
ClassificationElementSize
FirstClassificationElementOffset
Nota Os sinalizadores NDIS_QOS_PARAMETERS_Xxx_CONFIGURED deverão ser definidos se a estrutura NDIS_QOS_PARAMETERS contiver configurações de parâmetro QoS do NDIS. O driver de miniporte deve definir esses sinalizadores independentemente de as configurações terem sido alteradas. No entanto, o driver só deve definir os sinalizadores NDIS_QOS_PARAMETERS_Xxx_CHANGED para as configurações que foram alteradas.
Diretrizes para indicar parâmetros de QoS NDIS remotos inválidos
O driver de miniporte deverá invalidar seus parâmetros de QoS remotos se as seguintes condições forem verdadeiras:
O valor de TTL (vida útil) expira para os parâmetros de QoS remotos.
Nota O DCBX é transportado pelo protocolo LLDP (Protocolo de Descoberta de Camada de Link), conforme especificado no padrão IEEE 802.1AB-2005. Os quadros LLDP sempre contêm um campo TTL.
Outro par de link de dados envia um quadro DCBX antes que o valor TTL expire. Esse cenário é conhecido como uma condição de vários pares . O DCBX exige que o driver de miniporte mantenha apenas um conjunto de parâmetros de QoS remotos que foram recebidos de um único par de link de dados.
Quando ocorre uma condição de vários pares, o driver de miniporto deve invalidar todos os parâmetros de QoS remotos até que o valor TTL expire para todos os quadros DCBX recebidos.
Quando o driver de miniporto invalida seus parâmetros de QoS NDIS remotos, ele deve seguir estas etapas quando emitir o NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE status indicação:
Como o driver de miniporto não está relatando parâmetros de QoS NDIS remotos válidos, ele deve primeiro preencher uma estrutura NDIS_QOS_PARAMETERS com zeros.
Quando o driver de miniporto inicializa o membro Header dessa estrutura, ele define o membro Type de Header como NDIS_OBJECT_TYPE_QOS_PARAMETERS. O driver de miniporte define o membro Revision de Header como NDIS_QOS_PARAMETERS_REVISION_1 e o membro Size como NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1.
O driver de miniporto define os sinalizadores NDIS_QOS_PARAMETERS_Xxx_CHANGED apropriados no membro Flags .
O driver de miniporta inicializa uma estrutura NDIS_STATUS_INDICATION para a indicação de status da seguinte maneira:
O membro StatusCode deve ser definido como NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE.
O membro StatusBuffer deve ser definido como o endereço da estrutura NDIS_QOS_PARAMETERS .
O membro StatusBufferSize deve ser definido como
sizeof(NDIS_QOS_PARAMETERS)
.
O driver de miniporte emite a indicação status chamando NdisMIndicateStatusEx. O driver deve passar um ponteiro para a estrutura NDIS_STATUS_INDICATION para o parâmetro StatusIndication .