BRPI0722378A2 - gerencimento de memória para controle de acesso à mìdia de alta velocidade - Google Patents

gerencimento de memória para controle de acesso à mìdia de alta velocidade Download PDF

Info

Publication number
BRPI0722378A2
BRPI0722378A2 BRPI0722378-1A BRPI0722378A BRPI0722378A2 BR PI0722378 A2 BRPI0722378 A2 BR PI0722378A2 BR PI0722378 A BRPI0722378 A BR PI0722378A BR PI0722378 A2 BRPI0722378 A2 BR PI0722378A2
Authority
BR
Brazil
Prior art keywords
packet
memory
packets
mode
pointer
Prior art date
Application number
BRPI0722378-1A
Other languages
English (en)
Inventor
Subrahmanyam Dravida
Sriram Narayan
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0722378A2 publication Critical patent/BRPI0722378A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W36/00Hand-off or reselection arrangements
    • H04W36/02Buffering or recovering information during reselection ; Modification of the traffic flow during hand-off
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W36/00Hand-off or reselection arrangements
    • H04W36/24Reselection being triggered by specific parameters
    • H04W36/26Reselection being triggered by specific parameters by agreed or negotiated communication parameters
    • H04W36/28Reselection being triggered by specific parameters by agreed or negotiated communication parameters involving a plurality of connections, e.g. multi-call or multi-bearer connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/20Manipulation of established connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/08Access point devices

Abstract

GERENCIAMENTO DE MEMóRIA PARA CONTROLE DE ACESSO A MìDIA DE ALTA VELOCIDADE Os aspectos aqui descritos atendem a necessidade na área por gerenciamento de memória para controle de acesso a mídia de alta velocidade. Um armazenador de pacotes pode armazenar pacotes com uma primeira estrutura de dados, compreendendo o comprimento do pacote, número de seqUência e um ponteiro para uma segunda estrutura' de dados. Dados de pacote podem ser armazenados em uma lista encadeada de uma ou mais segundas estruturas de dados. Filas de transmissão e recepção podem ser formadas usando arranjos ou listas interligadas das primeiras estruturas de dados. Os locais da memória para armazenar as primeiras e segundas estruturas de dados podem ser mantidos em listas indicando locais livres para os respectivos tipos de estruturas de dados. Uma arquitetura de memória flexivel é descrita onde duas configurações podem ser selecionadas. Em uma primeira configuração, uma primeira memória compreende parâmetros por fluxo para múltiplos fluxos, e uma segunda memória compreende um armazenador de pacotes. Em uma segunda configuração, a primeira memória compreende ponteiros por fluxo para parâmetros por fluxo na segunda memória. O armazenador de pacotes reside em uma terceira memória. Diversos outros aspectos são também apresentados.

Description

"GERENCIAMENTO DE MEMÓRIA PARA CONTROLE DE ACESSO A MÍDIA DE ALTA VELOCIDADE" - PEDIDO DIVIDO DO PI0709704-2, DEPOSITADO EM 30/03/2007
Campo da Invenção
A presente invenção está de um modo geral relacionada a rádio comunicações e a controle de acesso a midia de alta velocidade.
Descrição da Técnica Anterior
Sistemas de comunicação sem fio estão amplamente implantados para prover vários tipos de comunicação, tais como de voz e dados. Um típico sistema, ou rede, de dados sem fio provê a múltiplos usuários o acesso a um ou mais recursos compartilhados. Um sistema pode usar uma diversidade de técnicas de múltiplo acesso, tais como a de multiplexação por divisão de freqüência (FDM), multiplexação por divisão de tempo (TDM), multiplexação por divisão de código (CDM), multiplexação por divisão de freqüência ortogonal (OFDM) e outras.
Os exemplos de redes sem fio incluem os sistemas de dados de base celular. 0 que se segue constitui vários exemplos de tais: (1) a TIA/EIA/IS-95B, Mobile Station - Base Station Compatibility Standard for Dual Mode Wideband Spread Spectrum Cellular System (a norma IS-95), (2) a norma proposta por um consórcio denominado "3rd Generation Partnership Project" (3GPP) e incorporada em um conjunto de documentos incluindo os documentos N— 3G TS 25.211, 3G TS 25.212, 3G TS 25.213 e 3G TS 25.214 (a norma W-CDMA), (3) a norma proposta por um consórcio denominado "3rd Generation Partnership Project 2" (3GPP2) e incorporada na "TR-45.5 Physical Layer Standard for CDMA 2000 Spread Spectrum Systems" (a norma IS-2000) e (4) o sistema alta taxa de dados (HDR) que está de acordo com a norma TIA/EIA/IS-856 (a norma IS-856. Outros exemplos de sistemas sem fio incluem as redes de área local sem fio (WLANs) , tais como as das normas IEEE 802.11 (isto é, 802.11a, b ou g) . Podem ser obtidas melhorias em tais redes através da implementação de uma WLAN de múltiplas-entradas e múltiplas-saidas (MIMO), incluindo técnicas de modulação por multiplexação por divisão de freqüência ortogonal (OFDM). A IEEE 802.Ile foi introduzida para reduzir as deficiências de qualidade de serviço (QoS) das normas 802.11 anteriores.
Estão sendo agora introduzidas especificações 802.11 que definem redes sem fio de alta velocidade e protocolos MAC para operação com as mesmas. As normas 802.11 anteriores diziam respeito principalmente a aplicativos do tipo de transferência de dados, navegação e correio eletrônico. A 802.11(n) se destina a servir a aplicativos de distribuição multimídia que demandam elevada capacidade de transmissão, robustez de desempenho e qualidade de serviço. Acompanha tais demandas a necessidade de implementações e técnicas eficientes para o provimento de qualidade de serviço e capacidade operacional em alta velocidade. Existe, portanto, uma demanda na área por um eficiente controle de acesso a mídia de alta velocidade.
US6,832,261 descreve um método e um aparelho para distribuir re-sequênciamento e remontagem de pacotes subdivididos.
W096/12235 descreve um sistema e um método para processamento de sinal de dados e um sistema de comunicação compreendendo um sistema de processamento de dados de sinal.
W095/14269 descreve uma interface de alto desempenho de hospedeiro para redes portando tráfego sem conexão.
GB 2 429 080 descreve um adaptador sem fio combinato de inicialização (boot) dual. W003/043303 descreve reconfiguração de componente progrmáveis em um equipamento eletrônico.
W02 005/043275 descreve uma inicialização de FPGA sobre uma rede.
US 2003/016686 descreve um gerenciador de tráfego para porta de comutação de rede.
US 2005/147034 descreve um método de realizar programação de lista de rodízio (round Robin) ponderada utilizando uma lista interligada dinâmica e estrutura para implantar a mesma.
US 2005/175014 descreve uma programação de rodízio (round Robin) (HPRR) priorizada hierarquicamente.
Resumo da Invenção
Aspectos aqui descritos como mostrado nas reivindicações em anexo atendem à demanda na área por um eficiente controle de acesso a mídia de alta velocidade.
De acordo com um aspecto, é descrito um equipamento que inclui uma primeira estrutura de dados associada a um pacote, uma segunda estrutura de dados compreendendo dados provenientes do pacote associado, e em que a primeira estrutura de dados compreende um campo de comprimento indicando o comprimento do pacote associado, um campo de número de seqüência indicando o número de seqüência do pacote associado, um campo de ponteiro de segunda estrutura de dados indicando a localização, em um armazenador (buffer) de pacotes da segunda estrutura de dados.
De acordo com outro aspecto, uma primeira estrutura de dados é descrita, a qual pode ser operada com uma segunda estrutura de dados compreendendo dados provenientes de um pacote associado e'que inclui um campo de comprimento indicando o comprimento do pacote associado, e um campo de ponteiro armazenando uma localização na memória da segunda estrutura de dados. De acordo com outro aspecto, é descrito um método para armazenar, em uma primeira estrutura de dados em um armazenador de pacotes, o comprimento de um primeiro pacote, o número de seqüência do pacote e uma segunda localização no armazenador de pacotes de uma segunda estrutura de dados no armazenador de pacotes, e armazenar dados provenientes do primeiro pacote na segunda estrutura de dados ident ificada pela localização no armazenador do segundo pacote armazenado.
De acordo com outro aspecto, é descrito um método para armazenar uma pluralidade de pacotes em um armazenador de pacotes, cada pacote sendo armazenado com uma primeira estrutura de dados associada e uma ou mais segundas estruturas de dados associadas, as uma ou mais segundas estruturas de dados sendo formadas em uma lista interligada, em que cada primeira estrutura de dados compreende um campo de comprimento indicando o comprimento do pacote associado, um campo de número de seqüência indicando o número de seqüência do pacote associado, e um campo de ponteiro de uma segunda estrutura de dados indicando a localização em um armazenador de pacotes da primeira dentre as uma ou mais segunda estruturas de dados, e em que cada segunda estrutura de dados compreende dados provenientes do pacote associado, e um campo de ponteiro de próxima segunda estrutura de dados indicando a próxima segunda estrutura na respectiva lista interligada, caso alguma existir.
De acordo com outro aspecto, é descrito um equipamento que inclui mecanismos para armazenar, em uma primeira estrutura de dados em um armazenador de pacotes, o comprimento de um primeiro pacote, o número de seqüência do pacote e uma segunda localização no armazenador de pacotes de uma segunda estrutura de dados no armazenador de pacotes, e mecanismos para armazenar dados provenientes do primeiro pacote na segunda estrutura de dados identificada pela localização no armazenador do segundo pacote armazenado.
De acordo com outro aspecto, é descrito um equipamento que inclui uma primeira estrutura de dados associada a um pacote, e uma ou mais segundas estruturas de dados compreendendo dados provenientes do pacote associado; e em que a primeira estrutura de dados compreende um campo de comprimento que indica o comprimento do pacote associado, um campo de número de seqüência indicando o número de seqüência do pacote associado, e um campo de ponteiro de segunda estrutura de dados indicando a localização, em um armazenador de pacotes, de uma dentre as segundas estruturas de dados; e mecanismos para armazenar o pacote em uma ou mais dentre as segundas estruturas de dados.
De acordo com outro aspecto, é descrito um equipamento que inclui uma primeira memória, configurada em um primeiro modo para armazenar um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação; e configurada em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao respectivo fluxo de comunicação; uma segunda memória, configurada no primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação, e configurada no segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenado na localização indicada pelo ponteiro associado ao respectivo fluxo de comunicação; uma interface de memória operável com uma terceira memória, configurada no segundo modo para operar para o armazenamento de pacotes para cada um dentre a pluralidade de fluxos de comunicação; e um processador que seleciona um modo selecionado como o primeiro modo ou o segundo modo, configurando a primeira memória de acordo com o modo selecionado, configurando a segunda memória de acordo com o modo selecionado, e configurando a interface de memória de acordo com o modo selecionado.
De acordo com outro aspecto, é descrito um dispositivo de comunicação sem fio, compreendendo um primeiro circuito integrado, compreendendo uma primeira memória, configurada em um primeiro modo para armazenar um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação, e configurada em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao respectivo fluxo de comunicação; uma segunda memória, configurada no primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação, e configurada no segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenado na localização indicada pelo ponteiro associado ao respectivo fluxo de comunicação; uma interface de memória operável com uma terceira memória, configurada no segundo modo para ser operativa para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação; e um processador selecionando um modo selecionado como o primeiro modo ou o segundo modo, configurando a primeira memória de acordo com o modo selecionado, configurando a segunda memória de acordo com o modo selecionado, e configurando a interface de memória de acordo com o modo selecionado; e um segundo circuito integrado compreendendo uma terceira memória armazenando pacotes para cada um dentre a pluralidade de fluxos de comunicação, acoplada à interface de memória do primeiro circuito integrado. De acordo com outro aspecto, é descrito um dispositivo de comunicação sem fio que inclui uma primeira memória armazenando um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação; e uma segunda memória armazenando pacotes para cada um dentre a pluralidade de fluxos de comunicação, compreendendo uma primeira estrutura de dados associada a um pacote; e uma segunda estrutura de dados compreendendo dados provenientes do pacote associado; e em que a primeira estrutura de dados compreende um campo de comprimento indicando o comprimento do pacote associado, um campo de número de seqüência indicando o número de seqüência do pacote associado, e um campo de ponteiro de segunda estrutura de dados indicando a localização na segunda memória da segunda estrutura de dados.
De acordo com outro aspecto, é descrito um dispositivo de comunicação sem fio que inclui uma primeira memória armazenando um ponteiro para cada um dentre uma pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao respectivo fluxo de comunicação; e uma segunda memória armazenando uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros estando armazenado na localização indicada pelo ponteiro associado ao respectivo fluxo de comunicação; e uma terceira memória armazenando pacotes para cada um dentre a pluralidade de fluxos de comunicação.
De acordo com outro aspecto, é descrito um equipamento que inclui mecanismos para selecionar um primeiro ou segundo modos, mecanismos para configurar uma primeira memória em um primeiro modo para armazenar um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação, mecanismos para configurar a primeira memória em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao respectivo fluxo de comunicação, mecanismos para configurar uma segunda memória no primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação, mecanismos para configurar a segunda memória no segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenado na localização indicada pelo ponteiro associado ao respectivo fluxo de comunicação; e mecanismos para configurar uma interface de memória operável com uma terceira memória no segundo modo que é operativa para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação.
De acordo com outro aspecto, é descrita uma midia legível por computador operável para realizar seleção um primeiro ou um segundo modos, configurar uma primeira memória em um primeiro modo para armazenar um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação, configurar a primeira memória em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao respectivo fluxo de comunicação, configurar uma segunda memória no primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação, configurar a segunda memória no segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenado na localização indicada pelo ponteiro associado ao respectivo fluxo de comunicação, e configurar uma interface de memória operável uma terceira memória no segundo modo sendo operativa para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação.
Breve Descrição das Figuras
A Figura 1 é um diagrama de blocos geral de um sistema de comunicação sem fio capaz de suportar um número de usuários.
A Figura 2 apresenta aspectos de um dispositivo de comunicação sem fio, que podem ser configurados como um ponto de acesso ou terminal de usuário.
A Figura 3 apresenta uma modalidade de um processador MAC configurado para um terminal de usuário.
A Figura 4 apresenta uma modalidade de um processador MAC configurado para um ponto de acesso.
A Figura 5 apresenta uma modalidade exemplar mais detalhada de um dispositivo de comunicação sem fio.
A Figura 6 apresenta uma modalidade exemplar de um armazenador de pacotes.
A Figura 7 ilustra adicionalmente um armazenador de pacotes exemplar.
A Figura 8 apresenta componentes adicionais que podem ser implementados no interior de um processador MAC.
A Figura 9 apresenta uma modalidade exemplar de um método para gravar pacotes em um armazenador de pacotes e criar filas.
A Figura 10 ilustra uma modalidade exemplar de um hospedeiro para um subsistema de WLAN.
A Figura 11 apresenta uma modalidade exemplar do conteúdo de uma tabela de estado de fluxo TX.
A Figura 12 apresenta uma modalidade exemplar de um método para realizar policiamento de entrada.
A Figura 13 ilustra uma modalidade exemplar de um método para policiamento de entrada.
A Figura 14 apresenta uma modalidade exemplar de um FIFO. A Figura 15 ilustra um processo exemplar para dividir uma MSDU em um ou mais fragmentos.
A Figura 16 apresenta uma configuração conceituai de um árbitro em conjunto com uma ou mais gravações de memória.
A Figura 17 apresenta uma modalidade exemplar de uma parte de um dispositivo de comunicação sem fio configurado para suportar uma pluralidade relativamente grande de filas EDCA usando um conjunto fixo menor de filas EDCA padrão.
A Figura 18 apresenta uma modalidade exemplar ilustrando diversos componentes de um núcleo MAC inferior.
A Figura 19 apresenta uma modalidade exemplar detalhada de uma seção de um processador de núcleo MAC inferior.
A Figura 20 ilustra um intertravamento exemplar.
A Figura 21 apresenta uma modalidade exemplar de uma ID de enlace.
A Figura 22 apresenta componentes adicionais de uma modalidade exemplar de um núcleo MAC inferior.
A Figura 23 apresenta uma modalidade exemplar de FSM de taxa.
A Figura 24 apresenta um exemplo de mecanismo de protocolo de legado.
A Figura 25 apresenta um exemplo de mecanismo de protocolo de legado conectado por enlaces conceituais a uma PHY.
A Figura 26 apresenta uma modalidade exemplar que detalha adicionalmente o processamento MAC de pacotes de transmissão.
A Figura 27 apresenta um formato exemplar de uma a- MPDU.
A Figura 28 apresenta uma modalidade exemplar ilustrando componente de recepção de um núcleo MAC inferior. A Figura 29 apresenta uma modalidade exemplar de uma tabela de hardware configurada para um terminal de usuário.
A Figura 30 apresenta uma modalidade exemplar de uma tabela de hardware configurada para uso em um ponto de acesso ou super estação.
A Figura 31 apresenta uma modalidade exemplar de uma tabela de estado de fluxo RX.
A Figura 32 apresenta uma modalidade exemplar de um método para configurar tabelas de hardware e memória em diversas configurações.
A Figura 33 apresenta uma configuração alternativa para uma parte de um armazenador de pacotes configurado para suportar arranjos de pacotes RX.
A Figura 34 ilustra um exemplo de um esquema de prioridade de ponta a ponta para redes sem fio, incluindo policiamento de entrada e repasse com base em prioridade.
A Figura 35 apresenta uma modalidade exemplar de um método que ilustra a operação de um bloco de decisão de repasse (handoff) e um mecanismo de repasse.
A Figura 36 ilustra uma modalidade exemplar de um método para realizar uma decisão de repasse.
A Figura 37 ilustra uma modalidade exemplar de um método para processamento de um pacote recebido.
A Figura 38 ilustra uma modalidade exemplar de um método para processamento de uma ou mais filas de repasse.
A Figura 39 apresenta uma modalidade exemplar de um método para determinar fluxos disponíveis para repasse.
A Figura 40 ilustra um exemplo de tabela de estado de decisão.
A Figura 41 ilustra uma modalidade exemplar de uma fila de repasse.
A Figura 42 ilustra uma modalidade exemplar de um método para realizar repasse. A Figura 43 ilustra variáveis exemplares usadas para indexar um armazenador de pacotes em uma tabela de estado de repasse.
A Figura 44 apresenta uma modalidade exemplar de um método para responder a uma requisição de confirmação de bloco imediata.
A Figura 45 apresenta uma modalidade exemplar do método para responder a uma confirmação de bloco.
A Figura 4 6 apresenta uma modalidade exemplar de um método para utilizar uma cache de arranjo de nó pingue-pongue em um processo de retransmissão.
A Figura 47 apresenta uma modalidade exemplar de um método para realizar entrega de economia de energia automática não programada.
A Figura 48 ilustra uma modalidade alternativa empregando mais de um processador MAC.
A Figura 49 apresenta uma modalidade exemplar de um dispositivo de comunicação sem fio incluindo dois processadores MAC, incluindo um primeiro processador MAC e um segundo processador MAC incorporados em um microprocessador.
A Figura 50 ilustra aspectos de armazenamento e enfileiramento de pacotes de múltiplos fluxos.
A Figura 51 ilustra aspectos de armazenamento e enfileiramento de pacotes de múltiplos fluxos.
A Figura 52 ilustra aspectos de gerenciamento de memória para controle de acesso a midia de alta velocidade.
A Figura 53 ilustra aspectos de controle de acesso a midia de múltiplos fluxos.
A Figura 54 ilustra aspectos de controle de acesso a midia de múltiplos fluxos.
A Figura 55 ilustra aspectos de multiplexação de múltiplos fluxos para controle de acesso a midia de alta velocidade.
A Figura 56 ilustra aspectos de agregação em um sistema de comunicação de alta velocidade. A Figura 57 ilustra aspectos de caches ocultos que servem como filas em serviço e filas em espera.
A Figura 58 ilustra aspectos de políticas de entrada.
A Figura 59 ilustra aspectos de políticas de entrada.
A Figura 60 ilustra aspectos de políticas de
entrada; e
A Figura 61 ilustra aspectos de controle de acesso a mídia para resposta de baixa latência.
Descrição Detalhada da Invenção
Serão agora descritos vários aspectos, um ou mais dentre os quais podem ser combinados em qualquer modalidade. Os aspectos aqui descritos suportam uma operação altamente eficiente com camadas físicas WLAN de taxa de dados muito elevada (ou aplicações similares usando tecnologias de transmissão recém desenvolvidas). A WLAN exemplar pode operar em dois modos de bandas de freqüências, 20 MHz e 40 MHz. Ela suporta taxas de bits acima de 100 Mbps (milhões de bits por segundo) , incluindo até 300 Mbps em largura de banda de canal de 20 MHz e até 600 Mbps em largura de banda de canal de 4 0 MHz. São também suportadas várias WLANs alternativas, incluindo aquelas com mais de dois modos de bandas de freqüências e qualquer número de taxas de bits suportadas.
Vários aspectos preservam a simplicidade e robustez da operação de coordenação distribuída de sistemas WLAN de legado, exemplos de tais sistemas podendo ser encontrados nas 802.11a a g. As vantagens das diversas modalidades podem ser obtidas, mantendo-se concomitantemente a retro compatibilidade com tais sistemas de legado. Note-se que na descrição que se segue, os sistemas 802.11 podem estar descritos como sistemas de legado exemplares. Os técnicos na área notarão que os aperfeiçoamentos podem também ser compatíveis com sistemas e normas alternativos.
Um ou mais aspectos exemplares aqui descritos são apresentados no contexto de um sistema de comunicação sem fio de dados. Apesar de o uso em tal contexto ser vantajoso, diferentes modalidades da invenção podem ser incorporadas em diferentes ambientes ou configurações. De um modo geral, os diversos sistemas aqui descritos podem ser formados usando-se processadores controlados por software, circuitos integrados, ou lógica individual. Os dados, instruções, comandos, informações, sinais, símbolos e chips que possam vir a ser mencionados por todo o presente documento são vantajosamente representados por tensões, correntes, ondas eletromagnéticas, campos ou partículas magnéticos, campos ou partículas ópticos, ou uma combinação de tais. Além disso, os blocos apresentados em cada diagrama de blocos podem representar hardware ou etapas de um método. As etapas dos métodos podem ser intercambiadas sem constituir um afastamento do escopo da presente invenção. 0 termo "exemplar" é aqui usado exclusivamente com o significado de "servindo como exemplo, caso, ou ilustração". Qualquer modalidade aqui descrita como "exemplar" não deve ser necessariamente considerada como preferida ou vantajosa em relação a outras modalidades.
A Figura 1 ilustra modalidades exemplares de um sistema 100, compreendendo um ponto de acesso (AP) 104 conectado a um ou mais terminais de usuário (UT) 106a a n. De acordo com a terminologia 802.11, no presente documento os pontos de acesso e os terminais de usuário são também designados como estações ou STAs. As técnicas e aspectos aqui descritos podem também ser aplicados a outros tipos de sistemas (exemplos dos quais incluem as normas celulares acima mencionadas) . Tal como é aqui utilizado, o termo estação base pode ser usado de forma intercambiável com o termo ponto de acesso; o termo terminal de usuário pode ser usado de forma intercambiável com os termos equipamento de usuário (UE), unidade de assinante, estação de assinante, terminal de acesso, terminal remoto, estação móvel, ou outros termos correspondentes conhecidos pelos técnicos na área; o termo estação móvel inclui aplicações sem fio fixas.
Note-se também que os terminais de usuário 106 podem se comunicar diretamente uns com os outros. O protocolo de enlace direto (DLP), introduzido pela 802.lie, permite a uma STA realizar repasse quadros diretamente para outra STA de destino dentro de um conjunto de serviço básico (BSS) controlado pelo mesmo ponto de acesso. Em várias modalidades, como é do conhecimento dos técnicos na área, não é necessário um ponto de acesso. Como exemplo, pode ser formado um BSS independente (IBSS) com qualquer combinação de STAs. Podem ser formadas redes ad-hoc de terminais de usuário que se comunicam umas com as outras através da rede sem fio 120 usando qualquer um dentre a miriade de formatos de comunicação conhecidos pelos técnicos na área.
0 ponto de acesso e os terminais de usuário se comunicam através da rede de área local sem fio (WLAN) 120. Nas modalidades detalhadas mais adiante, a WLAN 120 é um sistema MIMO OFDM de alta velocidade. No entanto, a WLAN 120 pode ser qualquer LAN sem fio. Opcionalmente, o ponto de acesso 104 se comunica com qualquer número de processos ou dispositivos externos através da rede 120. A rede 120 pode ser a Internet, uma intranet, ou qualquer outra rede cabeada, sem fio, ou óptica. A conexão 110 porta os sinais de camada física da rede para o ponto de acesso 104. Os dispositivos ou processos podem estar conectados à rede 102, ou ser terminais de usuário (ou através de conexões com os mesmos) na WLAN 120. Os exemplos de dispositivos que podem estar conectados à rede 102 ou à WLAN 120 incluem telefones, assistentes de dados pessoais (PDAs), computadores de vários tipos (laptops, computadores pessoais, "estações de trabalho", terminais de quaisquer tipos), dispositivos de video, tais como câmeras, gravadores de video, "webcams" e virtualmente quaisquer outros tipos de dispositivos de dados. Os processos podem incluir voz, video, dados, comunicações, etc. Várias correntes de dados podem apresentar exigências variáveis de transmissão, as quais podem ser acomodadas pelo uso de técnicas de qualidade de serviço (QoS) variável.
0 sistema 100 pode estar implementado com um ponto de acesso 104 centralizado. Todos os terminais de usuário 106 se comunicam com o ponto de acesso em uma modalidade. Em uma modalidade alternativa, pode ser acomodada a comunicação direta par-a-par (p2p) entre dois terminais de usuário, com modificações no sistema, como ficará claro para os técnicos na área, exemplos das quais estão ilustrados mais adiante. Qualquer estação pode ser estabelecida como um ponto de acesso designado em modalidades que suportam pontos de acesso designados. O acesso pode ser gerenciado por um ponto de acesso, ou ser ad-hoc (isto é, com base disputa).
Em uma modalidade, o ponto de acesso 104 provê adaptação a Ethernet. Em tal caso, um roteador IP pode ser implementado em adição ao ponto de acesso para prover conexão à rede 102 (os detalhes não são mostrados) . Os quadros Ethernet podem ser transferidos entre o roteador e os terminais de usuário 106 através da sub-rede WLAN (detalhado mais adiante). A adaptação e conectividade a Ethernet são bem conhecidas pelos técnicos na área.
Em uma modalidade alternativa, o ponto de acesso 104 provê adaptação ao IP. Em tal caso o ponto de acesso atua como um roteador de porta de comunicação (gateway) para o conjunto de terminais de usuário conectados (não é mostrado). Em tal caso, os datagramas IP podem ser roteados pelo ponto de acesso 104 dos e para os terminais de usuário 106. A adaptação e conectividade ao IP são bem conhecidas pelos técnicos na área.
A Figura 2 apresenta aspectos de um dispositivo de comunicação sem fio que pode ser configurado como um ponto de acesso 104 ou terminal de usuário 106. Um dispositivo de comunicação sem fio constitui um exemplo de uma STA, adequada para implementação no sistema 100.
0 processador 210 é implementado para efetuar uma variedade de tarefas para o dispositivo de comunicação sem fio, incluindo tarefas para efetuar a comunicação. Como exemplo, o processador 210 efetua tarefas que são aqui descritas como tarefas de "firmware". Para maior simplicidade, nas modalidades detalhadas a seguir, uma referência a firmware inclui tais tarefas efetuadas pelo processador 210, bem como tarefas efetuadas em conjunto com vários outros componentes ou blocos. O processador 210 pode ser um microprocessador de uso geral, um processador de sinais digitais (DSP), ou um processador de uso especial. O processador 210 pode estar conectado a hardware de uso especial para auxiliar em várias tarefas (não são mostradas). Vários aplicativos podem rodar em processadores conectados externamente, tais como um computador conectado externamente ou através de uma conexão por rede; podem rodar em um processador adicional no interior do dispositivo de comunicação sem fio 104 ou 106 (não é mostrado), ou podem rodar no próprio processador 210.
O processador 210 é apresentado conectado com a memória 220, a qual pode ser usada para armazenamento de dados, bem como de instruções para efetuar vários procedimentos e métodos aqui descritos e vários outros. Os técnicos na área notarão que a memória 220 pode ser constituída por um ou mais componentes de memória de vários tipos, que podem estar, no todo ou em parte, embutidos no processador 210. A 1/0 230 é apresentada como conectada ao processador 210, o qual pode compreender uma ou mais funções de entrada e/ou saída, exemplos das quais são bem conhecidos pelos técnicos na área.
O processador de controle de acesso a mídia (MAC) 240 está conectado ao processador 210. Em muitas das modalidades detalhadas a seguir, o processador MAC 240 efetua o processamento de pacotes em alta velocidade, isto é, na velocidade de linha. De um modo geral, o processamento de taxa inferior, ou tarefas de "firmware", será efetuado pelo processador 210 em conjunto com o processamento em "velocidade de linha", tipicamente efetuado pelo processador MAC 240. O processador MAC 240 leva os dados para transmissão para a camada física (PHY) 260 para transmissão através da WLAN 120 e processa dados provenientes da PHY 260, recebidos através da WLAN 120. O processador 210 pode também receber dados de camada física e processar dados para formar pacotes para fluxos de saída (de um modo geral em conjunto com o processador MAC 240, nos exemplos detalhados mais adiante). O formato dos dados entregues e recebidos da PHY 260 estará de acordo com a especificação do sistema ou sistemas de comunicação suportados pelo dispositivo de comunicação sem fio 104 ou 106.
0 processador MAC 240 recebe e transmite dados através da conexão 110 de acordo com as exigências de camada física da rede 102. Um processador de rede opcional 280 pode ser implementado para receber e transmitir de acordo com a camada física da rede 102 através da conexão de rede opcional 110. O processador de rede pode receber e levar dados ao processador MAC 240 usando qualquer tipo de formato de dados. Os pacotes de dados exemplares serão detalhados mais adiante (estes e formatos de dados alternativos serão bem conhecidos pelos técnicos na área). Tais dados podem ser aqui designados como fluxos. Os fluxos podem possuir diferentes características e podem requerer processamento diferente com base no tipo de aplicação associada ao fluxo. Como exemplo, vídeo ou voz podem ser caracterizados como fluxos de baixa latência (o vídeo de um modo geral possuindo exigências de capacidade de transmissão mais elevada do que a voz). Várias aplicações de voz são menos sensíveis à latência, porém podem ter exigências mais elevadas quanto à integridade dos dados (isto é, a voz pode tolerar a perda de alguns pacotes, a transferência de arquivos é de um modo geral intolerante quanto à perda de pacotes).
O processador MAC 240 recebe dados de fluxo, processo este que é designado como entrada ou ingresso, e armazena os pacotes de fluxo de dados no armazenador de pacotes 250. O processador MAC 240 recupera os pacotes para transmissão através da WLAN 120, o que é designado como transmissão ou TX, e os entrega à PHY 260. Os pacotes recebidos na WLAN 120, o que é designado como recepção ou RX, são levados da PHY 260 para o processador MAC 240, que os armazena no armazenador de pacotes 250. O processador MAC 240 recupera pacotes RX do armazenador de pacotes 250 para transporte a uma conexão de rede 110 (ou ao processador de rede opcional 280), um processo designado como saída. Serão detalhadas a seguir modalidades exemplares do armazenador de pacotes 250. Várias modalidades detalhadas a seguir identificam aspectos para efetuar o processamento de pacotes de alta velocidade para entrada, transmissão, recepção e saída.
Apesar de a entrada e a saída estarem identificadas com a rede 102, enquanto a RX e TX estão identificadas com a WLAN 120 no exemplo apresentado, o processador MAC 240 pode ser adequadamente implementado para operação com qualquer função de entrada ou saída, bem como qualquer tipo de função de recepção ou transmissão. A classificação do fluxo pode ser efetuada por um acionador, o qual pode estar incluído no processador 210 ou no processador de rede 280, ou em qualquer componente adequado, como é do conhecimento dos técnicos na área. Vários acionadores podem ser implementados para permitir o processamento MAC de uma variedade de tipos de dados, formatos, classes de fluxo, etc.
O controle e sinalização relacionados à WLAN (isto é, da 802.11 e outras normas) podem também ser comunicados entre o ponto de acesso e vários terminais de usuário. As unidades de dados de protocolo MAC (MPDUs) encapsuladas em unidades de dados de protocolo de camada fisica (PHY) (PPDUs) são levadas e recebidas à/da PHY 260. Uma MPDU pode também ser designada como um quadro. Quando uma única MPDU está encapsulada em uma única PPDU, algumas vezes a PPDU pode ser designada como um quadro. Modalidades alternativas podem empregar qualquer técnica de conversão e a terminologia pode variar em modalidades alternativas. A realimentação correspondente a várias MAC IDs pode ser retornado a partir da PHY 260 para várias finalidades. A realimentação pode compreender quaisquer informações de camada fisica, incluindo as taxas que podem ser suportadas para os canais (incluindo tráfego/pacotes multidifusão e unidifusão (unicast)), formato de modulação e vários outros parâmetros.
A PHY 260 pode ser qualquer tipo de transceptor (e pode incluir tanto um receptor como um transmissor, porém qualquer um pode ser implementado em uma modalidade alternativa). Em uma modalidade, a PHY 260 inclui um transceptor de multiplexação por divisão de freqüência ortogonal (OFDM), que pode ser operado com uma interface de múltiplas-entradas e múltiplas-saidas (MIMO) ou múltiplas- entradas e única-saída (MISO).
0 MIMO e MISO são conhecidos pelos técnicos na área. Vários exemplos de transceptores OFDM, MIMO e MISO estão detalhados no Pedido Co-pendente de Patente U.S. N- de Série 10/650 295, intitulado "FREQUENCY - INDEPENDENT SPATIAL - PROCESSING FOR WIDEBAND MISO AND MIMO SYSTEMS", depositado em 27 de agosto de 2003, em nome da Requerente do presente. As modalidades alternativas podem incluir sistemas de única-entrada e múltiplas-saídas (SIMO) ou única-entrada e única-saida (SISO).
A PHY 260 é apresentada conectada com as antenas 27 0a a n. Pode ser suportado qualquer número de antenas em várias modalidades. As antenas 270 podem ser usadas para transmissão e recepção através da WLAN 120.
A PHY 260 pode compreender um processador espacial em comunicação com cada uma dentre as uma ou mais antenas 270. 0 processador espacial pode processar os dados para transmissão de forma independente para cada antena, ou processar em conjunto os sinais recebidos através de todas as antenas. Os exemplos do processamento independente podem estar baseados em estimativas de canal, realimentação proveniente do terminal de usuário, inversão de canal, ou uma variedade de outras técnicas conhecidas pelos técnicos na área. 0 processamento é efetuado usando-se qualquer uma dentre uma variedade de técnicas de processamento espacial. Vários transceptores deste tipo podem transmitir utilizando formação de feixes, direcionamento de feixes, direcionamento Eigen, ou outras técnicas espaciais para aumentar a capacidade de transmissão de e para um dado terminal de usuário. Em algumas modalidades, nas quais são transmitidos símbolos OFDM, o processador espacial pode compreender processadores sub-espaciais para processamento de cada uma das sub-portadoras OFDM (também designadas como tons), ou faixas.
Em um sistema exemplar, o ponto de acesso (ou qualquer STA, tal como um terminal de usuário) pode possuir N antenas e um terminal de usuário exemplar pode possuir M antenas. Existem, portanto, MxN trajetórias entre as antenas do ponto de acesso e do terminal de usuário. É conhecida uma variedade de técnicas espaciais para melhorar a capacidade de transmissão usando tais múltiplas trajetórias. Em um sistema de diversidade de transmissão espaço tempo (STTD) (também aqui designado como de "diversidade"), a transmissão de dados é formatada e codificada, e enviada através de todas as antenas na forma de um único fluxo de dados. Com M antenas de transmissão e N antenas de recepção podem ser formados MIN(Μ, N) canais independentes. A multiplexação espacial explora tais vias independentes e pode transmitir diferentes dados através de cada uma das trajetórias independentes para aumentar a taxa de transmissão.
São conhecidas várias técnicas para aprendizado ou adaptação às características do canal entre o ponto de acesso e um terminal de usuário. Pilotos exclusivos podem ser transmitidos a partir de cada antena de transmissão. Em tal caso, os pilotos são recebidos em cada antena de recepção e medidos. A realimentação de informações de estado de canal pode então ser retornada ao dispositivo transmissor para uso na transmissão. A auto-decomposição da matriz de canal medida pode ser efetuada para determinar os auto-modos do canal. Uma técnica alternativa para evitar a auto-decomposição da matriz de canal no receptor consiste em usar o direcionamento Eigen do piloto e dados para simplificar o processamento espacial no receptor.
Dessa forma, dependendo das condições de canal correntes, taxas de dados variáveis podem estar disponíveis para transmissão para vários terminais de usuário por todo o sistema. A PHY 260 pode determinar a taxa suportável com base em qualquer processamento espacial que esteja sendo usado para o enlace físico entre o ponto de acesso e o terminal de usuário. Tais informações podem ser realimentadas para uso no processamento MAC.
Em um aspecto, um único circuito integrado de aplicação específica (ASIC) é provido para suportar processamento MAC nos dispositivos de comunicação sem fio incluindo tanto pontos de acesso e terminais de usuário. As Figuras 3 e 4 ilustram de forma conceituai tal ASIC 310 configurado para uso em um terminal de usuário 106 e em um ponto de acesso 104, respectivamente.
Na Figura 3, o ASIC de processador MAC 310 é apresentado em uma configuração exemplar para um terminal de usuário 106. Em tal configuração, o processador MAC 240 acima descrito está conectado a uma tabela de hardware 320.
A tabela de hardware 320 contém, entre outras coisas, parâmetros para cada fluxo que está ativo na estação. Dessa forma, durante várias funções de processamento MAC, exemplos das quais serão detalhados mais adiante, o processador MAC 240 acessa a tabela de hardware 320 para recuperar parâmetros 325 por fluxo. O processador MAC 240 está também conectado à SRAM 330. Em tal configuração, a SRAM 330 está adaptada para efetuar a função do armazenador de pacotes 250. O ASIC 310 do processador MAC pode compreender vários outros componentes, exemplos dos quais serão detalhados mais adiante. Note-se, nesta modalidade, que o armazenador de pacotes 250 reside no interior do processador MAC 310. Note-se que a tabela de hardware 320 é apresentada como um bloco separado apenas com o propósito de esclarecimento. Em várias modalidades, a tabela de hardware 320 e a SRAM 330 podem, ambas, estar incluídas no interior do processador MAC 240.
A Figura 4 apresenta um ASIC de processador MAC 310 configurado para uso como um ponto de acesso. Tal configuração pode também ser usada para uma estação capaz de suportar um maior número de fluxos e/ou capacidade de transmissão mais elevada, uma chamada super estação. Nos exemplos descritos a seguir, a configuração de ponto de acesso e super estação pode ser simplesmente designada como um ponto de acesso ou uma configuração de ponto de acesso. Nesta modalidade, o ASIC de processador MAC 310 compreende o processador MAC 240, a tabela de hardware 320 e a SRAM 330 como na Figura 3. Novamente, tais componentes são apresentados separadamente apenas com o propósito de ilustração e um ou mais deles pode estar incluído em um processador MAC 240. Em tal configuração, a tabela de hardware 320 não mais contém todos os parâmetros por fluxo usados para o processamento MAC. Em tal caso, ponteiros ou ponteiros por fluxo 335 estão contidos na tabela de hardware 320, cada um deles apontando para os respectivos parâmetros de fluxo 325 associados, que estão armazenados na SRAM 330. Note-se que o mesmo ASIC de processador 310, compreendendo os mesmos componentes de hardware apresentados, pode ser adaptado para qualquer das configurações para suportar diferentes exigências. No presente exemplo, a SRAM 330 é redirecionada da função de um armazenador de pacotes 250, no modo STA, para um repositório de parâmetros por fluxo 325 no modo de ponto de acesso. Dessa forma, o processador MAC 240 acessa a tabela de hardware 320 para parâmetro e, dependendo da configuração, irá recuperar tais parâmetros ou seguir um nível indireto para recuperá-los a partir da SRAM 330. Firmware (efetuado pelo processador 210, por exemplo) pode configurar os vários componentes do ASIC de processador MAC 310 para trabalhar em um primeiro modo (modo de estação) ou em um segundo modo (modo de ponto de acesso) . Várias técnicas para selecionar modos são bem conhecidas pelos técnicos na área. Como exemplo, ajustes de registrados, sinais de seleção de modo e similares podem ser usados para indicar para um ou mais componentes o estado de configuração corrente. Além disso, o firmware pode popular a tabela de hardware 320 e a SRAM 330 de forma diferente, dependendo da configuração selecionada.
Fazendo ainda referência à Figura 4, pode ser visto que uma memória externa, a SDRAM 340 neste exemplo, é incluída para efetuar a função do armazenador de pacotes 250. Dessa forma, no modo de ponto de acesso, um maior número de fluxo pode ser suportado pelo uso da SRAM 330 para armazenamento de parâmetros por fluxo do que poderiam ser suportados pelo uso da tabela de hardware 320 isoladamente (presumindo-se que a tabela de hardware 320 seja menor do que a SDRAM 330). O tamanho da SRAM 330 pode ser selecionado para acomodar as exigências do armazenador de pacotes para um dispositivo de comunicação sem fio no modo de estação. Em uma modalidade, tal tamanho é também adequado para armazenamento de todos os parâmetros por fluxo necessários para o número de fluxos suportado por um ponto de acesso. Em uma modalidade alternativa, a SRAM 330 pode estar dimensionada para suportar um maior número de fluxos, o que pode demandar um tamanho maior de SRAM do que seria de outra forma necessário para o armazenador de pacotes. A SDRAM 340 pode ser selecionada para acomodar o número de fluxos suportados pelo ponto de acesso. Os técnicos na área saberão como selecionar tamanhos adequados para a tabela de hardware 320, a SRAM 330 e a SDRAM 340.
Dessa forma, um único ASIC 310 de processador MAC pode ser projetado para suportar múltiplos modos. Os componentes de hardware podem ser reutilizados em cada modo para prover diferentes funções. Exemplos mais detalhados do uso de tabelas de hardware e armazenadors de pacotes estão ilustrados mais adiante. A implementação de um único ASIC de processador MAC 310 com a capacidade de ser configurado tal como apresentado na Figura 3 permite um menor porte e custo mais baixo. 0 mesmo ASIC de processador MAC 310 pode também ser usado em dispositivos de maior desempenho, tais como um ponto de acesso ou super estação, pela adição de uma SDRAM externa 340 e reconf iguração do ASIC de processador MAC 310. Podem ser selecionados vários tamanhos diferentes de SDRAM 340, dependendo das necessidades de desempenho da configuração em questão.
A Figura 5 apresenta uma modalidade exemplar mais detalhada de um dispositivo de comunicação sem fio, tal como uma STA 104 ou UT 106. Neste exemplo, será descrito o processamento MAC para uma ampla variedade de características de pacotes exemplares usando-se um processador MAC (descrito de um modo geral). Em uma modalidade alternativa, as funções de processamento MAC para diferentes tipos de pacotes podem ser divididas em dois ou mais processadores MAC (modalidades alternativas exemplares serão detalhadas mais adiante com referência às Figuras 48 e 49).
Como antes, o processador 210 é implementado para efetuar tarefas de firmware. É ilustrado um conjunto exemplar de funções de suporte que podem ser típicas em tal implementação. Várias modalidades alternativas ficarão claras para os técnicos na área. O processador 210 se comunica com uma instrução SRAM 502 e uma inicialização de ROM 504 através do barramento de instruções 506. Tais memórias podem ser usadas para efetuar o armazenamento e recuperação bem conhecidos de instruções para uso no processamento firmware no processador 210. Exemplos de funções 1/0 e funções de suporte estão ilustrados pelos componentes conectados ao barramento 514. Neste exemplo, os temporizadores 508 podem ser implementados para efetuar várias funções de temporização. Pode ser implementado um transmissor receptor universal assíncrono (UART) 510. Outro exemplo de I/O é a interface 12C 512. Neste exemplo, os vários componentes auxiliares se conectam através do barramento 514 ao controlador de interrupção de vetor (VIC) 516, que está conectado ao processador 210. Dessa forma, interrupções de timing, interrupções I/O e o processamento correlacionado podem ser efetuados pelo processador 210 de acordo com as funções correlacionadas implementadas. Várias funções alternativas são bem conhecidas pelos técnicos na área para conexão com processadores de vários tipos. A ponte 518 conecta os componentes ligados ao barramento 514 com outros componentes conectados ao barramento 520. Dessa forma, vários componentes conectados ao barramento 520, incluindo o processador 210, podem comunicar dados para o barramento 514 para transporte ou recepção aos/dos respectivos componentes. Neste exemplo, um árbitro de barramento 522 é implementado para controlar o acesso ao controlador DMA do barramento 520; componentes adicionais ligados ao barramento 520 incluem um controlador de acesso direto à memória (DMA) 524, a SRAM de dados 52 6 e uma servo interface de barramento 528. A servo interface de barramento 528 provê um conduite entre o barramento 520 e a lógica de formatação e os multiplexadores 570, o que será descrito em maiores detalhes mais adiante. Os componentes aqui descritos podem ser conceitualmente identificados com vários componentes, tais como o processador 210, a memória 220 e a I/O 230, acima descritos com referência à Figura 2.
Os componentes da Figura 5, exceto pela SDRAM 34 0, formam partes de uma modalidade exemplar de um ASIC de processador MAC 310, tal como acima descrito nas Figuras 3 e 4. Tais componentes podem ser configurados para uso como uma configuração STA 106, detalhada na Figura 3, ou como uma configuração de ponto de acesso ou super estação, detalhada na Figura 4. À luz da descrição acima, pode ser constatado que os vários componentes detalhados na Figura 5 podem formar partes do processador MAC 24 0 e da tabela de hardware 320. Vários componentes descritos podem ser configurados em diferentes modos para perfazer diferentes funções. Vários componentes, tais como o processador 210 e os componentes auxiliares 502 a 528 exemplares, podem ou não ser incorporados em uma modalidade exemplar de um ASIC de processador MAC 310.
Note-se que o processador 210, e os vários outros componentes apresentados, podem se comunicar com os componentes do processador MAC através do barramento 520. Neste exemplo, o processador MAC compreende duas funções principais, incluindo o núcleo MAC inferior 540 e um subsistema hospedeiro para WLAN, apresentado como o processador H2W 530. Modalidades exemplares de tais componentes serão detalhadas mais adiante. Tal segregação de componentes em várias partes constitui apenas um exemplo; os técnicos na área irão implementar facilmente os vários processos e funções descritos em configurações alternativas, como ficará claro à luz dos presentes ensinamentos.
A SRAM 560 pode ser acessada através da interface SRAM 558, que está conectada ao MUX 554. O multiplexador 554 seleciona como uma alimentação à interface SRAM 558 a conexão ao árbitro de memória 556, ou a conexão ao árbitro de memória 552. 0 árbitro de memória 552 recebe requisições e arbitra o acesso à SRAM 560 a partir de uma variedade de fontes ou origens, incluindo os componentes no barramento 520, bem como no barramento 550. Neste exemplo, o barramento 550 provê um acoplamento direto entre o núcleo MAC inferior 540 e a memória (SRAM) 560. Note-se que também existe uma via entre tais componentes através do barramento 520. Neste exemplo, um barramento 550 adicional é provido para garantir o desempenho de acesso com a SRAM 560 para recuperação e armazenamento de dados temporalmente sensíveis do e no núcleo MAC inferior 540. Note-se que, tal como descrito nas Figuras 3 e 4, a SRAM 560 pode servir como um armazenador de pacotes em uma configuração e como um repositório de parâmetros por fluxo em outra configuração.
O núcleo MAC inferior 540 está conectado à interface MAC/PHY 545, que pode ser usada para levar pacotes para transmissão à PHY 260 e para processar pacotes recebidos a partir da PHY 2 60. Modalidades exemplares de componentes no interior do núcleo MAC inferior 540 serão detalhadas mais adiante.
O processador H2W 530 processa pacotes de entrada; modalidades exemplares serão descritas em maiores detalhes mais adiante. Em uma modalidade, a entrada pode ser desacoplada do processamento dos pacotes que são recebidos. Em tal caso, os pacotes de entrada podem ser gravados no armazenador de pacotes na velocidade de linha (isto é, na taxa de entrada). O processamento de tais pacotes pode ocorrer posteriormente, lendo-os a partir do armazenador de pacotes. Tal desacoplamento permite que a taxa de processamento seja diferente da taxa de entrada na velocidade de linha. A desvantagem de tal estratégia é a de que ocorre uma leitura e gravação extra no armazenador de pacotes, uma vez que os pacotes devem ser lidos, processados e recolocados no armazenador de pacotes para aguardar a transmissão. Tal penalidade em termos de amplitude de banda de memória pode ser aceitável em certas modalidades. Uma modalidade alternativa, ilustrada nos exemplos a seguir, propicia o processamento em linha de pacotes de entrada. Em tais modalidades exemplares, o processamento MAC é projetado para permitir que cada pacote de entrada seja formatado para transmissão na velocidade de linha, com uma única gravação no armazenador de pacotes (seguida por uma leitura quando chegar o momento de transmissão do pacote). No segundo caso, a carga sobre a amplitude de banda de memória é reduzida em comparação com o primeiro caso. Os técnicos na área adaptarão facilmente qualquer das estratégias a vários aspectos aqui descritos em várias modalidades.
A SDRAM 340 é apresentada como um componente externo ao ASIC de processador MAC 310 nesta modalidade. Isto está de acordo com a descrição das Figuras 3 e 4 acima, em que dispositivos de comunicação sem fio que devem suportar um maior número de fluxos (com a maior necessidade resultante para maior espaço no armazenador de pacotes, tal como um ponto de acesso ou super estação) podem ser acomodados com um único ASIC de processador MAC 310 de custo mais baixo e uma memória externa opcional tal como a SDRAM 340. A SDRAM 340 pode ser acessada através da interface SDRAM 562, que está acoplada ao árbitro de memória 556. Em uma modalidade alternativa, a SDRAM 340 pode também ser incorporada em um ASIC de processador MAC 310. A alocação de componentes apresentada na Figura 5 constitui apenas um exemplo. Qualquer dos componentes apresentados pode ser incorporado em um único ASIC, ou pode ser incorporado em um ou mais dispositivos externos, dependendo das exigências de área de cada ASIC e do desempenho desejado.
Neste exemplo, as entrada e saida de pacotes são efetuadas através de uma de duas interfaces externas exemplares. Os técnicos na área notarão que interfaces alternativas podem ser implementadas além, ou em lugar, de tais interfaces. Neste exemplo, a interface SDIO 582 e a interface PCI 584 são implementadas para recepção e repasse de pacotes para dispositivos externos (ou internos) em comunicação com uma ou mais de tais interfaces. A interface SDIO 582 e a interface PCI 584 são selecionadas através do MUX 580.
A fim de acomodar interfaces de velocidades variáveis, bem como para atender a demandas variáveis para armazenamento e processamento de pacotes recebidos e emitidos, FIFO, multiplexadores e lógica de formatação podem ser implementados para efetuar a combinação de taxas e filas para aliviar o congestionamento no acesso a memórias tais como a SRAM 560 e a SDRAM 340, e funções de processamento MAC tais como o processador H2W 530 e o núcleo MAC inferior 540. Como exemplo, as interfaces de entrada e saida podem operar em velocidades mais altas com relação à capacidade de transmissão da WLAN. Os fluxos recebidos podem ser em rajadas e alta velocidade. As informações recebidas a partir do processador 210, ou de qualquer outro componente conectado ao barramento 520, podem chegar em qualquer outra taxa. 0 processador H2W 530 e o núcleo MAC inferior 540 irão gerar requisições de acesso e recuperar ou armazenar dados resultantes de tais requisições a medida que o processamento para várias tarefas for concluído, tal como descrito mais adiante.
Dessa forma, neste exemplo, podem ser implementados FIFO 572 entre a lógica de formatação e os multiplexadores 570 e a lógica de formatação e os multiplexadores 574. Como exemplo, um conjunto de FIFO 572, um para acumular dados provenientes da lógica de formatação e multiplexadores 570 para a lógica de formatação e multiplexadores 574, e outro para acumular dados na direção oposta, pode ser implementado para interação com funções de entrada e saída (tais como a interface SDIO 582 ou a interface PCI 584).
Outro conjunto de FIFO 572, um em cada direção, pode ser implementado para suportar dados de e para o processador H2W 530. Outro conjunto similar pode ser implementado para interação entre os componentes no barramento 520, acessado através da servo interface/barramento 528. Os técnicos na área notarão que tal configuração é meramente um exemplo.
Várias modalidades alternativas podem ser implementadas, as quais estarão claras para os técnicos na área à vista dos presentes ensinamentos. Dessa forma, a modalidade exemplar do dispositivo de comunicação sem fio 104 ou 106 apresentados na Figura 5, serve para ilustrar uma possível interconexão de vários componentes, detalhes da qual serão descritos mais adiante. Várias configurações alternativas, usando subconjuntos de tais componentes e/ou componentes adicionais (não são mostrados) podem ser implementadas dentro do mesmo escopo.
ARMAZENADOR DE PACOTES E GERENCIAMENTO DE MEMÓRIA
A Figura 6 apresenta uma modalidade exemplar de um armazenador de pacotes 250. Em várias modalidades exemplares aqui descritas, um armazenador de pacotes 250, tal como ilustrado na Figura 6, exemplifica estruturas de dados e listas interligadas associadas que são úteis para efetuar várias funções para processamento de pacotes dentro de um processador MAC 240. Apesar de várias modalidades aqui descritas não demandarem tal estrutura, e armazenadors de pacotes alternativos poderem ser implementados em modalidades alternativas, as modalidades detalhadas por todo o presente relatório descritivo irão utilizar tais listas interligadas e estruturas de dados para ilustrar seu uso nestas várias funções. Além disso, um armazenador de pacotes, tal como descrito na Figura 6, pode ser implementado para uso em várias funções alternativas, além daquelas aqui descritas. Os técnicos na área poderão facilmente adaptar tal armazenador de pacotes e seus componentes e subcomponentes em várias modalidades, incluindo aquelas para as quais seja desejado processamento de pacotes de alta velocidade. 0 armazenador de pacotes 250 exemplar pode incluir estruturas de dados adicionais não mostradas na Figura 6, as quais serão adicionalmente detalhadas na Figura 7, descrita a seguir.
Neste exemplo, cada pacote é armazenado no armazenador de pacotes 250 usando-se dois tipos de estruturas de dados; uma primeira estrutura de dados, aqui designada como um nó 610, e uma segunda estrutura de dados, aqui designada como grande bloco (chunk) 620. Cada pacote, ou fragmento de pacote (caso seja implementada a fragmentação tal como descrito nas 802.11g - e), inclui um nó 610 e um ou mais grandes blocos 620. 0 número de grandes blocos necessário para armazenamento dos dados de pacote irá variar dependendo do tamanho do pacote ou fragmento. Dessa forma, um pacote reside no armazenador de pacotes 250 na forma de uma estrutura de lista interligada compreendendo um nó apontando para um primeiro grande bloco e, quando forem necessários grandes blocos adicionais, a lista interligada compreende os blocos adicionais, cada grande bloco apontando para um grande bloco subseqüente (exceto o grande bloco final). Uma vantagem de tal segmentação entre nós e blocos é a de que informações cruciais para decisões de controle podem ser mantidas em um nó, enquanto os dados em si são mantidos em grandes blocos relativamente maiores.
Isto permite que os nós, que são representativos de seus respectivos pacotes, sejam usados no processamento de controle sem requerer acesso de todo o pacote.
Adicionalmente, os pacotes de entrada que chegam, bem como os pacotes aguardando a entrada, serão de um modo geral associados a um ou mais fluxos. A estrutura de nós e blocos apresentada também facilita a formação eficiente de filas de pacotes dentro do armazenador de pacotes, sendo cada fila associada a seu respectivo fluxo. Tal estrutura geral está ilustrada na Figura 6 com um exemplo de uma única fila compreendendo vários nós e blocos. Neste exemplo, os nós 610a a η formam uma lista interligada associada a uma fila para um fluxo. A fila possui uma cabeça identificada por um ponteiro de inicio de fila 630 e um ponteiro final de fila 640 identifica o último nó na fila. Neste exemplo, existem η pacotes na fila, cada um com um nó 610 a ele associado. Cada nó 610 compreende uma série de grandes blocos 620a a m, tal como ilustrado. Qualquer número de blocos pode ser associado a um único nó. Os blocos remanescentes ilustrados nesta figura estão simplesmente denotados por 620. Os técnicos na área notarão que podem ser implementados nós de vários tamanhos, bem como blocos de vários tamanhos. Na modalidade exemplar, um grande bloco possui 512 bytes. Dessa forma, uma vez que os pacotes exemplares possuem usualmente menos do que 2 Kbytes, serão necessários no máximo 4 blocos para cada pacote (tipicamente menos), incluindo o cabeçalho de pacote e outras informações associadas ao mesmo. Em modalidades alternativas, pode ser implementado qualquer tamanho de grande bloco acomodando qualquer tamanho de pacote. Nesta modalidade exemplar, o controle e os dados são separados na memória. Para finalidades de transmissão e recepção podem ser necessárias várias manipulações das estruturas de controle. No entanto, para cargas úteis de dados, é efetuada somente uma gravação na memória (seja quando da entrada ou recepção a partir da WLAN) e uma leitura de tal memória (quando da transmissão através da WLAN ou saída através da interface externa). Dessa forma, as demandas de amplitude de banda de memória podem ser reduzidas, uma vez que as transferências de entrada e saída da memória são relativamente eficientes.
Na Figura 6 está ilustrado um exemplo de nó 610. 0 nó 610 compreende um ponteiro de próximo nó 612 que é usado para ligação ao nó subseqüente na fila. São incluídos um campo de comprimento 614 e um número de seqüência. Tais campos são úteis quando do processamento de pacotes, como será descrito mais adiante, e permitem que o processamento MAC seja efetuado sem acessar ou movimentar os dados contidos nos grandes blocos 620. Como exemplo, o campo de comprimento é útil para agregação, quando da agregação de pacotes em um TXOP. 0 número de seqüência é útil quando do envio de uma requisição de ACK de bloco. De um modo geral, quaisquer informações de pacotes úteis para o processamento podem ser adicionadas a modalidades alternativas de nós. 0 nó 610 também inclui o ponteiro de grande bloco 618, que aponta para o primeiro grande bloco contendo os dados de pacote.
Tal estrutura permite flexibilidade para a geração de filas de qualquer comprimento, limitadas apenas pelo tamanho total do armazenador de pacote da memória.
Dessa forma, vários tipos diferentes de fluxos podem ser suportados e o número suportado de fluxos não necessita ser fixo. Como exemplo, vários fluxos, requerendo um baixo número de pacotes, podem receber armazenamento com fluxos requerendo maior número de pacotes e, portanto, pode ser implementado um tamanho menor de armazenador de pacotes para suportar um dado número de fluxos. Alternativamente, um número variável de fluxos pode ser acomodado para qualquer dado tamanho de memória. Como pode ser visto, as filas podem crescer e encolher de forma independente e, dado que os nós e blocos podem ser reutilizados por
Também é ilustrado um exemplo de grandes blocos 620. Os dados de grande bloco 622 constituem o pacote, incluindo quaisquer campos de cabeçalho, seqüências de conferência de quadros e similares. Um ponteiro de próximo grande bloco 624 é incluído no grande bloco para apontar para o próximo grande bloco na lista interligada, caso exista.
Em uma modalidade, os blocos são de tamanho fixo. Isto permite que uma memória de armazenador de pacotes compreenda uma parte fixa de memória alocada para blocos. A estrutura de lista interligada permite que qualquer grande bloco seja usado em qualquer lista interligada de pacotes.
A medida que os pacotes chegam e saem, os blocos podem ser reutilizados com facilidade, sem a exigência de overhead de gerenciamento de memória adicional (tal como a re-alocação de espaço para pacotes de diferentes tamanhos e similares). Tal estrutura permite também um processamento eficiente, pelo fato de que, de um modo geral, os blocos podem ser gravados uma vez no armazenador de pacotes, onde eles permanecem até que estejam prontos para transmissão através da WLAN ou para repasse para um destino de saída. Os pacotes podem também ser movimentados dentro das filas, ou movidos para novas filas simplesmente pela modificação dos ponteiros (isto é, modificação da lista de interligação). Isto é útil quando do processamento de pacotes para retransmissão. O uso de tais estruturas propicia eficiência adicional, como será detalhado mais adiante. Cada lista interligada pode usar qualquer um dentre uma variedade de finalizadores de lista para o último nó em uma fila, ou para o último grande bloco em um pacote. Na modalidade exemplar, os primeiro e último nós em uma lista interligada são indicados por ponteiros de inicio e de término, enquanto os ponteiros de grandes blocos são entrelaçados para indicar o último grande bloco em um pacote. Em uma modalidade alternativa, pode ser desejável adicionar o número de blocos no cabeçalho de nó juntamente com o comprimento do pacote e o número de seqüência do pacote. São também contempladas modalidades alternativas incluindo tamanhos de blocos variáveis.
A Figura 7 ilustra também um exemplo de armazenador de pacotes 250. Blocos contíguos de memória podem ser alocados para vários tipos de estruturas de dados, apesar de tal não constituir uma exigência. Como foi acima descrito, uma parte de um segmento 730 pode ser alocada para nós e um segmento 740 pode ser alocado para blocos. Na modalidade exemplar, cada um de tais segmentos constitui um espaço contíguo de memória, incluindo blocos e nós de tamanho fixo, reutilizáveis para qualquer pacote e/ou fluxo, tal como acima descrito. Além disso, são mantidas uma lista de ponteiros de nós livres 710 e uma lista de ponteiros de grandes blocos livres 720. Uma variedade de estruturas de dados pode ser implementada para listas de ponteiros livres, como ficará claro para os técnicos na área. Como exemplo, ponteiros de nós e ponteiros de grandes blocos podem ser empurrados e aplicados a suas respectivas listas de ponteiros 710 ou 720. Tais listas podem ser, por exemplo, armazenadors circulares. Uma vez que um ponteiro seja aplicado para formar um novo nó ou grande bloco, tal ponteiro irá permanecer em uso até que o nó ou grande bloco seja liberado, o ponteiro podendo a seguir ser empurrado de volta para uso futuro.
A Figura 8 apresenta componentes adicionais que podem ser implementados no interior de um processador MAC, tal como nas modalidades exemplares aqui descritas. Tais componentes não são necessários, porém proporcionam vantagens em certas situações devido a propriedades particulares do tipo de memória sendo usado. Como exemplo, de um modo geral existe uma latência associada ao acesso à SDRAM. Podem também ocorrer ineficiências ao se efetuar pequenas transferências (isto é, ao recuperar ou armazenar um único ponteiro de grande bloco ou nó). Quando do uso de certos tipos de SDRAM, na fatorização de acesso a fileira, acesso a coluna, etc., os ciclos de overhead podem superar os ciclos reais de transferência de dados. Para impedir grandes retardos, podem ser implementadas várias caches para recuperação de vários ponteiros de uma só vez para uso no processamento MAC. A Figura 8 apresenta exemplos de várias destas caches. Algumas ou todas dentre tais caches podem ser implementadas em várias modalidades alternativas.
Os exemplos de caches usados nas modalidades aqui descritas incluem o cache de ponteiro de nó livre TX 810, uma cache de ponteiro de grande bloco livre TX 820, uma cache de ponteiro de nó livre RX 830 e uma cache de ponteiro de grande bloco livre RX 840. A estrutura de dados ilustrada acima para os pacotes pode ser simplificada para uso com pacotes de recepção, uma modalidade da qual está detalhada mais adiante com referência à Figura 33. De um modo geral, cada uma de tais caches 810 a 840 recebe um ou mais ponteiros a partir de suas respectivas listas de ponteiros de nós no armazenador de pacotes 250 de modo a criar eficiências. Uma pluralidade de cada tipo de ponteiro pode ser recuperada de uma só vez a partir do armazenador de pacotes. Neste exemplo, uma pluralidade de ponteiros pode ser extraída a partir da respectiva lista. Tais ponteiros a seguir preenchem a respectiva cache, e ponteiros isolados podem ser extraídos a partir da respectiva cache para uso em vários componentes de processamento MAC. 0 uso de ponteiros e suas respectivas caches será adicionalmente ilustrado através de várias modalidades exemplares detalhadas mais adiante.
A Figura 9 apresenta uma modalidade exemplar de um método 900 para gravação de pacotes em um armazenador de pacotes e para criação de filas. Uma fila pode ser formada usando-se uma estrutura de dados, neste exemplo uma lista interligada. As filas podem também ser formadas na forma de arranjos (um exemplo é apresentado como o arranjo de nó 3330, detalhado mais adiante). Tal método é adequado para implementação em conjunto com um armazenador de pacotes tal como aquele descrito nas Figuras 6 e 7 acima. O método 900 ilustra exemplos de técnicas que podem ser usadas para gravação de pacotes de entrada em um armazenador de pacotes. Técnicas similares podem ser usadas para gravação de pacotes recebidos no armazenador de pacotes para aguardar o processamento de repasse para saida. As modalidades exemplares de repasse serão detalhadas mais adiante. Opcionalmente, caches de ponteiros (isto é, 810 a 840, tal como descrito na Figura 8) podem também ser implementadas com ou sem caches e tal método pode ser usado com qualquer de tais configurações, como ficará claro para os técnicos na área.
Em 910, é recebido um pacote. No bloco 912 surge um nó para associação ao pacote. No bloco de decisão 914, caso tal pacote seja o primeiro pacote na respectiva fila, prosseguir para 916 e atualizar o ponteiro de inicio de fila para apontar para o nó associado ao novo pacote (por exemplo, o ponteiro de início de fila 630 ilustrado na Figura 6). A seguir, passar para 918. No bloco de decisão 914, caso tal pacote não seja o primeiro pacote na respectiva fila, prosseguir para 918. Em 918, extrair um ponteiro de grande bloco.
Novamente, a extração de nós e blocos (abreviação para a extração do respectivo ponteiro) pode ser efetuada diretamente a partir do armazenador de pacotes e em particular a partir da lista de ponteiros de nós livres ou da lista de ponteiros de grandes blocos livres, respectivamente. Na modalidade exemplar, os ponteiros são extraídos a partir da cache de ponteiros de nós livres de transmissão 810 e da cache de ponteiros de grandes blocos livres de transmissão 820 (os quais podem necessitar reposição a medição que são exauridos). Em 920, preencher o nó com o número de seqüência e comprimento do pacote e inserir o ponteiro de grande bloco recuperado em 918 no campo de ponteiro de grande bloco do nó (isto é, usando um formato de nó tal como o nó 610 ilustrado na Figura 6) . Em 922, preencher o grande bloco com dados de pacote. Como exemplo, pode ser implementado um grande bloco 620 tal como ilustrado na Figura 6.
No bloco de decisão 924, caso seja necessário outro grande bloco devido ao pacote ser maior do que caberia no primeiro grande bloco, passar para 926. Caso contrário, passar para 932. Em 926 extrair um novo ponteiro de grande bloco. Em 928 gravar o novo ponteiro de grande bloco no campo de ponteiro de próximo grande bloco do grande bloco anterior. Em 930, preencher o novo grande bloco com dados de pacote. Na modalidade exemplar, os dados de pacote serão gravados seqüencialmente na série de blocos. A seguir, retornar ao bloco de decisão 924 para determinar se outro grande bloco será necessário. Tal "loop" ou circuito pode ser repetido até que o pacote tenha sido completamente gravado em um ou mais blocos.
Em 932, o processo para gravação do pacote é finalizado. Levar o nó associado ao pacote para a fila apropriada. Como exemplo, tal pode ser efetuado por gravação do endereço do nó, isto é, o ponteiro recuperado em 912, no ponteiro de próximo nó do nó final. Neste exemplo, o nó final é identificado pelo ponteiro de final de fila (tal como o ponteiro de final de fila 640 ilustrado na Figura 6). Em 934, atualizar o ponteiro de final para apontar para o nó corrente, o qual se tornará o nó final.
Na decisão 936, caso seja recebido outro pacote, voltar a 912 e o processo pode ser repetido. Caso outro pacote não esteja pronto para gravação no armazenador de pacotes, o processo pode parar. Para maior clareza, são omitidos os detalhes da associação do pacote ao seu fluxo associado, a partir do qual serão derivados a fila apropriada e seus ponteiros de inicio e final associados.
As modalidades exemplares associando pacotes com fluxos serão ilustradas em maiores detalhes mais adiante.
PROCESSADOR H2W E POLÍTICA DE ENTRADA
A Figura 10 ilustra uma modalidade exemplar de subsistema hospedeiro para WLAN, tal como o processador H2W 530. Um pacote pode ser recebido a partir de uma variedade de fontes. Neste exemplo são apresentadas duas fontes como ilustração. A presente modalidade exemplar ilustra um subconjunto de componentes que podem estar contidos em um processador H2W 530. Alguns dos componentes apresentados na Figura 10 podem corresponder aos componentes da Figura 5 não incluídos no processador H2W 530 e são apresentados para clareza da descrição. Os técnicos na área notarão que os componentes apresentados e sua divisão são meramente ilustrativos. Os típicos pacotes de entrada, neste exemplo, provêem de uma interface externa, tal como a interface SDIO 582, ou a interface PCI 584 ilustrada na Figura 5. Outro exemplo de alimentação de pacotes pode ser proveniente do processador 210, ou qualquer outro componente conectado ao barramento 520, tal como mostrado na Figura 5. Os pacotes da interface externa chegam ao processador H2W 530 através da interface externa 1006. Os pacotes provenientes do barramento 520, por exemplo, podem chegar através da interface de processador 1002. Podem ser implementados FIFO para reter um ou mais pacotes para processamento. Como exemplo, os FIFO 1004 e 1008 podem ser implementados para reter pacotes recebidos a partir da interface de processador 1002 ou da interface externa 1006, respectivamente. O bloco 1004 pode ser implementado para reter pacotes de gerenciamento e controle provenientes do processador, que devem ser transmitidos através da WLAN. Em uma modalidade alternativa, detalhada mais adiante com referência à Figura 48, a interface de processador 1002 e componentes correlacionados podem ser omitidos, uma vez que pacotes de sistemas legados ou de legado e outros pacotes de baixa capacidade de transmissão, por exemplo, são processados no processador 210 (ou outro processador MAC alternativo) e, portanto, tal interface pode não ser necessária.
No presente exemplo, o endereço MAC de destino, em conjunto com o identificador de corrente de tráfego (tsid), é usado para identificar um fluxo de forma exclusiva. Em modalidades alternativas, podem ser implementados outros mecanismos para mapeamento de fluxos. Como foi acima mencionado, tipicamente existirá um acionador para efetuar a classificação de fluxos, o qual pode estar rodando em firmware ou em algum outro processador externo. 0 acionador pode produzir o endereço MAC com um endereço de destino (DA), TSID e um endereço de origem. Neste exemplo, o DA e o TSID podem ser usados para identificar o fluxo. 0 DMAC-TSID é levado ao bloco de mapeamento de fluxo 1020, a partir do qual é retornada uma ID de fluxo correspondente ao DMAC-TSID.
As modalidades exemplares do bloco de mapeamento de fluxo 1020 podem usar qualquer tipo de consulta ou outra função para determinar uma ID de fluxo a partir das informações de identificação dadas. Um exemplo é apresentado na Figura 10b. Na modalidade exemplar, é desejável desacoplar a interação de firmware do processamento de velocidade de linha, tal como foi acima descrito. No entanto, pode ocorrer que o firmware seja bem adequado para a criação de tabelas para mapeamento de fluxos. Para desacoplar a interação de firmware, são implementadas duas tabelas de fluxo "ocultas", a tabela 1 1092 e a tabela 2 1096. 0 processador H2W 530 utiliza uma tabela oculta, selecionada pelo comutador 1090, enquanto o firmware pode atualizar a outra tabela oculta, selecionada pelo comutador 1099. Dessa forma, pode ser implementada uma técnica "pingue-pongue" através da qual o firmware atualiza uma tabela enquanto a outra é usada para o processamento MAC. Cada tabela de fluxos oculta 1092 ou 1096 compreende uma lista de entradas dmac-tsid, com IDs de fluxo correspondentes. A tabela de fluxos oculta 1 1092 compreende as DMAC-TSID 1093a a η associadas às IDs de fluxo 1094a a n; a tabela de fluxos oculta 2 1096 compreende as DMAC-TSID 1097a a η associadas às IDs de fluxo 1098a a n. Dessa forma, o bloco de mapeamento de fluxos 1020 leva uma DMAC-TSID para a tabela de fluxos oculta selecionada como ativa e é retornada uma ID de fluxo. Na modalidade exemplar, para efetuar uma busca rápida da ID de fluxo, é efetuada uma busca binária. O firmware é bem adequado para colocar os campos DMAC-TSID em ordem, para facilitar uma busca binária. Os técnicos na área notarão que procedimentos alternativos de mapeamento de fluxos podem ser utilizados em modalidades alternativas.
Fazendo novamente referência à Figura 10a, a ID de fluxo é levada à tabela de estado de fluxo TX 1030, uma modalidade exemplar da mesma estando detalhada mais adiante com referência à Figura 11. A tabela de estado de fluxo TX 1030 compreende uma variedade de parâmetros para cada fluxo. A localização física da tabela de estado de fluxo TX 1030 pode variar, tal como foi acima descrito com referência às Figuras 3 e 4. Como exemplo, em uma configuração, a tabela de estado de fluxo TX 1030 pode ser mantida em uma tabela de hardware, no processador H2W 530. Em uma modalidade alternativa, a tabela de hardware pode residir no núcleo MAC inferior 540 (não é mostrado) e ambos os blocos 530 e 540 podem compartilhar a mesma tabela de hardware. Alternativamente, cada bloco 530 e 540 pode manter partes da tabela de hardware, tal como ilustrado de forma conceituai nas Figuras 3 e 4. A partir da ID de fluxo pode ser selecionada uma parte da tabela de estado de fluxo TX 1030 correspondente à ID de fluxo e vários parâmetros recuperados. Exemplos dos parâmetros serão descritos nas diversas modalidades.
Alguns parâmetros podem ser levados à unidade de politica ou policiamento 1010. As modalidades exemplares da unidade de policiamento serão descritas mais adiante. Caso a codificação esteja habilitada, um bloco de codificação, neste exemplo um código de integridade de mensagem (MIC) 1025, pode possuir chaves para uso na codificação.
No bloco MIC 1025 pode ser gerada uma computação MIC a partir das chaves fornecidas e dos dados na parte de carga útil do pacote. Nesta modalidade, é usado um componente separado para efetuar a codificação da carga útil (ver o mecanismo de protocolo legado 2210, detalhado mais adiante). Podem ser usadas técnicas de codificação alternativas bem conhecidas pelos técnicos na área.
Outros parâmetros podem ser levados para anexação ao cabeçalho 1035 para produzir um cabeçalho. 0 cabeçalho gerado pode incluir campos para uso no próprio cabeçalho, bem como valores de controle para uso enquanto o pacote passa pelas funções de processamento MAC. Tais valores de controle podem ser removidos antes que o pacote seja levado à transmissão. Está constitui uma técnica exemplar para manutenção de informações de estado para um pacote enquanto é efetuado o processamento MAC. Os técnicos na área notarão que técnicas alternativas podem ser usadas para a manutenção do estado de pacotes ao se efetuar as várias funções MAC sobre os mesmos.
A unidade de política 1010, em associação com os parâmetros transferidos a partir da tabela de estado de fluxo 1030, pode rejeitar o pacote, caso este em que as funções de codificação, tais como a computação MIC, não serão efetuadas, e o pacote pode ser removido do FIFO. Modalidades exemplares de políticas de entrada serão detalhadas mais adiante. Caso a unidade de política 1010 permitir o pacote, então a carga útil juntamente com a parte MIC gerada na MIC 1025, caso habilitada, e o cabeçalho apropriado são levados ao armazenamento no FIFO 1050.
A Figura 11 apresenta uma modalidade exemplar do conteúdo da tabela de estado de fluxo TX 1030. são mantidos conjuntos de parâmetros para cada fluxo. Estão ilustrados os parâmetros de um único fluxo. 0 tipo de pacote 1102 especifica qual tipo de pacote está sendo recebido. Como exemplo, o pacote pode ser um pacote 802. Hg, e ou n. Podem ser suportados outros tipos de pacotes, que podem ser indicados no campo de tipo de pacote 1102.
A política de segurança 1104 indica se serão usadas técnicas de segurança (tais como codificação). A modalidade exemplar suporta AES-CCMP (norma de codificação avançada - protocolo MAC de autenticação de mensagem por encadeamento de bloco de cifra em contra modo) e RC4-TKIP (protocolo de integração de chave temporal - cifra 4 de Rivest). O endereço de receptor 1106 indica o endereço MAC do receptor para o qual se destina o pacote. O número de seqüência 1108 indica o número de seqüência do pacote. A chave MIC 1110 identifica a chave MlC caso tkip esteja habilitado. O controle de quadro 1112 inclui informações para montagem do cabeçalho apropriado.
O controle de qualidade de serviço (QoS) 1114 pode ser usado para indicar o nível de QoS. Na modalidade exemplar são mantidos quatro níveis de QoS. Exemplos de gerenciamento de filas para diferentes valores de QoS serão ilustrados mais adiante.
O campo de vida útil ou validade 1116 pode ser usado para indicar por quanto tempo um pacote pode permanecer no armazenador. Uma vez expirado o tempo de vida, por exemplo, o pacote pode ser descartado. A ocupação máxima de armazenador 1118, máximo de pacotes por fluxo 1120 e pacotes acumulados por fluxo 1122 são usados, na modalidade exemplar, na política de entrada, tal como na unidade de política/policiamento 1010, exemplos dos quais serão detalhados mais adiante com referência às Figuras 12 e 13. Note-se que pode ser usada uma variável global de ocupação corrente de armazenador em conjunto com estes três parâmetros para efetuar uma variedade de técnicas de policiamento de entrada. 0 ponteiro de término de fila 1124 é usado para identificar o nó terminal, tal como foi acima descrito com referência às Figuras 6 e 9.
Tais variáveis ou parâmetros da tabela de estado de fluxo TX são meramente ilustrativos. Os técnicos na área notarão que variáveis ou parâmetros adicionais podem ser úteis para a manutenção por fluxo e que podem também ser incluídos. Além disso, nem todos os recursos/características necessitam ser suportados em todas as modalidades e, portanto, pode ser implementado um subconjunto de tais parâmetros.
A Figura 12 apresenta uma modalidade exemplar de método 1200 para efetuar policiamento de entrada. Uma descrição mais generalizada das vantagens do policiamento de entrada será provida mais adiante com referência à Figura 34, no contexto de repasse de saída e QoS geral da WLAN. Como foi acima descrito com relação à tabela de estado de fluxo TX 1030 exemplar na Figura 11, pode ser mantida uma variedade de parâmetros para cada fluxo. Tais parâmetros podem ser adequados, com base no nível de QoS, para admissão ou rejeição de pacotes mais rapidamente pela função de policiamento.
Apesar de estar relacionada à QoS da WLAN, esta constitui uma técnica adicional que reconhece que, ao interagir com o ingresso de alta velocidade (o qual pode ser em rajadas e compreender uma mistura de fluxos de alta e baixa QoS), pode ser formado um "gargalo" na unidade de processamento MAC em separado do congestionamento na própria WLAN. Como exemplo, é possível que as funções de processamento MAC possam estar preenchidas com pacotes de QoS mais baixa. Sem uma política apropriada, os pacotes de QoS mais baixa podem ser introduzidos na linha durante épocas de congestionamento relativamente baixo, um gargalo podendo se formar caso as condições na WLAN se degradem e a capacidade de transmissão seja reduzida. Dessa forma, a unidade de policiamento 1010 pode ser configurada para permitir que pacotes de QoS mais elevada mantenham sua prioridade durante os momentos de congestionamento relativo e pode permitir com maior liberdade que pacotes de QoS mais baixa sejam processados quando o congestionamento for reduzido. As normas 802.11 (b, g, e, n, por exemplo) dão atenção ao controle de QoS na WLAN, todavia sem atenção suficiente à entrada. Portanto, caso um aplicativo de baixa QoS ocupe todos os armazenadors em uma estação, então um pacote de maior prioridade não poderá obter acesso ao sistema. A política de entrada, tal como aqui descrita, pode impedir tais situações e prover QoS de ponta a ponta, e não apenas na QoS da WLAN. Os técnicos na área notarão a possibilidade de várias modalidades alternativas para as funções de policiamento à luz dos presentes ensinamentos.
Fazendo novamente referência à Figura 12, em 1210 um pacote é recebido para transmissão. Como exemplo, o pacote pode ser introduzido em um processador H2W 530 e uma unidade de policiamento 1010 pode determinar se deve aceitar ou rejeitar o pacote para processamento MAC adicional. Em 1220, determina-se a ID do pacote recebido. Como exemplo, pode ser usado o bloco de mapeamento de fluxo 1020. Em 1230, acessar parâmetros de policiamento e/ou uma função de policiamento associada à ID de fluxo. Em uma modalidade exemplar, tais parâmetros podem estar armazenados na tabela de estado de fluxo TX 1030 e podem incluir a ocupação máxima do armazenador 1118, o máximo de pacotes por fluxo 1120 e os pacotes acumulados por fluxo 1122. na tabela de estado de fluxo TX 1030 exemplar da Figura 11 não é mostrada a possibilidade de que uma pluralidade de funções de policiamento pode ser especificada (e talvez parâmetros alternativos associados à mesma), com diferentes funções de policiamento usadas para diferentes fluxos. No bloco de decisão 1240, caso a aceitação do pacote recebido atenda à função de policiamento apropriada especificada para o fluxo, de acordo com os parâmetros específicos do fluxo e quaisquer variáveis globais relacionadas ao congestionamento corrente ou a outras condições do sistema, passar a 1250 e admitir o pacote. Caso contrário, passar a 1260 e rejeitar o pacote.
A seguir, o processo pode parar.
A Figura 13 ilustra uma modalidade exemplar de um método 1300 de uma função de policiamento, adequado para implementação como a etapa 1240 na Figura 12. Como foi acima descrito, os parâmetros de ocupação máxima de armazenador e máximo de pacotes por fluxo podem ser ajustados para cada fluxo individual. Eles podem estar associados aos níveis de QoS do fluxo. Note-se, na modalidade exemplar, que são implementados quatro níveis de QoS. No entanto, tais parâmetros podem ser dimensionados de modo a acomodar uma variação maior do que os níveis de QoS predefinidos. Dessa forma, em algumas modalidades, a função de policiamento pode ser implementada com uma "granulação" mais fina do que em uma situação exemplar de QoS. No presente exemplo, o bloco de decisão 1240, ao pode se chegar a partir do 1230 quando implementado tal como mostrado na Figura 12, determina se deve ou não ser admitido um pacote (passando ao bloco 1250 ou 1260, respectivamente, quando implementados tal como mostrado na Figura 12).
O teste exemplar no bloco de decisão 1240 compreende dois termos. O atendimento a um dos termos permite que o pacote seja aceito. Caso ambos não sejam atendidos, o pacote é rejeitado.
O primeiro termo pode ser considerado como um indicador de congestionamento no interior da unidade de processamento MAC. Quando a unidade de processamento MAC estiver relativamente não congestionada, o primeiro termo será verdadeiro com maior probabilidade, mesmo para pacotes de menor prioridade e, portanto, os pacotes mais provavelmente serão admitidos. No exemplo apresentado, o primeiro termo é verdadeiro quando a ocupação corrente do armazenador for menor do que a ocupação máxima do armazenador. Neste caso a ocupação corrente do armazenador constitui uma variável global disponível para o processo, a qual indica a ocupação total do armazenador de pacotes. Note-se que a ocupação máxima de armazenador pode ser ajustada de forma diferente para diferentes fluxos, levando assim o primeiro termo da declaração OU a ser mais ou menos restringente, conforme desejado. Como exemplo, um fluxo de alta QoS pode possuir um ajuste de ocupação máxima de armazenador mais elevado, portanto a admissão será mais provável. Em contraste, um ajuste mais baixo de ocupação máxima de armazenador irá reduzir a probabilidade de admissão. Dito de outra forma, a ocupação máxima de armazenador pode ser especificada por fluxo, o que permite noções diferentes do significado de congestionamento com base no tipo de fluxo.
O segundo termo irá de um modo geral governar quando ocorre congestionamento relativo. Neste caso predominam as informações por fluxo. No exemplo apresentado, o segundo termo é verdadeiro caso os pacotes correntes por fluxo para o fluxo em questão sejam menos do que o número máximo de pacotes por fluxo especificado.
Especificamente, o máximo de pacotes por fluxo pode ser ajustado para o fluxo de tal forma que fluxos de maior prioridade recebam um valor mais elevado e fluxos de menor prioridade recebam um valor mais baixo. Dessa forma, quando a ocupação corrente de armazenador esteja relativamente congestionada (portanto o primeiro termo não sendo verdadeiro), pacotes de prioridade mais elevada, possuindo um número máximo de pacotes por fluxo mais elevado, serão mais provavelmente admitidos. 0 máximo de pacotes por fluxo para menor prioridade pode ser tornado mais baixo. Dessa forma, em lugar de restringi-los completamente, relativamente poucos dos pacotes de menor prioridade serão admitidos. Em uma modalidade alternativa, os pacotes acumulados por fluxo podem ser computados com um valor de tempo (o valor de tempo pode variar entre fluxos) para gerar uma taxa de pacotes para um fluxo. 0 máximo de pacotes por fluxo pode então ser ajustado de forma similar para uma taxa de pacotes por fluxo. São contemplados vários parâmetros alternativos e condições correlacionadas para a admissão ou rejeição de pacotes, o que ficará claro para os técnicos na área à luz dos presentes ensinamentos.
Note-se que tais parâmetros não necessitam permanecer estáticos e podem ser atualizados com base em outras condições do sistema (por exemplo, qualidade de enlace e taxas associadas, tal como indicado na realimentação de taxa proveniente da PHY) . Os técnicos na área notarão a possibilidade de vários ajustes para cada uma das variáveis e notarão que tais ajustes podem ser modificados de diversas formas em resposta a condições mutáveis no sistema. O resultado final é o de que uma função de policiamento eficaz pode ser implementada de forma eficiente na velocidade de linha pela mera recuperação de parâmetros por fluxo a partir da tabela de estado de fluxo TX 1030, e uma decisão pode ser tomada rapidamente para cada pacote recebido. Note-se que a admissão ou rejeição de pacotes de acordo com uma função de policiamento de entrada podem ser combinadas com qualquer técnica de controle de fluxo, exemplos da qual são bem conhecidos pelos técnicos na área, de tal forma que taxas variáveis de processamento de pacotes podem ser efetuadas sem perda de pacotes. Em uma modalidade, pode ser recebido um identificador de fluxo antes da recepção de um pacote inteiro em uma interface externa para permitir que seja efetuada a decisão de política de entrada, evitando-se o uso de amplitude de banda da interface para receber um pacote quando o pacote for rejeitado.
Em suma, este exemplo ressalta várias opções para o policiamento. Sob carga elevada, um único fluxo (mesmo que seja um fluxo de alta prioridade) pode ser impedido de dominar os recursos, permitindo concomitantemente maior acesso a fluxos de maior prioridade. Sob carga leve, decisões menos restritivas podem permitir que fluxos de baixa prioridade utilizem os recursos, uma vez que eles não estão sendo usados no momento. A política de entrada pode ser qualquer função das quatro variáveis descritas (e modalidades alternativas podem utilizar outras variáveis ou parâmetros). O policiamento pode ser usado para igualdade/justiça, para permitir pelo menos algum acesso para todos os tipos de fluxos, mesmo que outros sejam preferidos em qualquer grau que seja desejado. As políticas podem também ser usadas para gerenciar uma baixa qualidade do enlace. Independentemente de ser desejado qualidade de enlace ou ajuste de congestionamento, ou uma combinação de ambos, os mesmos (ou similares) parâmetros podem ser usados.
Fazendo novamente referência à Figura 10a, a saida do FIFO 1050 é levada ao bloco de fragmentação 1060. note-se que o FIFO 1050 pode incluir um ou mais pacotes que foram aceitos, juntamente com seus respectivos headers, e uma computação MIC, caso se aplique. A fragmentação pode ser efetuada dependendo do tipo de pacote. Como exemplo, a fragmentação pode ser habilitada para a 802.11e ou g, ou qualquer outro tipo de pacote para o qual seja desejada a fragmentação. Na modalidade exemplar, uma variável global, o limite de fragmentação (FT), é ajustada através da função de gerenciamento do ponto de acesso (ela é um elemento de capacidade ajustado no quadro de sinalizador (beacon)). Ela de um modo geral não se modifica durante períodos de tempo curtos. O firmware pode ajustar o limite de fragmentação em um registrador. Caso um pacote supere o limite de fragmentação, se particiona o pacote em fragmentos dentro do porte do ft com um possível fragmento parcial residual.
Note-se que a fragmentação não é necessária. Em uma modalidade alternativa, o fragmento 1060 e todas as funções relacionadas podem ser omitidos. Em outra modalidade alternativa, detalhada mais adiante com referência à Figura 48, pode ser implementado mais de um bloco de processamento MAC. Em tal modalidade, um bloco de processamento MAC pode estar equipado para efetuar a fragmentação, enquanto outro bloco de processamento MAC não estaria equipado para tal. Em um caso, os pacotes de alta velocidade podem não demandar ou suportar a fragmentação e podem ser processado em um processador H2W 530 sem o bloco de fragmentação 1060, enquanto o suporte para outros tipos de pacotes incluindo fragmentação (tais como pacotes 802.11 legados) pode ser provido em um processador MAC adicional, tal como o processador MAC 4810 detalhado mais adiante. Os técnicos na área notarão prontamente as vantagens e desvantagens ao implementar uma modalidade incluindo um único processador capaz de processar todas as funções de vários tipos de pacotes, e outra modalidade compreendendo dois ou mais processadores MAC, cada um capaz de prover qualquer subconjunto de funcionalidades. Naturalmente, pode também ser implementado um único processador MAC capaz de processar pacotes requerendo um único conjunto de funcionalidades.
0 bloco de fragmentação 1060 determina o número de fragmentos com base no limite de fragmentação e no comprimento do pacote. O número de fragmentos é levado ao bloco de listar funções 1065, que retorna ponteiros para o bloco de fragmentação 1060. Quando a fragmentação não está habilitada, ou caso o limite de fragmentação não seja superado, o número de fragmentos será um e um único ponteiro de nó e seus associados um ou mais ponteiros serão retornados. O bloco de listar funções 1065 efetua vários procedimentos de lista interligada, aplicáveis para a estrutura de memória implementada (tal como acima descrito na Figura 6). Note-se que, como mostrado, a cache de ponteiros de nós 810 e a cache de ponteiros de grandes blocos 820 residem no bloco de listar função, por exemplo. Dessa forma, um grupo de ponteiros disponíveis pode ser tomado a partir do grupo disponível em cada cache. Os detalhes ce como atualizar e preencher tais caches não são apresentados, porém ficarão claros para os técnicos na área à luz dos presentes ensinamentos. Conceitualmente, tal como mostrado na Figura 10a, um certo número de fragmentos pode ser enviado para a lista de funções 1065 e um grupo de ponteiros para tal número de fragmentos pode ser retornado. Caso não haja qualquer fragmentação, o número de fragmentos é de um e um único ponteiro de nó e seu ponteiro ou ponteiros de grande bloco associados podem ser retornados.
Em uma modalidade alternativa, pode ser efetuada uma função similar pelo bloco de fragmentação 1060, em que chamadas repetidas à função de lista 1065 são efetuadas para cada fragmento até que todo o pacote tenha sido fragmentado. A medida que cada ponteiro é retornado, a ocupação de armazenador total variável é incrementada de acordo com o número de blocos ou pacotes. A ocupação de armazenador poderia ser ou medida na modalidade exemplar e modalidades alternativas podem usar medidas alternativas.
A Figura 14 apresenta uma modalidade exemplar de FIFO 1050. 0 FIFO 1050 inclui uma ou mais unidades de dados de serviço MAC (MSDU) 1410a a n. Cada MSDU compreende um cabeçalho 1430, uma carga útil 1440 e uma computação MIC 1450 (caso seja usado tkip), tal como acima descrito. Em uma modalidade, dados de controle podem ser adicionados a cada MSDU no FIFO 1050, que pode ser realimentado a partir do bloco de fragmentação 1060, tal como acima descrito. Em uma modalidade alternativa, informações de controle não são mantidas no FIFO 1050. Note-se que as informações de controle adicionadas para uso no processador H2W 530 serão extraídas antes de gravar o pacote na memória de armazenador de pacotes.
Caso não seja necessária qualquer fragmentação, então a MSDU pode ser armazenada diretamente no armazenador 1062. Ela pode ser armazenada com o ponteiro de nó e ponteiros de grandes blocos recuperados a partir da lista de funções 1065. A lista de funções fornece o número e endereços de blocos para cada pacote, a carga útil do pacote (e portanto as cargas úteis do grupo) é gravada na memória nos endereços correspondentes. Caso seja desejada a fragmentação então cada fragmento que é criado é também armazenado no armazenador 1062.
O conteúdo do armazenador 1062 é levado à gravação de memória 1070. A gravação de memória 1070 interage com o árbitro de memória 108 0, que compete por acesso à memória de armazenador de pacotes para realmente alimentar o pacote e/ou fragmentos no armazenador de pacotes. Note-se que o árbitro de memória 1080 pode ser implementado na forma de um dos árbitros de memória 556 ou 552, tal como mostrado na Figura 5, dependendo da configuração do ASIC de processador MAC 310.
O árbitro de memória 1080 recebe uma requisição proveniente da gravação de memória 1070 e pode receber outras requisições provenientes de outros componentes competindo por acesso à memória de armazenador de pacotes. Quando o acesso é concedido, uma concessão será retornada para a gravação de memória 1070 e o pacote e/ou fragmentos são gravados na memória de armazenador de pacotes. Um método similar àquele descrito na Figura 9 pode ser usado para efetuar a gravação na memória. Como exemplo, o nó é criado e preenchido com os dados correntes, incluindo o comprimento e ponteiros de grandes blocos, etc., tal como descrito. Os blocos são a seguir gravados em acessos de 64 bytes, na modalidade exemplar, até que cada grupo de 512 bytes esteja preenchido. A gravação de memória 1070 continua a efetuar requisições até que todo o pacote, incluindo todos os fragmentos, se algum existir, sejam gravados na RAM. Os ponteiros usados para entrelaçar o pacote na fila apropriada são recuperados conforme o ponteiro de nó para o pacote (ou ponteiros de nós para cada fragmento) , bem como o ponteiro de término de fila para identificar o último nó na fila (a posição em que novos pacotes subseqüentes e/ou fragmentos serão anexados).
Em uma modalidade, um árbitro de memória recebe requisições provenientes de uma máquina de estado de entrada, uma máquina de estado WLAN TX, uma máquina de estado WLAN RX e uma máquina de estado de saída. Ele pode arbitrar entre tais requisições por meio de prioridades - um exemplo consistindo na seguinte ordem de prioridades: WLAN RX, WLAN TX, entrada e saída. As máquinas de estado podem necessitar todo o pacote a ser lido/recuperado ou gravado. Em outras ocasiões, as máquinas de estado podem apenas estar procurando por um ponteiro de nó, um ponteiro de grande bloco e/ou outras informações de controle, de modo a efetuar a programação e outras funções. Pode ser estabelecido um sistema de prioridades cobrindo leituras e gravações de pacotes e controle para finalidades de WLAN RX/TX e entrada/saida.
Os fluxos são estabelecidos quando uma especificação do fluxo (isto é, uma T-SPEC) for efetuada por uma estação. Neste momento, o firmware pode estabelecer uma entrada em todas as tabelas relacionadas ao fluxo. Ele pode também popular/preencher um ponteiro de cabeça (e, portanto, um primeiro pacote) para tal fluxo. Os técnicos na área conhecerão vários outros métodos para manter o controle de novas filas e para atualizar ponteiros inicial de fila associados.
Na modalidade exemplar, o árbitro de memória restringe o acesso à memória a um número limitado de bytes (por exemplo, 64) de modo a permitir a outros componentes igualdade de acesso à memória de armazenador de pacotes. Em uma modalidade exemplar, um acesso por rodízio é concedido à memória entre requisições de gravação de entrada, gravações WLAN RX e saída WLAN TX (isto é, repasse, detalhado mais adiante). Como exemplo, uma MPDU de 1500 bytes iria introduzir muita latência para outros que aguardam acesso, caso toda a MPDU fosse gravada em uma corrente sem interrupção. Um programa, tal como um acesso por rodízio, impede a parada em outros processos.
A Figura 15 ilustra o processo de dividir uma MSDU 1410 em um ou mais fragmentos (cada um dimensionado de acordo com o limite de fragmentação), mais um possível fragmento residual. Neste exemplo, o controle 1420 é omitido. Em uma modalidade alternativa, o controle 1420 poderia ser simplesmente pré-anexado ao primeiro cabeçalho 1510, tal como mostrado. As informações de controle podem incluir ponteiros, ou quaisquer outras informações de controle, que podem ser pré-anexadas a cada cabeçalho 1510, podendo ser extraídas antes de completar uma gravação de memória. Na Figura 15, cada fragmento 1530a a η é pré- anexado com um cabeçalho 1510 e cada fragmento é identificado como carga útil 1520, a qual constitui uma parte da carga útil 1440 proveniente da MSDU. Cada cabeçalho 1510 inclui o número de seqüência 1540, que é o número de seqüência do pacote, e um número de fragmento 1550, que é o número associado a cada fragmento individual.
Na modalidade exemplar, após ser efetuada a fragmentação, cada fragmento é subseqüentemente tratado como um pacote. Isto permite o processamento eficiente de pacotes e fragmentos através das várias técnicas de processamento MAC aqui descritas. Modalidades alternativas não necessitam compartilhar tal exigência. O fragmento final 1530n inclui o MIC 1450, caso seja usado tkip. Note- se que, na modalidade exemplar, o MIC foi computado sobre o pacote antes da fragmentação pelo MIC 1025.
A Figura 16 apresenta uma configuração conceituai do árbitro 556 em conjunto com duas ou mais gravações de memória 1610a a 1610n. Uma gravação de memória 1610 poderia ser a gravação de memória 1070 acima descrita, ou uma das várias outras detalhadas mais adiante. Cada bloco de gravação de memória envia uma requisição 1630 para o árbitro 556. O árbitro 556 envia uma linha de concessão 1640 para cada bloco de gravação de memória indicando quando se inicia a gravação de memória. 0 árbitro 556 pode também controlar o MUX 1620 para selecionar a saída do componente de gravação de memória concedido para entrega ao controlador SDRAM 1650. Como exemplo, o controlador SDRAM 1650 pode ser a interface SDRAM 562 no exemplo apresentado na Figura 5, ou pode incluir quaisquer outros componentes acoplados à SDRAM 340. Note-se que um esquema de arbitragem 552 de modo a gravar pacotes na memória de pacotes de acordo com os modos de configuração selecionados. Vários esquemas de arbitragem de memória são conhecidos pelos técnicos na área, qualquer um dos quais pode ser implementado em várias das presentes modalidades. Em uma modalidade exemplar, o controlador é de um modo geral seguido por uma interface. 0 controlador pode controlar a lógica de leituras e gravações na memória, enquanto a interface provê a conexão física. A Figura 16 serve como um exemplo ilustrativo.
PROCESSAMENTO DE TRANSMISSÃO
Na seção anterior, foram descritas várias modalidades ilustrando aspectos para o processamento MAC eficiente de pacotes de entrada, utilizando várias estruturas de dados, para aguardar a transmissão. Na presente seção de processamento de transmissão, ficarão claras outras eficiências obtidas pelo uso das estruturas de dados acima descritas. Além disso, serão introduzidos outros aspectos que aumentam a eficiência para o processamento MAC de alta velocidade.
De um modo geral, um ponto de acesso capaz de suportar vários fluxos para múltiplas STAs propicia uma análise mais complexa do que uma STA relativamente simples suportando 16 fluxos. Dessa forma, em muitas das modalidades detalhadas a seguir, o ponto de acesso mais complexo será usado como uma referência. Quando necessário, serão ressaltadas as diferenças entre uma STA e um ponto de acesso. É de um modo geral desejável no processamento de transmissão a capacidade de acomodar um alto número de fluxos e ainda responder rapidamente quando oportunidades de transmissão se tornam disponíveis. Além disso, pode ser importante o suporte a especificações de transmissão herdadas. Alguns aspectos são ressaltados devido à redução na área de circuitos, uso mais eficiente dos circuitos, simplicidade de projeto e/ou a capacidade de interação com protocolo e componentes legados. Um exemplo que ilustra a necessidade para resposta pronta quando surge uma oportunidade de transmissão inclui o protocolo de transporte de economia de energia automática não programada (UAPSD). Outro exemplo é o de ACK imediata de bloco. As modalidades detalhadas a seguir propiciam suporte eficiente para múltiplos fluxos para manter um subconjunto de pacotes pronto para resposta rápida. Isto permite o suporte para UAPSD, ACK imediata de blocos e transporte imediato quando é obtida uma TXOP. Isto irá, na maioria dos casos, impedir a necessidade de técnicas usadas anteriormente para reserva de amplitude de banda, tal como no auto envio de CTS, etc. Como exemplo, caso o congestionamento no acesso à memória impede a preparação de um grande agregado, um pequeno conjunto de pacotes pode ser rapidamente transmitido durante uma TXOP.
Uma vez recebida uma ACK para tal conjunto de pacotes, caso exista capacidade remanescente na TXOP, podem ser transmitidos pacotes adicionais. Como foi acima mencionado, a remoção de firmware das partes de alta velocidade do processamento de pacotes aumenta a eficiência. Em modalidades exemplares, podem ser implementados várias caches e filas para desacoplar o processamento de firmware (e sua velocidade relativamente menor) do processamento MAC. Estes e outros aspectos serão ilustrados em várias modalidades a seguir.
Nas modalidades exemplares detalhadas a seguir, estão ilustrados vários aspectos. Em um aspecto, é implementada uma pluralidade de caches, cada um deles usado para armazenar elementos associados a pacotes de um fluxo.
Tais caches (ilustrados pelas caches de nós 1810, a seguir) permite tempos de resposta de baixa latência em uma variedade de aplicações. A resposta de baixa latência permite a uma estação ou ponto de acesso fazer uso eficiente de oportunidades de transmissão de vários tipos, tais como concessões de direção inversa/reversa, UAPSD e requisições similares, e ser capaz de captar uma oportunidade de transmissão remanescente após uma transmissão. A resposta de baixa latência facilita o escape de colisões ou conflitos (por exemplo, uma resposta bem sucedida a um alerta (prompt) em uma oportunidade de transmissão precoce pode evitar uma colisão causada pela competição que iria ocorrer em uma tentativa de resposta tardia). A resposta de baixa latência pode facilitar economias de energia.
Em outro aspecto, filas ocultas (designadas mais adiante como filas "pingpong" e definidas por uma fila em espera e uma fila em serviço) permitem o enfileiramento de elementos de um fluxo em antecipação a uma oportunidade de transmissão (mesmo quando outro fluxo estiver sendo processado para transmissão). Dessa forma, o fluxo fica aguardando, pronto para ser processado. Isto facilita o postergar o processamento para tão tarde quanto possível. A postergação é amiúde desejável para permitir postergar uma decisão de taxa para um fluxo, pois então a decisão sobre a taxa será tão recente e atualizada quanto possível, permitindo que a taxa apropriada seja selecionada para maximizar a capacidade de transmissão e/ou minimizar erros.
Em outro aspecto, o preenchimento de uma fila (ilustrado na forma das filas 1842, 1850 e 1855, a seguir) com elementos associados a pacotes para um fluxo, facilita a rápida determinação de comprimento para formação de um pacote (útil para a determinação postergada de taxa), bem como a pronta agregação de pacotes. Além da agregação em geral, os aspectos ilustrados facilitam a retransmissão (isto é, em resposta a uma confirmação (ACK) de bloco recebida). Tais aspectos são separadamente desejados em vários contextos, podendo também ser combinados.
Em sistemas 802.11 herdados, é tipicamente provido o suporte a quatro filas EDCA. Note-se que as filas EDCA competem por acesso durante períodos não programados no meio e, uma vez obtida uma TXOP, transmitem tantos dados quanto possível, até uma TXOP máxima especificada. Para acomodar filas EDCA competidoras, são implementados vários esquemas de recuo para impedir tentativas contínuas e simultâneas de obtenção de uma TXOP por filas EDCA em competição. Dessa forma, cada fila EDCA pode ser associada a um canal, para o qual são mantidos vários temporizadores, é efetuada a avaliação ou confirmação de canal limpo (cca) e efetuados outros procedimentos para obtenção de acesso.
Algumas dessas funções podem ser compartilhadas por canais ou filas, e algumas podem ser diferentes. Em um dispositivo de comunicação sem fio, tal como um ponto de acesso, que deseja suportar vários fluxos simultaneamente (por exemplo, 256 fluxos em uma modalidade exemplar), pode não ser desejável a manutenção de temporizadores de recúo e efetuar os vários overheads associados à obtenção de TXOPs para cada um de um grande número de fluxos. Diferentes ajustes para os vários parâmetros de um tipo de canal podem resultar no provimento de diferentes níveis de qualidade de serviço.
A Figura 17 apresenta uma modalidade exemplar de uma parte de um dispositivo de comunicação sem fio configurado para suportar uma pluralidade relativamente grande de filas EDCA 1710 usando um conjunto fixo, menor, de filas EDCA padrão 1730. Em uma aplicação, pode ser implementada uma pluralidade de filas EDCA, cada uma provendo um diferente nível de qualidade de serviço. Neste exemplo é mantida uma pluralidade de N filas EDCA 1710a a η por estação. Na modalidade exemplar, podem ser mantidas 256 de tais filas para cada um dos 256 fluxos suportados. 0 seletor de rodízio (Round Robin) 1720 arbitra entre as filas EDCA por estação e seleciona dados a serem enfileirados em uma de 4 filas EDCA padrão 1730a a d. Em uma modalidade alternativa, um algoritmo de programação alternativo, além de rodízio, pode ser efetuado por um seletor 1720. Um seletor pode ser implementado de várias formas, um exemplo das quais será detalhado a seguir na Figura 18. Na modalidade exemplar, o firmware inclui uma função de programação que provê os critérios de seleção por fila de estação EDCA para transporte usando uma das filas EDCA padrão. Em modalidades alternativas, naturalmente, pode ser suportado qualquer número de filas EDCA. Quatro filas são implementadas em uma modalidade devido a disponibilidade de componentes de processamento herdados existentes, com os temporizadores e componentes de avaliação de canal necessários para competir por e obter acesso ao canal compartilhado. Os técnicos na área conhecerão vários núcleos e componentes 802.11 legados que podem ser incluídos em várias das presentes modalidades, ou modificados para suportar recursos adicionais desejados. Modalidades exemplares utilizando componentes e/ou núcleos legados de acordo com os princípios aqui descritos serão detalhadas mais adiante.
Os pacotes programados nas filas EDCA 1730a a d podem ser transmitidos usando-se procedimentos EDCA padrão. Um programador de firmware pode efetuar programação adicional além da EDCA, tal como TXOPs agrupadas (um exemplo das quais é conhecido no protocolo HCCA). Vários outros protocolos podem ser desenvolvidos, para os quais pode ser adaptado um programador, como será do conhecimento dos técnicos na área.
Além da seleção rotativa das filas EDCA 1710 para transmissão com filas padrão, é de um modo geral mais eficiente agregar pacotes para cada STA e efetuar o direcionamento Eigen (ou outro processamento espacial) para todos os pacotes provenientes de tal estação. 0 direcionamento Eigen propicia o maior benefício quando as transmissões são direcionadas para uma estação específica (ou para um grupo de estação similarmente posicionadas).
Dessa forma, pode fazer sentido colocar todos os pacotes destinados a uma dada estação em um armazenador, de modo a que eles possam ser agregados e transmitidos para tal estação. É possível, em uma modalidade alternativa, se ter um único armazenador para todos os pacotes EDCA. No entanto, em tal caso, quando os pacotes estiverem intercalados com aqueles de outras estações (com outros valores de direcionamento Eigen) então a agregação pode ser difícil ou impossível.
O uso de filas EDCA é meramente ilustrativo. De um modo geral, pode ser implementada uma seleção de filas, associada a canais de vários tipos. Os tipos de canal podem variar com base no nível de qualidade de serviço e/ou tipo de transmissão, tal como, por exemplo, acesso programado ou com base em conflito.
A Figura 18 apresenta uma modalidade exemplar ilustrando vários componentes de um núcleo MAC inferior 540. No exemplo a seguir serão ilustrados vários aspectos propiciando eficiências para o uso de nós para processamento de pacotes, filas e caches para desacoplar o firmware da velocidade de processamento de pacotes. Os técnicos na área notarão que podem ser implementados componentes adicionais (não são mostrados) e que nem todos os aspectos ou recursos ilustrados são necessários em qualquer modalidade específica para obtenção das vantagens de outros aspectos e recursos. Os detalhes da Figura 18 ilustram a programação de fluxos e a identificação de vários pacotes finalmente programados para transmissão. 0 resultado final consiste do transporte dos identificadores associados aos pacotes programados, parâmetros associados e um sinal de "pronto" para cada tipo de canal para i mecanismo de transmissão (TX) 1880. Na presente modalidade, a identificação de pacotes é efetuada usando-se nós, tal como foi acima descrito. Neste exemplo, são usados canais do tipo 802.11 legados com o propósito de ilustração. Os técnicos na área notarão que qualquer tipo de canal pode ser acomodado usando-se componentes similares detalhados na Figura 18. Neste exemplo, são mantidas quatro filas EDCA, as EDCA 0 a 3 1850a a d. Uma fila EDCA 1855 é também implementada juntamente com um canal de controle de difusão (broadcast) 1860. A estrutura da EDCA 0 está ilustrada em maiores detalhes, com alguns detalhes sendo omitidos para os outros canais, uma vez que eles podem ser iguais ou similares em várias modalidades.
A programação da transmissão se inicia com o firmware preenchendo uma ou mais listas de comandos 1815 associadas a cada canal (1850 ou 1855, por exemplo) . As listas de comando são preenchidas com IDs de fluxos a serem programados. A lista de comandos pode conter uma ID de fluxo juntamente com uma TXOP. Para as filas EDCA, a TXOP será disputada e, portanto, o instante/tempo de transmissão pode não ser conhecido antecipadamente. No entanto, um tamanho máximo de TXOP pode ser incluído juntamente com a ID de fluxo. Para a programação HCCA, o tamanho da TXOP pode ser conhecido, bem como o instante de entrega programado, tais informações TXOP podem ser incluídas com a ID de fluxo em uma lista de comandos 1815 associada. Para cada canal, um controlador de arranjo 1840 pode controlar a programação de pacotes para o canal o controlador de arranjo extrai uma ID de fluxo a partir da lista de comandos 1815 para determinar o próximo fluxo programado para transmissão. A manutenção de várias dessas listas de comando permite ao programador de firmware efetuar um grupo de decisões de uma só vez e coloca-las nas respectivas listas, que podem ser efetuadas ao longo do tempo. Isto permite aos vários controladores de arranjo 1840 processar as IDs de fluxo provenientes das listas, reduzindo a necessidade de interação com o firmware. Isto permite uma redução ou eliminação de interrupções ao firmware e desacopla a programação do firmware do processamento MAC, tal como foi acima descrito. Os técnicos na área poderão facilmente adaptar técnicas alternativas para programação dos fluxos para serviço em um conjunto de canais suportados, incluindo canais com base na competição tipo EDCA ou canais agrupados ou programados do tipo HCCA.
No presente exemplo, uma cachede nós TX 1810 é mantido para cada um dentre a pluralidade de fluxos suportados. Os caches de nós TX 1810 servem como exemplo de caches gerais por fluxo e são adequados para implementação como as filas 1710 acima ilustradas. Na modalidade exemplar, serão mantidos 256 de tais fluxos. Cada cache de fluxos compreende espaço para uma pluralidade de nós (que representam os respectivos pacotes para o fluxo). Na modalidade exemplar, são mantidos quatro nós para cada fluxo em cada cache de nós TX 1810. Dessa forma, pelo menos quatro pacotes são identificados como os próximos a serem transmitidos para cada um dos 256 fluxos. Qualquer transmissão imediata necessária para tais fluxos pode ser atendida por pelo menos tais quatro nós. Em modalidades alternativas, podem ser suportados nós adicionais, caso desejado.
Apesar de serem usados nós nesta modalidade exemplar para ilustrar um aspecto, existem várias técnicas equivalentes que podem ser implementadas. Como exemplo, poderiam ser colocadas em cache estruturas de dados alternativas. Como outro exemplo, o próprio pacote poderia ser colocado em cache. De um modo geral, as caches, ilustradas como a pluralidade de caches 1810, serão usadas para armazenar um ou mais elementos a partir dos quais um ou mais respectivos pacotes podem ser identificados e recuperados após o processamento dos elementos em cache.
A atualização de cache de nós TX 1835 interage com as caches 1810 para mantê-los preenchidos e atualizados. A atualização de cache de nós TX 1835 pode interagir com um árbitro de memória, tal como o árbitro de memória 1080 acima descrito. Em uma modalidade, é efetuada uma requisição para recuperação de um ou mais nós para fluxos e, quando o acesso é concedido ao armazenador de pacotes, os nós recuperados podem ser colocados na respectiva cache de nós TX 1810. A atualização de cache de nós TX pode ser operada de forma relativamente autônoma do restante do processamento apresentado na Figura 18.
Os controladores de arranjo 1840 para cada canal determinam a próxima ID de fluxo para transmissão a partir da lista de comandos 1815. A partir da ID de fluxo, o controlador de arranjo 1840 acessa uma tabela de estado de arranjo TX 1830 para recuperar vários parâmetros e/ou armazenar o estado associado a tal ID de fluxo. Dessa forma, o estado de arranjo TX 1830 mantém informações de estado por fluxo para os fluxos suportados. Note-se que, em uma modalidade alternativa, a tabela de estado de arranjo TX 1830 pode ser combinada com qualquer outra tabela de estado por fluxo, tal como a tabela de estado de fluxo TX 1030, acima descrita). Note-se também que a atualização de cache de nós TX 1835 também interage com a tabela de estado de arranjo TX 1830 para atualizar certos parâmetros associados à atualização de cache, ilustrado mais adiante.
Como exemplo, a atualização de cache de nós TX 1835 recupera nós para o fluxo com base na respectiva fila de transmissão do nó.
O controlador de arranjo 1840 utiliza o estado por fluxo para o fluxo programado para preencher seu respectivo arranjo de nó TX 1842 (uma ilustração de uma fila). O arranjo de nó TX 1842 é um arranjo de nós para o fluxo seqüenciado em ordem de transmissão para transporte ao mecanismo TX 1880. Como mostrado, o conjunto de nós armazenado na cache de nós TX 1810 para o fluxo programado corrente, identificado pela lista de comandos 1815, é levado ao arranjo de nó TX 1842 para o canal através do qual o fluxo está programado para transmissão. Isto permite a programação de um conjunto de nós conhecidos imediatamente quando a transmissão se torna disponível. Na modalidade exemplar, quatro nós estão disponíveis para cada fluxo a ser colocado no arranjo de nó TX 1842. 0 resto do arranjo de nó TX 1842 pode ser preenchido com nós adicionais para um fluxo. Em uma modalidade exemplar, os arranjos de nó TX 1842 mantêm 64 identificadores de pacotes, isto é, nós, de cada vez para entrega programada através do mecanismo TX 1880. Os primeiros quatro são recuperados a partir da cache de nó TX do fluxo e os pacotes remanescentes são recuperados a partir da memória de armazenador de pacotes. De forma similar a outros acessos à memória de armazenador de pacotes, podem ser efetuadas requisições para recuperação de nós para o fluxo a partir da memória de armazenador de pacotes (os detalhes não são mostrados) . Em uma modalidade alternativa, um arranjo de nós pode ser preenchido diretamente a partir do armazenador de pacotes sem primeiramente se recuperar elementos a partir de uma cachetal como o cache 1810. Em mais outra modalidade, as caches 1810 não necessitam ser nem mesmo implementados, e os aspectos ilustrados pelos arranjos de nós 1842 podem ainda ser utilizados.
O controle de arranjo 1840, as listas de comandos 1815 e componentes relacionados constituem exemplos de componentes que podem ser incluídos em um seletor (tal como acima descrito com referência à Figura 17) para selecionar elementos dentre uma pluralidade de caches (isto é, 1810) e armazena-los em uma dentre uma pluralidade de filas (tal como ilustrado pela fila 1842 e filas EDCA e HCCA 1850 e 1855 respectivamente) . De um modo geral, pode ser selecionado qualquer número de caches por fluxo ou filas por fluxo (isto é, uma fila de transmissão em um armazenador de pacotes) por um seletor para armazenar elementos em uma fila tal como o arranjo de nó 1842, ou em uma dentre uma pluralidade de tais filas, com base em quaisquer fatores desejados (tais como qualidade de serviço, tipo de canal e similares).
Na modalidade exemplar, como foi acima mencionado, é desejada a operação autônoma da atualização de cache de nós TX 1835, separada dos vários controladores de arranjo 1840 preenchendo os arranjos de nó TX 1842 para entrega ao mecanismo TX 1880. No entanto, de tempos em tempos pode ser possível que a cache de nós TX para o respectivo fluxo possa necessitar atualização aproximadamente ao mesmo tempo em que um controlador de arranjo 1840 esteja acessando pacotes provenientes da fila para tal fluxo a partir da memória de armazenador de pacotes. Dessa forma, pode ser definida uma função de intertravamento para impedir que o controlador de arranjo 1840 ou a atualização de cache de nós TX 1835 corrompam a fila de transmissão, impedindo ou a duplicação ou o descarte de pacotes provenientes de tal fila. Várias técnicas de intertravamento serão conhecidas pelos técnicos na área e uma modalidade exemplar será detalhada mais adiante com referência à Figura 20.
Um aspecto adicional pode ser incorporado aos vários canais, tais como os canais EDCA 1850, o canal HCCA 1855, ou o canal de controle de difusão 1860. Na modalidade exemplar, o arranjo de nós TX 1842 é implementado na forma de dois arranjos de nós ocultos. Dessa forma, um primeiro arranjo de nós TX oculto pode ser preenchido com nós para um fluxo programado e um sinal de "pronto" pode ser enviado ao mecanismo TX 1880. o controlador de arranjo 1840 pode a seguir extrair a próxima ID de fluxo a partir de sua lista de comandos 1815 e efetuar o processamento necessário para carregar um segundo arranjo de nós TX oculto com pacotes para o próximo fluxo. Dessa forma, um arranjo de nós TX pode ser processado para transmissão enquanto o outro estiver sendo preenchido, reduzindo uma possível latência associada à espera para que uma transmissão se complete antes de iniciar um novo processo de preenchimento de arranjo de nós. Uma ID de enlace 1844 é associada ao arranjo de nós TX 1842 de forma a que o mecanismo TX 1880 possa recuperar os parâmetros de enlace e estado apropriados para uso na transmissão do fluxo através do enlace fisico real entre duas estações. Quando for implementada uma cache oculta ou pingpong como acima descrito, a ID de enlace 1844 armazena uma ID de enlace A para o fluxo contido em um arranjo de nó TX oculto e a ID de enlace B contém a ID de enlace para o fluxo em um segundo arranjo de nó TX oculto. Em uma modalidade alternativa, outros parâmetros podem também ser armazenados juntamente com a ID de enlace em 1844, associados a cada fluxo respectivo.
Os dois arranjos de nós ocultos constituem ilustrações de um aspecto geral de filas ocultas ou pingpong. De um modo geral, uma fila pode corresponder a um tipo particular de canal, tal como um canal EDCA ou HCCA. Cada canal pode possuir um nivel de qualidade de serviço associado, selecionado dentre uma pluralidade de niveis de qualidade de serviço. A fila neste exemplo compreende duas filas ocultas. A fila pode também ser descrita como compreendendo uma fila em serviço e uma fila em espera. As filas ocultas físicas se alternam como sendo designadas como a fila em serviço e a fila em espera. Dessa forma, como foi acima descrito, a fila em espera pode ser preenchida sem interferir com o processamento da fila em serviço. Quando terminar o processamento da fila em serviço, sua fila oculta correspondente pode ser re- selecionada como sendo a fila em espera e pode começar a ser preenchida com outro fluxo a qualquer momento. A fila oculta que era a fila em espera é então re-selecionada como a fila em serviço, podendo começar o processamento para a transmissão. Dessa forma, um número relativamente elevado de fluxos, os quais podem estar associados com uma variedade de níveis de qualidade de serviço, pode ser selecionado para armazenamento na fila apropriada (de acordo com o nível de qualidade de serviço, bem como o acesso programado ou com base em conflito, etc.). A seleção pode ser com base rotativa, tal como foi acima descrito, ou de acordo com quaisquer outros tipos de critérios de seleção.
Como foi acima mencionado com relação aas caches 1810, apesar de nós serem usados nesta modalidade exemplar para ilustrar um aspecto, existem várias técnicas equivalente que podem ser implementadas. Como exemplo, estruturas de dados alternativas poderiam ser armazenadas em filas tais como a 1842 (ou 1850 e 1855) . Como outro exemplo, o próprio pacote poderia ser armazenado. De um modo geral, as filas, ilustradas como a fila 1842, serão usadas para armazenar um ou mais elementos a partir dos quais um ou mais respectivos pacotes podem ser identificados e recuperados após o processamento dos elementos enfileirados.
Enquanto se preenche um lado do armazenador "pingpong" 1842, por exemplo com os quatro nós provenientes da cache de arranjos de nós 1810, pode haver tempo durante a transmissão para continuar a preencher tal arranjo. Já mencionado e detalhado mais adiante, encontra-se o modo U- APSD, que faz uso imediato dos primeiros quatro pacotes. No U-APSD, um indicador, tal como um bit "mais". Pode ser enviado com os quatro primeiros pacotes. Após a transmissão dos pacotes e espera por uma confirmação dos primeiros quatro pacotes (com qualquer espaçamento necessário entre quadros), o transmissor deve estar pronto para transmissão adicional. Durante este tempo, nós adicionais do fluxo podem ser acessados a partir da cache de nós TX ou do armazenador de pacotes, conforme apropriado de acordo com a modalidade implementada. Para outros tipos de transmissão, podem ocorrer oportunidades similares para manter o arranjo de nós TX completo para transmissão de todos os pacotes permitidos pela oportunidade de transmissão disponível.
O controle de difusão 1860 pode ser implementado com funcionalidade similar ao controlador de arranjo 1840 em qualquer das modalidades. No entanto, ele pode requerer um conjunto reduzido ou alternativo de funcionalidades. Neste exemplo, é implementado um bloco de sinalizador 18 62 que compreende um ponteiro 18 63 apontando para um pacote de sinalizador. O firmware pode gerar o pacote de sinalizador, incluindo quaisquer informações de cabeçalho, parâmetros desejados, etc., como é bem conhecido pelos técnicos na área. O sinalizador 1862 pode recuperar o pacote criado para transmissão no momento apropriado. Como exemplo, o programador de firmware pode gerar um valor de marca de tempo para o sinalizador sendo criado e levar aquele ao bloco de sinalizador 1862. Dessa forma, o sinalizador pode ser transmitido no, ou próximo ao, período apropriado (isto é, TBTT nas modalidades 802.11). Em tal exemplo, o sinalizador 1862 gera, através do controle de difusão 1860, um sinal de pronto para o mecanismo TX 1880. É efetuada a disputa pelo meio e o sinalizador será transmitido no momento apropriado, ajustado para qualquer retardo associado à espera da abertura do canal. Os técnicos na área adaptarão facilmente a Figura 18 para acomodar sinalizadores ou outras mensagens de sinalização do sistema à luz dos presentes ensinamentos. Em uma modalidade alternativa, o sinalizador 1862 pode na realidade armazenar diretamente o pacote de sinalizador em lugar de usar um ponteiro 1863.
De modo similar, pode também ser gerado um canal de difusão ou multidifusão (multicast). Os canais de difusão e/ou multidifusão são essencialmente IDs de fluxo de propósito especial. Um canal de difusão não necessita ser programado com múltiplas IDs, como as listas de comandos 1815 acima descritas. No entanto, caso canais de difusão e/ou uma variedade de canais multidifusão sejam desejados, procedimentos de programação similares também podem ser implementados (não são mostrados). Um pacote de difusão ou multidifusão pode ser identificado por um ponteiro 1865 no bloco de multidifusão difusão 1864 para transmissão através do mecanismo TX 1880 (através do controle de difusão 1860). Alternativamente, o próprio pacote pode ser armazenado em 1864. Note-se que, tal como usado na descrição da Figura 18, ficará claro que uma referência a um pacote pode substituir uma referência a um nó, quando for implementado um esquema de memória de armazenador de pacotes, tal como acima descrito com referência à Figura 6. Dessa forma, como pode ser constatado, quando nós e blocos são usados para armazenar pacotes, a manutenção das filas é eficiente e fácil dentro da própria memória de armazenador de pacotes. Além disso, caches para programação de uma variedade de fluxos, tal como ilustrado na Figura 18, podem ser mantidos pela simples recuperação e armazenamento de nós (em lugar de movimentar os pacotes juntamente com os nós). Como será detalhado mais adiante, o único momento em que os dados reais do pacote são removidos do armazenador de pacotes ocorre no ponto de transmissão do pacote. Enquanto isto, o processamento e programação do pacote são efetuados simplesmente pelo uso do nó. Aspectos adicionais ilustrando os benefícios dos nós serão detalhados mais adiante na descrição do mecanismo TX 1880. Benefícios similares são também obtidos na ponta de processamento de recepção.
Note-se que, tal como detalhado mais adiante com referência às Figuras 48 e 49, em uma modalidade alternativa podem existir pacotes para transporte no mecanismo TX que provêem de outras fontes que não o armazenador de pacotes. Como exemplo, os pacotes legados ou de baixa capacidade de transmissão podem ser formatados no processador usando-se um processador MAC do firmware, e tais pacotes podem ser providos para transmissão. Note-se que as estruturas acima descritas podem ser adaptadas para tal modalidade. Como exemplo, as listas de comandos 1815 podem também ser usadas para programar a transmissão a partir das fontes alternativas. Como exemplo, uma ID de fluxo, o número de pacotes a enviar e um indicador sobre se o pacote é de baixa ou alta capacidade de transmissão (ou, de um modo mais geral, proveniente do armazenador de pacotes ou de fontes externas de pacotes). Caso esteja programado um pacote de baixa capacidade de transmissão, ele pode ser recuperado a partir de um FIFO de memória de processador de transmissão (isto é, 4950) ou, alternativamente, a partir da memória do processador (por exemplo, através de dma), tal como descrito mais adiante.
Note-se que, em tal modalidade, as mensagens geradas para o controle de difusão 1860, por exemplo o sinalizador e quaisquer mensagens de difusão ou multidifusão, podem ser alternativamente formadas também no firmware. Dessa forma, os componentes 1862, 1864 e 1860 podem ser omitidos.
A Figura 19 apresenta uma modalidade exemplar detalhada de uma seção do processador de núcleo MAC inferior 540. Tal como mostrado na Figura 19, um seletor 1930 envia IDs de fluxo recuperadas a partir de listas de comandos 1815. Esta é uma ilustração conceituai pelo fato de que é arbitrário o tipo de canal que está sendo acessado. Qualquer número de listas de comandos pode ser selecionado e acoplado ao estado de arranjo TX 1830. Quando a ID de fluxo proveniente do canal selecionado é apresentada para o estado de arranjo TX 1830, o estado de arranjo por fluxo associado 1902 é recuperado e enviado para um ou mais componentes que necessitam de vários componentes de tal estado. O seletor 1930 constitui um exemplo ilustrando um seletor recuperando seletivamente parâmetros por fluxos (isto é, armazenados em um estado de arranjo 1902) com base em um identificador de fluxo. De um modo geral, podem ser recuperadas tabelas de estado de fluxo (ou qualquer outro conjunto de parâmetros por fluxo) por um identificador de fluxo, ou podem ser recuperados indiretamente pela seleção de um indice de fluxo de acordo com um identificador de fluxo e uso do indice de fluxo para localizar parâmetros por fluxo (talvez armazenados em uma ou mais memórias. Os exemplos aqui ilustrados apresentam uma variedade de parâmetros por fluxo de recepção e transmissão, que podem ser armazenados e/ou acessados usando-se quaisquer de tais técnicas. Tal como ilustrado de um modo geral nas Figura 3 e 4, um circuito integrado (por exemplo) pode ser implementado para usar qualquer dos tipos de armazenamento de parâmetros por fluxo, dependendo de em qual modo está configurado o circuito integrado. Isto facilita a capacidade de suportar eficientemente um número variável de fluxos, seja grandes ou pequenos, nas memórias disponíveis.
É ilustrado um exemplo de estado de arranjo por fluxo 1902. Ao recuperar nós a partir do armazenador de pacotes para um fluxo associado, o número de nós a recuperar é o mínimo entre o tamanho de janela e os pacotes disponíveis. Dessa forma, para o número total de pacotes disponíveis ou o tamanho da janela de trânsito 1910, pode ser preenchida uma série de até 64 nós (na modalidade exemplar) nos arranjos de nó TX. Como foi acima descrito, cada nó subseqüente na respectiva fila TX do nó é determinado por leitura do ponteiro de próxima fila em cada nó, recuperação do próximo nó, colocação do nó no arranjo TX e assim por diante, até que os pacotes disponíveis para o fluxo se esgotem ou a janela seja preenchida.
O ponteiro de início defila 1912 indica o ponteiro para o nó no início da fila para a respectiva fila de transmissão do fluxo (por exemplo, uma estrutura de dados de lista interligada). O ponteiro de início de fila é o primeiro nó a ser recuperado em seqüência quando os pacotes provenientes do fluxo devem ser transmitidos. 0 número de pacotes na fila é armazenado no campo 1914. Tal número será incrementado quando forem recebidos pacotes de entrada para o fluxo, sendo reduzido a medida que eles são transmitidos. 0 número de pacotes na cache, tal como armazenado no campo 1916, que podem ser usados em associação à atualização de cache de nós TX 1835 para preencher a cache de nó TX 1810 e para popular o arranjo de nó TX 1842 com nós provenientes do mesmo. A ID de enlace 1918 é recuperada para o fluxo em questão e pode ser armazenada na ID de enlace 1844 para uso no transmissor para recuperar o estado e/ou parâmetros específicos do enlace. Em algumas modalidades, a lista interligada de nós pode consistir de um grande número de pacotes. O tamanho de janela pode ser usado para assegurar que apenas os pacotes dentro da janela são processados para transmissão. O ponteiro de final de janela 1920 pode ser usado para gerenciamento da janela. Modalidades alternativas podem incluir campos adicionais e podem omitir alguns daqueles descritos. Campos adicionais exemplares incluem um campo de densidade AMPDU e um ponteiro de término de fila de transmissão.
A Figura 20 ilustra um intertravamento exemplar que pode ser implementado para uso tal como mostrado na Figura 18. Neste exemplo, a atualização de cache de nós TX 1835 gera um sinal de ocupado quando ela está no processo de recuperação de informações a partir da memória de armazenador de pacotes. Durante este tempo ela também indica a ID de fluxo da cache de nó TX que ela está atualizando. O controlador de arranjo 1840 sabe então se uma ID de fluxo que ele pode estar processando tem seus nós sendo acessados a partir do armazenador de pacotes (note-se que podem existir vários controladores de arranjos 1840, cada um recebendo tais sinais, um para cada canal) . Dessa forma, o controlador de arranjo 1840 pode postergar o acesso à RAM de armazenador de pacotes para tal ID de fluxo, uma vez que alguns pacotes provenientes de tal ID de fluxo podem estar em trânsito para o cache de arranjo de nó. Isto impede o controlador de arranjo 1840 de interferir com a operação de atualização de cache de nó TX para um fluxo.
Além disso, um certo número de blocos de comparação 2010 é implementado para receber a ID de fluxo proveniente da atualização de cache de nó TX. Cada bloco de comparação recebe uma ID de fluxo proveniente de um canal (isto é, EDCA 0 a 3 1850a a d, os detalhes não são mostrados) indicando que o controlador de arranjo 1840 do respectivo canal está acessando o armazenador de pacotes para recuperar nós para preencher espaços adicionais nos respectivos arranjos de nó TX 1842. Caso qualquer destas IDs de fluxo estejam de acordo, a respectiva linha será confirmada. A porta OR 2020 propicia o OR lógico de todas as saídas de comparação que geram um sinal de ocupado. A atualização de cache de nós TX 1835 pode aguardar para continuar a atualização até que o sinal de ocupado cesse, ou ela pode mudar a ID de fluxo para tentar atualizar o cache de um fluxo diferente. Caso a mudança da ID de fluxo desative o sinal de ocupado, a atualização de cache de nós TX 1835 sabe que ela não estará interferindo com a operação de qualquer dos controladores de arranjo 1840. Os técnicos na área conhecerão várias modificações para tal esquema de intertravamento, bem como outros esquemas de intertravamento que podem ser implementados dentro do escopo dos presentes ensinamentos.
Em uma modalidade alternativa (não é mostrada), é mantido uma cache de nó de quatro pacotes (FPNC) 1810 para cada fluxo, tal como acima descrito. Cada cache contém ponteiros de nó (12 bytes) . Como foi acima mencionado, estes são os primeiros quatro pacotes que serão transmitidos através da WLAN quando o respectivo fluxo obtém uma oportunidade de transmissão. Nesta modalidade, quando um pacote é recebido na entrada, ele é colocado na SDRAM e é sinalizada uma máquina de estado finito (FSM) de cache de nós (que pode ser similar à, ou implementada em lugar da, atualização de cache de nós TX 1835) . Caso exista espaço na cache de pacotes de quatro nós correspondente ao pacote recebido, informações de nós são adicionadas à respectiva memória de cache. Quando as informações de nós são enviadas para a SDRAM para serem colocadas na lista interligada, elas são também enviadas para o FPNC. Caso haja espaço no FPNC e caso o FPNC não esteja em uso (durante uma WLAN TX op para o respectivo fluxo) , então as informações de nó são colocadas no FPNC. Um bit "em serviço" pode ser ajustado pelo controlador de arranjo 1840 para indicar ao FSM que o fluxo está em serviço. Tal tem efeito similar ao intertravamento acima descrito.
A máquina de estado FPNC opera de forma "primeiro a chegar, primeiro a ser servido" para atualizar o FPNC. O FPNC é particularmente útil para servir pacotes para estações habilitadas para U-APSD, o que será detalhado mais adiante. Quando é recebido um acionador, o núcleo MAC inferior 540 confirma o acionador e pode responder com um agregado de até 4 pacotes imediatamente, tal como foi acima descrito. A máquina de estado FPNC deve repor o FPNC após ele ser esgotado devido a uma TX op. A máquina de estado FPNC pode operar utilizando uma fila identificando fluxos que devem ser repostos. A fila pode consistir de fluxos em ordem de prioridade para serviço pelo FPNC - sendo a prioridade decidida por considerações tais como se a estação está no modo U-APSD, se o fluxo é um fluxo com base em HCCA ou EDCA e outros.
O efeito de tal modalidade alternativa pode ser similar ao do bloco de atualização de cache de nós TX 1835 usando o intertravamento acima descrito. De um modo geral, pode haver necessidade de atualizar as caches de arranjo de nó com base em um acionador proveniente da entrada e/ou uma atualização periódica. Um acionador instantâneo (ou quase instantâneo) proveniente da entrada pode ser desejável para aplicações temporalmente criticas, tais como o caso de voz.
A atualização periódica pode ser usada para repor as caches de nós TX com pacotes que estão no armazenador de pacotes (isto é, após um ou mais dos pacotes para o fluxo terem sido enviados para a transmissão e não estiverem mais na cache de nós 1810. Como exemplo, caso um pacote chegue na entrada e a cache de nós estiver cheia, indo o pacote simplesmente para o armazenador de pacotes, o resultado final de um modo geral desejado será o de manter as caches completas. A atualização periódica pode ser um processo secundário, operando de forma autônoma, na modalidade exemplar. Os técnicos na área notarão que as mecanismos de estado, os bits em serviço, os intertravamentos e várias outras técnicas podem ser usados para manter as caches de nós completamente preenchidos e para preenche-los em resposta às demandas geradas por pacotes de entrada recebidos, bem como pacotes de transmissão enviados.
A Figura 21 apresenta uma modalidade exemplar de ID de enlace 1844, acima descrita com referência à Figura 18. Como mostrado, a IS de enlace A 2110 é armazenada identificando a ID de enlace com o fluxo em um dos arranjos de nós TX ocultos incorporados no arranjo de nó TX 1842. O campo 2120 identifica o número de pacotes (isto é, nós) que estão incluídos com tal ID de enlace. Note-se que, nesta modalidade, a agregação é ainda baseada na ID de fluxo, dado que a ID de enlace é usada para identificar parâmetros de camada física (tais como taxas PHY) e chaves de segurança. O índice para esta tabela é a ID de fluxo.
De forma similar, a ID de enlace B 2130 é armazenada para identificar a ID de enlace do fluxo no outro arranjo de nó TX oculto incorporado no interior do arranjo de nó TX 1842. O número de pacotes associados a tal ID de enlace é armazenado no campo 2140. Note-se que vários outros parâmetros e/ou variáveis de estado podem ser armazenados juntamente com aquele, associados aos respectivos fluxos, para uso em modalidades alternativas, quando desejado.
A Figura 22 apresenta componentes adicionais de uma modalidade exemplar de um núcleo MAC inferior 540. como foi acima descrito com referência à Figura 18, uma pluralidade de canais pode estar conectada ao mecanismo TX 1880, cada um dos quais envia um indicador de pronto para informar ao mecanismo TX 1880 que um ou mais pacotes estão prontos para serem enviados. Os nós identificando os pacotes estarão aguardando em arranjos de nós TX 1842 e uma ID de enlace associada para tais pacotes estará armazenada na ID de enlace 1844. Um conjunto de cada um de tais componentes pode estar presente para cada canal. A Figura 22 ilustra o processamento adicional de tais pacotes a medida que eles se movimentam ao longo da cadeia de transmissão.
O mecanismo TX 1880 recebe os vários sinais de pronto e arbitra entre eles para efetuar uma variedade de processos e tarefas. Quando o mecanismo TX 1880 está pronto para preparar pacotes para transmissão, ele conhece o tamanho da TXOP, que indica a duração de tempo disponível para uso do meio compartilhado. No entanto, dado que as taxas de dados variam com base nas condições do enlace, o número de pacotes a enviar dentro da TXOP também varia. Na modalidade exemplar, a máquina de estado finito (FSM) de taxa 2210 é implementada para uso na determinação do número de símbolos OFDM que um pacote específico irá utilizar. O mecanismo TX 1880 leva à FSM de taxa 2210 uma duração de TX indicando o comprimento do pacote em bytes (o qual está convenientemente localizado no campo de comprimento do nó). Uma ID de enlace é levada (a partir da ID de enlace 1844) e um sinal de início indica que a FSM de taxa 2210 deve iniciar seu processo. A FSM de taxa 2210 responde com o número de símbolos que o pacote irá usar. Tal informação pode ser usada para determinar o número de símbolos para cada pacote que pode ser acumulado ao efetuar a agregação, o que será detalhado mais adiante. Note-se que pode ser implementada uma variedade de técnicas alternativas para a determinação do número de símbolos, das taxas e similares. O uso de uma FSM externa, que efetua a computação de símbolos por pacote constitui apenas um dentre vários exemplos adequados para implementação. Uma modalidade exemplar de uma FSM de taxa 2210 será detalhada mais adiante.
O mecanismo TX 1880 está também acoplado a um árbitro de memória, tal como o árbitro de memória 1080 acima descrito. Para cada um dos pacotes que estão prontos para transmissão, o mecanismo TX 1880 recupera os blocos a partir do armazenador de pacotes de acordo com as informações no respectivo nó e quaisquer blocos ligados identificados pelo ponteiro de próximo grupo. Os dados de grupo são retornados ao mecanismo TX 1880 onde eles são levados a um ou mais FIFO 2220. Neste exemplo, os FIFO 2220 estão contidos em um mecanismo de protocolo legado 2210. Note-se que a gravação de dados em um ou mais FIFO pode ser regulada por um sinal de FIFO pronto, ou qualquer outro mecanismo de controle de fluxo. Como foi acima descrito e será detalhado mais adiante com relação às Figuras 48 e 49, em uma modalidade alternativa podem existir alimentações adicionais ao mecanismo TX 1880 para interação com mais de um processador MAC. Em uma modalidade alternativa exemplar, o processador 210 e o firmware implementam um processador MAC para processamento de pacotes de baixa capacidade de transmissão. Tais pacotes podem ser levados ao mecanismo TX 1880, a partir dos FIFO de memória de processador 4950 (ou diretamente a partir da memória de processador, em outra modalidade alternativa). Como foi acima descrito, pode ser conveniente usar componentes de protocolo legado existentes para efetuar uma variedade de funções para suportaro processamento MAC 802.11. Também podem ser implementados outros motores de protocolo padronizados, e um mecanismo de protocolo legado 2210 pode ser modificado para prover vários recursos desejados. Na modalidade exemplar de um mecanismo de protocolo legado, existem quatro FIFO 2220 E para o canal HCCA e os FIFO 2220f a g são implementados para o sinalizador e um canal de difusão/multidifusão.
Note-se que um FIFO pode ser implementado na forma de um único armazenador (isto é, para armazenar um sinal de sinalizador). Podem ser implementados quaisquer números de FIFO, ou outros tipos de armazenador, para recepção de pacotes para transmissão.
Ao receber uma comunicação de "pronto", o mecanismo TX 1880 coloca o primeiro grupo de pacotes no FIFO de núcleo apropriado tal como especificado no primeiro nó. Como foi acima descrito, isto pode continuar com blocos adicionais, caso existam, até que o primeiro pacote seja completamdo. Simultaneamente, o número total de pacotes que podem ser transmitidos pode ser determinado usando-se a FSM de taxa 2210. Enquanto monitora o FIFO pronto, o mecanismo TX 1880 pode continuar o procedimento colocando o restante dos pacotes no respectivo FIFO. Na modalidade exemplar, a colocação de pacotes no FIFO aciona o mecanismo de protocolo legado 2210 a competir por acesso (para acessos do tipo EDCA) e iniciar a transmissão (quando o acesso for obtido, ou durante uma TXOP programada).
A Figura 23 apresenta uma modalidade exemplar de uma FSM de taxa 2210. a ID de enlace recebida é usada como um índice para a tabela de taxas 2310. A tabela 2310 está armazenada com base em ID de enlace e compreende uma ou mais taxas associadas ao enlace, bem como um valor de marca de tempo (tsv) 2311. A tabela de taxas 2310 pode ser atualizada de diversas formas. O firmware pode prover taxas atualizadas. Um pacote de realimentação de vetor de taxa de dados recebido pode incluir informações de taxa e pode ser usado para atualizar uma variedade de taxas. O tsv 2311 pode ser usado para indicar a marca de tempo de quando um pacote contendo realimentação de taxa for recebido, provendo dessa forma uma indicação de se as informações de taxa são recentes ou antigas. Como exemplo, caso uma taxa não tenha sido atualizada há algum tempo, uma estratégia conservadora seria a de reduzir a taxa caso o canal tenha se deteriorado no quadro de tempo interveniente. O firmware pode determinar se houve envelhecimento e se deve ou não reduzir as taxas e atualizar a tabela de taxas. Na modalidade exemplar, existem quatro taxas R1 a R4 2312 a 2315, correspondendo a cada uma dentre quatro antenas.
Outras informações também podem ser usadas no cálculo de taxas, tais como se está sendo usado o modo de direcionamento Eigen ou outro modo de espalhamento. As informações de taxas provenientes da tabela 2310 são enviadas à FSM 2320 de cálculo de taxa.
Para cada taxa, a tabela de seleção de taxa 2330 compreende uma tabela atualizada por firmware com o número de bytes por simbolo disponível para cada uma das taxas. Em uma modalidade exemplar, existem N = 16 taxas 2332, cada uma com um número correspondente de bytes por símbolo, portanto cada valor de seleção de taxa possui 4 bits. O número de bytes por símbolo é levado ao somador 2335, cuja saída vai para o acumulador de taxa agregada 2340.
O acumulador de taxa agregada 2340 é usado para acumular a taxa agregada e a saída é realimentada ao somador 2335. O acumulador 2340 pode ser zerado por meio de um sinal de limpar proveniente da FSM de cálculo de taxa 2320. Para cada uma das taxas disponíveis, é somado o número de bytes por símbolo para acumular a taxa agregada total a partir da qual um certo número de símbolos ns 2360 pode ser usado para indicar o número de correntes. 0 ns 2360 é subtraído em 2345 para prover a taxa agregada. O ns 2360 pode ser atualizado por firmware. 0 comprimento do pacote, levado em bytes na modalidade exemplar, é adicionado em 2350 a uma constante 2365 (que também pode ser atualizada por firmware) , para gerar o comprimento real. CONST 2365 pode indicar uma restrição opcional. Como exemplo, pode ser implementada uma densidade AMPDU provendo uma separação mínima entre headers MPDU sucessivos. No divisor 2355, o comprimento real, A, é dividido pela taxa agregada, normalizada para ns, gerando um quociente e um resto. 0 quociente é levado ao somador 2375 para produzir, conceitualmente, uma função teto, em que, caso haja qualquer resto em 2370, deve ser usado um símbolo adicional (isto é, uma fração de um símbolo foi preenchida, portanto o símbolo inteiro deve ser implementado) . Um registrador η SYM 2375 é habilitado pela FSM de cálculo de taxa 2320 para armazenar o número resultante de símbolos para transporte s uso pelo mecanismo TX 1880
A Figura 24 apresenta um mecanismo de protocolo legado 2210 conceituai. Um sinal de seleção de modo pode ser usado para indicar um dentre uma variedade de modos em que funciona o mecanismo de protocolo., De um modo geral, são levadas MPDUs, juntamente com o sinal de pronto, para indicar que a transmissão deve ser iniciada. 0 mecanismo de protocolo legado pode gerar uma saída criptografada a partir das MPDUs de entrada. Na modalidade exemplar, são utilizados os recursos de codificação do mecanismo de protocolo legado (comumente encontrados em um típico núcleo 802.11). Em uma modalidade alternativa, pode ser incluído qualquer tipo de equipamento de codificação, como é bem conhecido pelos técnicos na área. Na Figura 24 é também mostrada uma entrada criptografada (recebida, por exemplo, a partir da WLAN 120) levada ao mecanismo de protocolo legado 2210 para produzir MPDUs de saída não criptografadas.
A Figura 25 apresenta um típico mecanismo de protocolo legado conectado por meio de enlaces conceituais 5 à PHY 260. Como mostrado, um vetor RX é levado da PHY 260 para o mecanismo de protocolo legado 2210 juntamente com dados recebidos e um sinal de avaliação de canal livre (CCA) . O vetor RX pode compreender uma diversidade de informações, tais como o tipo de modulação, o comprimento dos dados recebidos e outros parâmetros. Em particular, pode ser retornada realimentação de taxa de dados, útil para a determinação de taxa, tal como na FSM de taxa 2210 acima descrita. A avaliação de canal livre pode ser usada com os temporizadores 2510 associados a vários canais, para competição por acesso ao meio quando do uso de protocolos baseados em competição (tais como EDCA). A codificação e decodificação podem ser efetuadas no bloco 2520. Os FIFO 2220 podem ser similares àqueles acima descritos. Para HCCA, naturalmente, a transmissão é programada e pode se iniciar em um instante predeterminado. Dados codificados são enviados para a PHY 260 com um sinal de requisição TX indicando que a transmissão deve se iniciar. Um vetor TX levado à PHY 2 60 indica uma variedade de parâmetros resultantes de funções legadas. Note-se que, na modalidade exemplar, ao operar em um modo legado, a saída do mecanismo de protocolo legado pode ser suficiente para transmissão através da PHY 2 60.
A Figura 2 6 apresenta uma modalidade exemplar que detalha adicionalmente o processamento MAC de pacotes de transmissão. Na modalidade exemplar, a saída do mecanismo de protocolo legado, MPDUs (criptografadas quando for o caso) são levadas a um módulo de agregação 2610. Ao contrário da modalidade detalhada na Figura 25, os dados codificados emitidos a partir do mecanismo de protocolo legado 2210 não são levados diretamente à PHY. Na modalidade exemplar, podem ser efetuadas modificações no mecanismo de protocolo legado 2210 de forma a que uma corrente continua temporizada de MPDUs criptografadas é levada ao módulo de agregação e a seguir à PHY para entrega. As modificações podem ser efetuadas para remover espaçamentos entre quadros (tais como SIFs) ou quaisquer outras características das MPDUs que não sejam necessárias para a produção de um quadro agregado. Em várias modalidades, os quadros agregados podem ser de várias formas e podem compreender vários tipos de pacotes ou MPDUs. Acima foi detalhada uma variedade de técnicas para temporização dos pacotes, tais como uma marca de tempo, competição por acesso e similares, que são bem conhecidas pelos técnicos na área.
O número de pacotes para agregação pode ser computado no mecanismo TX 1880. Uma chamada à FSM de taxa 2210 pode ser efetuada para cada pacote e, para o número de símbolos retornados por pacote, a TXOP pode ser reduzido em tal número de símbolos. Uma contagem de pacotes agregados pode ser incrementada para cada pacote agregado até que o número total de pacotes que irá caber na TXOP seja determinado. Tal informação pode ser levada ao módulo de agregação 2610.
Qualquer número de esquemas e/ou formatos de agregação pode ser implementado em várias modalidades. Na modalidade exemplar, uma MPDU agregada (a-MPDU) é emitida a partir do módulo de agregação 2610. 0 formato da a-MPDU 2710 está representado na Figura 27. Como mostrado, um delimitador de MPDU 2720 é intercalado entre cada MPDU 2722 na MPDU agregada 2710. Um ou mais símbolos de preenchimento 2724 podem ser inseridos ao final de uma MPDU 2722 de tal forma que o comprimento de um sub-quadro da a-MPDU seja um múltiplo de 4 bytes. Cada MPDU 2722 compreende um cabeçalho de MPDU 2732, uma carga útil de MPDU 2734 e uma seqüência de conferência de quadro 2736. Neste exemplo, o delimitador de MPDU 2720 é um campo de CRC de comprimento compreendendo os bits de reserva setados para zero, o comprimento da MPDU, uma CRC dos bits reservados e do comprimento e um padrão exclusivo que pode ser usado para escanear e detectar a MPDU. Em uma modalidade exemplar, o padrão exclusivo é ajustado para o valor ASCII para o caractere
Fazendo agora referência à Figura 26, as MPDUs agregadas podem ser armazenadas em um FIFO de adequação de taxa 2620 (em modalidades alternativas, um FIFO de adequação de taxa pode não ser necessário, dependendo do tipo de PHY implementado e suas características). 0 FIFO de adequação de taxa 2620 está acoplado à interface MAC/PHY 545 para a entrega final de pacotes para transmissão através da PHY 260.
PROCESSAMENTO DE RECEPÇÃO
A Figura 28 apresenta uma modalidade exemplar ilustrando os componentes de recepção do núcleo MAC inferior 540. Os componentes de recepção descritos no núcleo MAC inferior 540, ou um subconjunto dos mesmos, podem constituir uma parte de um mecanismo de recepção, tal como descrito mais adiante com referência à modalidade alternativa apresentada na Figura 49. Os dados de informações, incluindo pacotes recebidos a partir da WLAN 120, chegam à interface MAC/PHY 545 e são levados à unidade de desagregação 2802. Como foi acima descrito, com relação à agregação nas Figuras 26 e 27, a a-MPDU exemplar compreende um delimitador de MPDU 2720 que pode ser usado para separar a fluxo de dados que chega em seus pacotes componentes na unidade de desagregação 2802.
A corrente resultante de MPDUs é levada ao bloco de filtragem e FCS 2804. Neste bloco, a função de filtragem determina se quaisquer dos pacotes recebidos estão endereçados para o dispositivo em questão, incluindo pacotes de difusão ou multidifusãc. A seqüência de conferência de quadro também é checada. Os pacotes endereçados para o receptor e para os quais a conferência de quadro for aprovada são a seguir levados ao FIFO 2812.
Em uma modalidade exemplar, os pacotes são armazenados no FIFO a medida que são recebidos, com o entendimento que eles estão endereçados apropriadamente e que são pacotes bons. Um pacote pode ser facilmente descartado do FIFO caso ele seja um pacote não válido, ou não endereçado para o receptor corrente. Um mecanismo de controle simples consiste de reter um ponteiro de FIFO anterior e restaurar tal ponteiro caso o pacote recém armazenado deva ser descartado. Os pacotes (não descartados) provenientes do FIFO 2812 são levados à interface de núcleo 2860.
O controlador RX FSM 2806 é implementado para controlar quaisquer dos vários blocos detalhados na Figura 28. Em particular, o controlador RX FSM 2806 pode iniciar o processamento quando um pacote for recebido e prover vários sinais de controle para habilitar e armazenar resultados intermediários a medida que os pacotes atravessam a cadeia de recepção.
Neste exemplo o cabeçalho é recebido e levado à análise de pacotes 2810 para processamento. A partir do cabeçalho do pacote é conhecido o comprimento ou duração de transmissão, bem como onde o pacote se inicia e onde no pacote se encontram os dados e/ou bytes de controle. 0 cabeçalho também indica o tipo de pacote (isto é, 802.11a, b, g, e, n, ou qualquer outro tipo de pacote suportado).
A análise de pacotes 2810 sabe se o pacote foi recebido a partir de um acesso do tipo agrupado (tal como um grupo livre de competição) a partir da ID de fluxo. A análise de pacotes 2810 irá portanto enviar um sinal para o transmissor para iniciar uma resposta quando uma resposta for requerida dentro de um período predeterminado (tal como dentro de SIFs). A análise de pacotes 2810 pode levar a ID de fluxo e as informações TXOP para permitir ao transmissor responder. Quando for recebida uma requisição de ACK de bloco, o bitmap recebido também pode ser levado ao transmissor para efetuar a confirmação de bloco dentro do quadro de tempo predeterminado caso necessário (tal como uma ACK de bloco imediata) . A ACK de bloco e outro processamento de resposta imediata, tal como U-APSD, serão detalhados mais adiante.
A análise de pacotes 2810 leva um comprimento de pacote ao FSM de ponteiro de grande bloco 2850 que determina o número de ponteiros de grandes blocos necessários para armazenar o pacote recebido. A FSM de ponteiro de grande bloco irá recuperar ponteiros de grande bloco a partir da cache de ponteiros de grande bloco RX 840, acima descrito. Nesta modalidade exemplar, os blocos são idênticos àqueles acima descritos, porém os pacotes de recepção não requerem a complexidade e exigências de memória extra de uma fila de lista interligada verdadeira.
Ao contrário, pode ser implementado um arranjo mais simplificado. Tal modalidade será detalhada mais adiante com referência à Figura 33. Em uma modalidade alternativa, os pacotes RX podem também usar a estrutura de lista interligada idêntica àquelas usadas no processamento de transmissão, caso desejado. A FSM de ponteiro de grande bloco 2850 interage com o armazenador de pacotes 250 (isto é, através do árbitro de memória 1080) quando ela necessita recuperar blocos adicionais para uso com um pacote ou quando atualizando o cache de ponteiro de grande bloco RX 2840. Na modalidade exemplar, podem ser necessários até quatro ponteiros de grande bloco por pacote, dado o tamanho de grande bloco selecionado e um tipico comprimento de pacote. Tais ponteiros de grande bloco são armazenados no cabeçalho do pacote a medida que ele passa pelo resto da cadeia de processamento de recepção, sendo usados para a gravação final do pacote no armazenador de pacotes. Uma interface de núcleo 2860 recupera os ponteiros de grande bloco e parâmetros incluídos em um vetor RX estendido (a partir da tabela de hardware 2820) e os adiciona ao cabeçalho de pacotes recebidos a partir do FIFO 2812. Os pacotes são então levados ao mecanismo de protocolo legado 2210, o qual é usado principalmente para decodificação na modalidade exemplar acima descrita. Note- se que, na modalidade exemplar e nos típicos motores de protocolo legados disponíveis, o cabeçalho será ignorado.
Dessa forma, vários mecanismos de controle podem ser efetuados pelo armazenamento de informações de controle no cabeçalho como descrito neste exemplo. Os pacotes decodificados provenientes do mecanismo de protocolo legado 2210 são levados ao RX FIFO 2870. Na modalidade exemplar, o RX FIFO 2870 pode ser compartilhado ou ser idêntico ao FIFO 572 comparável apresentado na Figura 5.
Apesar de o repasse e saída serem detalhados mais adiante, sua estrutura básica está ilustrada na Figura 28. Um aspecto de tal estrutura é o de que a decisão de repasse está desacoplada do processo de repasse em si, permitindo que os pacotes sejam recebidos e processados sem aguardar gargalos que possam se formar quando outros pacotes estão aguardando repasse de saída. Os gargalos podem se formar quando for prescrita a entrega de pacotes em ordem e a retransmissão for necessária para um ou mais pacotes. Isto será detalhado mais adiante.
Os pacotes provenientes do RX FIFO 2870 são levados à gravação de memória 2875 que efetua requisições para acesso à memória de armazenador de pacotes 250 através do árbitro de memória 1080, como foi acima descrito. Enquanto um pacote está aguardando para ser gravado no armazenador de pacotes, os parâmetros para tal pacote são levados ao bloco de decisão de repasse 2880 para iniciar a decisão de repasse. Para impedir que um procedimento de repasse rápido ocorra antes que o pacote seja completamente gravado no armazenador de pacotes, um sinal de gravação completa é enviado da gravação de memória 2875 para a decisão de repasse 2880.
O mecanismo de repasse 2890 está conectado à decisão de repasse 2880. Uma variedade de sinais exemplares é apresentada para interação entre a decisão de repasse 2880 e o repasse 2890, os quais serão detalhados mais adiante. O mecanismo de repasse 2890 recupera pacotes provenientes do armazenador de pacotes através de um árbitro de memória 1080 e finalmente leva os pacotes para a saida. O mecanismo sde repasse 2890, dependendo do tipo de pacote, pode usar o bloco defrag 2892 para remover headers, etc., de fragmentos de pacotes e reformar um pacote não fragmentado para entrega na saida de pacotes. Como será detalhado mais adiante com referência à Figura 48, a fragmentação pode ser opcional e os componentes a ela relacionados podem ser omitidos. De tempos em tempos podem ocorrer situações em que um ou mais pacotes devem ser abandonados. O bloco de descarte 28 94 está conectado ao mecanismo de repasse 2890 para efetuar tais tarefas. Várias outras funções de gerenciamento de memória associadas à manutenção das estruturas de lista interligada para filas, ponteiros, nós e blocos, também podem ser gerenciados em tais blocos.
O controlador de busca RX 2814 monitora os pacotes que entram no FIFO 2812. 0 controlador de busca RX determina a ID de fluxo para o pacote. Na modalidade exemplar, pode ser implementada uma tabela de busca ta e TID, tal como descrito para processamento de entrada de pacote, tal como na Figura 10 acima. A tabela de hardware 2820 é implementada para manter o estado e parâmetros para fluxos e enlaces. A tabela de hardware 2820 será detalhada mais adiante e inclui modalidades exemplares para as duas configurações acima descritas com referência às Figuras 3 e 4. Em tal contexto, a tabela de hardware 2820 pode ser um componente da tabela de hardware 320.
Em uma modalidade, são mantidas tabelas de hardware separadas para entrada e saída (e possivelmente processamento de transmissão). Em uma modalidade alternativa, uma ou mais funções podem compartilhar uma tabela de hardware. Em tal caso, a tabela de hardware 2820 pode ser virtualmente idêntica à tabela de hardware 320 descrita nas Figuras 3 e 4. Os técnicos na área notarão que o compartilhamento de tabelas pode introduzir complexidade associada à arbitragem para múltiplas requisições e à necessidade de assegurar amplitude de banda suficiente para o número de acessos requerido. Por outro lado, o compartilhamento de tabelas pode reduzir a área total e pode reduzir o número de atualizações de parâmetros que podem ser comuns a ambas, através de múltiplas tabelas. Como exemplo, considere-se um ponto de acesso com uma tabela de hardware de recepção e entrada combinada, tsid e TID são os mesmos quando o ponto de acesso está recebendo a partir de uma STA para a qual o ponto de acesso transmitiu anteriormente. Apesar de não ser sempre verdadeiro que o endereço MAC de destino e o endereço MAC de transmissão são iguais (poderiam existir dispositivos adicionais acoplados por trás do destino) , existem situações em que eles são os mesmos. Em tais casos, há benefícios do compartilhamento da tabela. Dessa forma, a tabela combinada pode ser tornada maior do que seriam cada uma das tabelas isoladamente para acomodar os casos em que os endereços não sejam iguais. De qualquer forma, o compartilhamento pode propiciar uma vantagem em termos de área.
Como foi acima descrito, na modalidade exemplar, uma cachepingpong, que permite ao hardware reordenar a lista enquanto atualiza e pode ser implementado acesso simultâneo para o controlador de busca a partir de uma lista oculta. Uma busca binária é efetuada para obter a ID de fluxo que é usada para indexar a tabela de hardware 2820.
A Figura 2 9 apresenta uma modalidade exemplar da tabela de hardware 2920 configurada como uma STA, similar à disposição acima descrita com referência à Figura 3. Dessa forma, neste caso, todos os diversos parâmetros associados a fluxos e enlaces são mantidos na tabela de hardware, dado que a STA suporta apenas 16 fluxos (neste exemplo). Na tabela de hardware 2820 está uma lista de endereços de transmissão 2912, TIDs 2914 e IDs de fluxos 2916 para cada fluxo suportado. Dessa forma, a ID de fluxo pode ser recuperada a partir da ta mais a TID e usada como um índice para a tabela de estado de fluxo RX 2920 apropriada. Na modalidade exemplar, o firmware cria uma tabela ordenada, dirige o HW a trabalhar com uma tabela ou outra. A busca binária é efetuada em HW sobre uma tabela corrente. Quando um novo fluxo deve ser adicionado, o firmware adiciona o fluxo a uma tabela de espera, ordena-a e a seguir comuta a tabela corrente do hardware para a tabela de espera. A seguir, a tabela original se torna a nova tabela de espera. Um exemplo de tabela de estado de fluxo RX 2920 será descrito com referência à Figura 31 mais adiante.
Parâmetros específicos por enlace podem também ser incluídos na tabela de hardware 2920. Tais parâmetros podem ser acessados pela ID de enlace, a qual pode estar armazenada na tabela de hardware RX 2920. Os exemplos incluem a realimentação de vetor de taxa de dados 2930, acima descrito para uso com relação à determinação de taxa e determinação de taxa, agregação e formação de pacotes. O processador de recepção pode ter acesso a tais informações a partir de mensagens provenientes dos dispositivos remotos e pode armazenar tais informações na tabela de hardware 2920. Como foi acima descrito, a chave de segurança por enlace 2940 pode ser usada para vários tipos de codificação. Vários tipos de chaves de segurança podem ser armazenados para suportar vários protocolos de codificação.
O bloco de detecção duplicada legado 2950 armazena o número de seqüência do último pacote recebido corretamente e o número de seqüência do pacote corrente pode ser comparado com tal valor com o propósito de detecção de duplicata.
A Figura 30 apresenta uma modalidade exemplar da tabela de hardware 2820 configurada para uso em um ponto de acesso ou super estação, tal como acima descrito com referência à Figura 4. Neste exemplo, uma variedade de ponteiros 3002 está associada a índices MAC 3004 dentro da tabela de hardware 2820. Note-se que, neste exemplo, uma ID de enlace 3006 também está armazenada juntamente com cada MAC ID. Note-se que a ID de enlace 3006 poderia alternativamente estar armazenada juntamente com outros parâmetros em um local alternativo, tal como a SRAM 330 por exemplo. Em contraste com a tabela de hardware 2820 ilustrada na Figura 29 (na qual vários parâmetros para enlaces e fluxos foram armazenados na tabela de hardware), além da ID de enlace 3006, todos os parâmetros estão armazenados em uma memória alternativa, tal como a SRAM 330.
A SRAM 330 compreende as tabelas de taxa comuns 3010a a n, cada uma das quais compreende ponteiros para cada endereço MAC (isto é, cada enlace, para os quais podem ser suportados até 16 fluxos). Os parâmetros para os vários fluxos estão armazenados em tabelas de parâmetros para as quais apontam os índices de fluxos 3020. Isto propicia um nível de vias indiretas para os parâmetros reais. Na modalidade exemplar, a SRAM 330 é também usada para armazenar tabelas tais como as tabelas de estado RX 2920, um exemplo das quais será detalhado mais adiante. Dessa forma, para cada enlace, o suporte para o número máximo de fluxos está incluído no esquema de indexação tal como apresentado nas tabelas de taxas comuns 3010. No entanto, a utilização da memória pode crescer a medida que forem acrescentados fluxos. A memória não necessita ser alocada para armazenamento de parâmetros antecipando a quando um fluxo se torna ativo. Dessa forma, para um dado enlace, caso apenas um ou dois fluxos estejam ativos, então somente uma ou duas tabelas de estado de fluxo RX 2920 devem ser criadas e preenchidas.
Na Figura 30 é também apresentada uma tabela alternativa 3042, que simplesmente inclui uma chave de segurança 3044 e um bitmap 304 6. Este exemplo apresenta um conjunto de parâmetros reduzido, adequado para uso com pacotes 802.Hg. Em tal modalidade alternativa, o uso de uma tabela de estado reduzida pode economizar memória e tempo associados a acessos adicionais à memória. No entanto, uma estrutura comum pode também ser usada para todos os tipos de pacotes em uma modalidade.
Os detalhes de uma tabela de estado de fluxo RX 2920 exemplar serão ilustrados mais adiante com relação à Figura 30. No entanto, um componente, o bitmap 3130, será aqui descrito. 0 ponteiro de bitmap 3050 é apresentado apontando para um bitmap 3130. Os bitmaps 3130 estão também armazenados na SRAM 330 na modalidade exemplar. Tal nivel de via indireta permite um formato comum simples para acessar um bitmap, permitindo também que a utilização da memória cresça em resposta à necessidade, em contraste com a pré-alocação do máximo de memória que possa ser necessária. Dessa forma, de forma similar à capacidade de aumentar as tabelas de estado de fluxo RX conforme a demanda, tipos variáveis de bitmaps podem ser suportados sem a necessidade de pré-alocar a memória para os mesmos.
Como exemplo, quando for suportada a fragmentação, um bitmap pode compreender 64 pacotes com 16 fragmentos cada um. Este e um bitmap muito maior do que seria necessário para um simples bitmap de ACK de bloco com um único bit para cada pacote em uma janela de 64 pacotes. Dessa forma, para fluxos que requerem fragmentação,, podem ser criados maiores bitmaps de ACK de bloco, enquanto aqueles que requerem menos memória podem ser criados com um bitmap menor.
Tal figura ilustra vários aspectos de configuração de memória, incluindo o provimento para maior flexibilidade e uso mais eficiente da memória. Aspectos adicionais de processamento de ACK de blocos serão detalhados mais adiante.
A Figura 31 apresenta uma modalidade exemplar de uma tabela de estado de fluxo RX 2920. Está ali ilustrada uma variedade de campos. Em modalidades alternativas, podem ser introduzidos campos adicionais, ou alguns daqueles mostrados podem ser omitidos. Note-se que, de um modo geral, quaisquer das tabelas de estado de fluxo aqui descritas, incluindo a tabela de estado de fluxo RX 2920, o estado de arranjo por fluxo 1902, a tabela de estado de fluxo 1030 e tabelas por fluxo similares, podem ser combinados ou separados em qualquer número de tabelas por fluxo, como ficará claro para os técnicos na área.
O número de seqüência inicial 3102 pode ser usado para indicar o número de seqüência do pacote inicial em uma transmissão de bloco. O número de seqüência inicial pode ser atualizado quando os pacotes transmitidos forem recebidos (isto é, a janela se movimenta para a frente). Em uma modalidade, o número de seqüência inicial existente, mais um tamanho de janela 3104, pode determinar os números de seqüência dos pacotes esperados. No entanto, um transmissor pode enviar pacotes que superem tal limite de números de seqüência e, em tal caso, o número de seqüência inicial pode ser calculado tomando-se o maior número de seqüência recebido e subtraindo-se o (tamanho de janela - 1). O número de seqüência inicial pode também ser explicitamente atualizado por uma BAR (requisição Block_ack). Várias técnicas de processamento de confirmação de bloco serão detalhadas mais adiante. Em um exemplo, o tamanho de janela pode significar o arraazenador alocado (em unidades de pacotes) para um dado transmissor em um receptor. Em tal caso, o transmissor não deve enviar pacotes não confirmados que superem o tamanho de janela no receptor.
0 campo de ACK de bloco imediata 310 6 pode ser usado para indicar ao receptor se o transmissor está esperando uma confirmação de bloco imediata ou retardada. O suporte à confirmação de bloco imediata é obrigatório na atual proposta de norma 802.11η.
0 bitmap 3130 pode ser um bitmap de ACK de bloco real, isto é, quando a tabela de hardware 2820 estiver configurada como uma STA, tal como foi acima descrito com referência à Figura 29. Em uma configuração alternativa, o bitmap 3130 pode ser um ponteiro para um bitmap real, tal como foi acima descrito com referência à Figura 30. O cabeçalho Ethernet 3132 é armazenado para substituir o cabeçalho MAC com o cabeçalho Ethernet apropriado quando da preparação de pacotes para saida. O ponteiro WIN 3134 é um ponteiro para a estrutura de dados que mantém os endereços físicos dos pacotes armazenados pelo receptor que devem eventualmente ser repassados para a camada superior (ver exemplos de técnicas de repasse descritos mais adiante. Em um exemplo, tais pacotes são armazenados nos armazenadors para o repasse em seqüência para uma camada superior. Caso ocorra um "buraco" (pacote perdido) no inicio de tal estrutura de dados, então a RX deve aguardar até que tal buraco seja preenchido de modo a realizar repasse os pacotes em seqüência para a camada superior em ordem. Note- se que o ponteiro de janela 3320, detalhado mais adiante, constitui um exemplo de um ponteiro adequado para uso neste campo.
Em um exemplo, para começar, um número de seqüência antigo 3138 pode ser ajustado como igual ao número de seqüência inicial. Quando um pacote recebido leva o número de seqüência a mudar, o receptor pode passar para uma camada superior todos os pacotes a partir do número de seqüência inicial antigo até o número de seqüência inicial atual. Após efetuada tal operação, o número de seqüência antigo pode ser ajustado como igual ao número de seqüência inicial corrente. A ID de enlace 3140 indica o enlace associado ao fluxo. Este pode ser usado para recuperar parâmetros específicos por enlace para uso na recepção ou transmissão através da WLAN 120. Vários exemplos foram detalhados acima. Pode ser implementado um campo 3136 indicando que não devem ser recebidos mais fragmentos. Em várias modalidades em que a fragmentação não é implementada, ou quando ela é efetuada em uma unidade de processamento MAC alternativa, tal campo pode ser omitido.
A Figura 32 apresenta uma modalidade exemplar de um método para configurar tabelas de hardware e memória em várias configurações. Note-se que as técnicas comentadas com referência às Figuras 29 a 31 podem ser aplicadas de forma similar com outras tabelas de hardware, tais como a tabela de estado de fluxo de transmissão 1030, acima descrita. Os detalhes da configuração das tabelas de transmissão são omitidos para maior brevidade. Note-se também que as tabelas de hardware podem ser combinadas para suportar vários componentes (isto é, recepção, transmissão, entrada, saída, etc.). Os princípios identificados pelos níveis de vias indiretas para recepção de hardware, tabelas de estado de fluxo, RAMs e/ou armazenadors de pacotes, podem ser aplicados com igual ênfase a outras tabelas de estado aqui descritas, ou combinações de tais.
Na Figura 32 está descrito um processo geral 3200. Neste exemplo são descritas primeira, segunda e terceira memórias. Note-se que, como foi aqui descrito, pode ser implementado qualquer número de memórias de vários tipos. Em uma modalidade exemplar, a memória 1 é uma tabela de hardware, tal como a tabela de hardware 2820 ou 320. A memória 2 é uma memória maior, tal como a SRAM 330. A memória 3 é uma memória externa neste caso, apesar de serem também previstas terceiras memórias externas. Neste exemplo, a memória 3 pode ser a SDRAM 34 0.
No bloco de decisão 3210, caso uma terceira memória venha a ser usada para o armazenador de pacotes, passar a 3216 para configurar vários componentes do dispositivo de comunicação sem fio em um primeiro modo (isto é, os componentes em um ASIC de processador MAC 310, ou vários outros). Na modalidade exemplar, o primeiro modo utiliza um armazenador de pacotes externo armazenado em uma RAM externa tal como a SDRAM 340.
No bloco de decisão 3210, caso uma terceira memória não deva ser usada para o armazenador de pacotes, passar a 3212 para configurar vários componentes do dispositivo de comunicação sem fio em um segundo modo. Na modalidade exemplar, o segundo modo é um modo do tipo STA acima descrito (em que a SRAM é usada para o armazenador de pacotes) e os parâmetros são armazenados na tabela de hardware.
Em 3216, configurar a primeira memória (a qual pode ser uma tabela de hardware) com ponteiros endereçados MAC para estruturas de dados na segunda memória. Em 3218, ajustar a segunda memória com as estruturas de dados. Tais estruturas de dados podem incluir niveis variáveis adicionais de vias indiretas, tal como acima descrito com referência à Figura 30. Como exemplo, uma primeira estrutura de dados pode identificar fluxos associados a endereços MAC. As IDs de fluxo podem ser usadas para indexar tabelas adicionais, tais como á tabela de estado de fluxo RX ou a tabela de estado de fluxo TX. Mais ainda, uma ou mais tabelas, tais como a tabela de estado de fluxo RX, podem possuir ponteiros para estruturas de dados adicionais associadas ao fluxo (tais como o ponteiro de bitmap apontando para a localização do bitmap de ACK de blocos). Em 3230, configurar o armazenador de pacotes na terceira memória. Em um exemplo, a configuração de um armazenador de pacote pode incluir o ajuste de várias listas de ponteiros livres (tais como a lista de ponteiros de nós livres 710 e a lista de ponteiros de grandes blocos livres 720, e alocar espaço para nós 720 e blocos 740. Adicionalmente, podem ser alocados arranjos (tais como usados para o processamento de recepção de pacotes) com listas de ponteiros de janelas livres associados a tais arranjos.
O firmware pode efetuar várias das etapas necessárias para formatar as várias memórias com as estruturas de dados apropriadas. Quando necessário, podem ser usados vários ajustes de registradores ou outras técnicas para ajuste de variáveis para indicar o modo para componentes no interior do dispositivo. Tais técnicas serão bem conhecidas pelos técnicos na área. Dessa forma, o primeiro modo é configurado e o processo pode parar.
Em 3212, configurar a primeira memória com várias estruturas de dados, tais como aquelas acima descritas. Em tal caso, a memória 1 pode ser uma tabela de hardware e as estruturas de dados não são necessariamente acessadas indiretamente, mas podem ser tal como descrito na Figura 29 (por exemplo, tabelas de estado de fluxo RX indexadas por fluxo dentro da tabela de hardware). Em 3214, configurar a segunda memória na forma de um armazenador de pacotes, de forma muito semelhante àquela acima descrita para a memória 3 em 3220. Dessa forma, é configurado o segundo modo. A seguir, o processo pode parar. O processamento MAC, tal como aqui descrito, pode continuar.
A Figura 33 apresenta uma configuração alternativa para uma parte do armazenador de pacotes 250 configurado para suportar arranjos de pacotes RX. Tal modalidade é similar ao armazenador de pacotes 250 apresentado na Figura 6. No entanto, em tal configuração, a estrutura de dados da fila de lista interligada da Figura 6 é substituída por um arranjo de nós 3330. 0 uso de uma estrutura de dados de arranjo permite algumas simplificações. Neste exemplo, os nós no arranjo de nós são contíguos, portanto um ponteiro de próximo nó 612 não é necessário. Dessa forma, o nó 610 é substituído pelo nó reduzido 3310. Os campos remanescentes no nó 3310, de comprimento 614, número de seqüência 616 e ponteiro de grande bloco 618, são tal como descrito com referência à Figura 6. Nós menores resultam em uma redução da utilização de memória.
Como antes, são usados blocos 620 para armazenar pacotes de vários comprimentos. Uma diferença é a de que a estrutura de. arranjo não requer o entrelaçamento de nós para formar uma fila. Dessa forma, como foi acima mencionado, o ponteiro de próximo nó não necessita localizar nós. 0 ponteiro de final de fila 640 e o ponteiro de início de fila 630 são substituídos por um único ponteiro, o ponteiro de janela 3320, que identifica onde no armazenador de pacotes está localizado o arranjo de nó 3330 de sejado. O uso de tal estrutura modificada de nó/grande bloco ficará claro para os técnicos na área à luz dos presentes ensinamentos. Novamente, a estrutura de arranjo acima descrita não é necessária para o processamento RX, dado que a estrutura da Figura 6 é inteiramente adequada também para tal contexto. No entanto,1 quando implementado tal como apresentado na Figura 33, um arranjo de nó 3330 pode armazenar até uma janela completa de localizações de endereços de pacotes. Ele pode estar indexado por meio de um deslocamento de janela para o número de seqüência inicial corrente. Em tal caso, o arranjo de nó 3330 pode ser usado como um armazenador circular de localizações de pacotes.
PROCESSAMENTO DE REPASSE
Nesta seção será mais completamente detalhado o processamento de repasse. A decisão de repasse 2880 e o mecanismo de repasse 2890, juntamente com sinais associados e outros blocos interconectados, foram introduzidos acima com referência à Figura 28. Serão ilustrados a seguir vários aspectos relacionados ao repasse.
Em um aspecto, a tomada de decisão de repasse é separada do processo de repasse em si. O processo de tomada de decisão pode ser efetuado na velocidade de linha, enquanto o mecanismo de repasse opera de forma autônoma ao fundo. Um contexto exemplar em que tal aspecto pode ser útil é ilustrado pelo suporte para ACK de bloco. Em sistemas de pacotes sem fio da técnica anterior, tais como 802.11g ou b, não existia suporte para a ACK de blocos.
Quando um pacote chegava, ele seria confirmado ou não. Caso o pacote fosse confirmado, ele seria repassado e a transmissão de pacotes subseqüentes iria ser retomada. Caso o pacote não fosse confirmado, o transmissor iria reenviar o pacote até que ele fosse recebido corretamente (ou o pacote fosse abandonado pois o processo superou limites predefinidos). Assim sendo, os pacotes seriam inerentemente repassados na ordem em que chegaram.
Nos sistemas que suportam ACK de blocos, é possível receber pacotes fora de ordem. Quando os pacotes são recebidos corretamente, um bit associado será ajustado em um bitmap de janela. Para pacotes que não são confirmados, os bits associados podem ser ajustados para zero. A retransmissão de pacotes pode ser tentada no futuro. Enquanto isso, pacotes subseqüentes podem ser recebidos e armazenados para repasse. Nos sistemas em que os pacotes devem ser repassados em ordem, um pacote não confirmado cria um "buraco", que susta o repasse de pacotes recebidos subseqüentemente, enquanto se aguarda que o pacote não confirmado seja recebido corretamente. Um único pacote pode então ser recebido após ser retransmitido, o qual preencheria o buraco, e, tendo sido recebidos subseqüentemente vários pacotes, um grupo de pacotes estará imediatamente disponível para repasse. Isto pode introduzir uma "lista de espera" de pacotes aguardando o repasse, podendo daí advir uma latência de repasse. A separação da decisão de repasse do processamento do mecanismo de repasse permite que o bloco de decisão de repasse opere na velocidade de linha, enquanto a lista de espera de pacotes é processada para repasse. O mecanismo de repasse pode operar de forma autônoma e, presumindo-se que a interface para a memória de repasse seja de velocidade elevada em relação à velocidade de recepção, o mecanismo de repasse será capaz de recuperar o atraso. Dessa forma, a lista de espera de pacotes não limita a capacidade de transmissão geral do receptor
Em outro aspecto, a separação da decisão e do processamento de repasse permite priorização do repasse de fluxos. Como exemplo, informações sensíveis a retardo, tais como voz, vídeo, ou outros dados de prioridade, podem ser gerenciadas de modo diferente de dados de baixa prioridade.
A Figura 34 ilustra um esquema de prioridade de ponta a ponta para redes sem fio, incluindo policiamento de entrada e repasse baseado em prioridade. Na Figura 34, o sistema 100 inclui uma função de policiamento de entrada 3410 para recepção de pacotes de entrada. Como foi acima detalhado, várias funções de policiamento de entrada permitem a priorização de pacotes de entrada recebidos. A LAN sem fio 120 acopla o bloco de policiamento de entrada 3410 com um bloco de repasse com base em prioridade 3420. As QoS WLANs (bem conhecidas pelos técnicos na área) permitem que pacotes e/ou fluxos identificados recebam prioridade sobre outros tipos de pacotes ou fluxos. No entanto, o processamento QoS da técnica anterior ocorre somente sobre a comunicação ponto a ponto proveniente do receptor e transmissor através da WLAN 120. 0 bloco de repasse com base em prioridade 3420 efetua decisões de repasse incorporando a prioridade. Em tal caso, os pacotes já foram transmitidos e recebidos, talvez de acordo com a prioridade ou QoS. O repasse baseado em prioridade está acima e além do conceito de QoS na WLAN, tal como a WLAN 120. Dessa forma, pacotes de prioridade mais elevada podem ser repassados para saida mais cedo do que aqueles de prioridade mais baixa.
Dessa forma, a QoS pode ser mantida desde a entrada em uma ponta da transmissão e por toda a trajetória até a saida após a recepção no receptor. O policiamento/politica de entrada 3410 pode priorizar pacotes através da ponta de entrada, onde eles serão transmitidos com prioridade em uma QoS WLAN 120 (caso a QoS seja suportada) e, caso ocorra qualquer retardo no repasse no receptor, os pacotes de prioridade mais elevada podem receber a primeira prioridade. Note-se que o policiamento de entrada ou o repasse com base em prioridade podem ser implementados com ou sem uma QoS WLAN, podendo também ser implementados separadamente um do outro. Dessa forma, o repasse com base em prioridade pode ser usado em um esquema com uma ou mais outras técnicas de QoS. Tais aspectos podem ser desejáveis também em aplicações que não dependem de um processador hospedeiro/hospedeiro. Como exemplo, aplicativos de camadas superiores podem possuir alguma capacidade de priorização para determinar a ordem em que os pacotes são levados a um processador MAC. A medida que cada vez mais dispositivos passam para a conectividade "sem fio", tais como câmeras, dispositivos digitais de música e outros exemplos, tais dispositivos podem ter capacidade baixa de processamento hospedeiro (ou mesmo nenhuma). O policiamento de entrada, então, pode ser implementado de forma útil para permitir transmissão e recepção eficientes de múltiplos fluxos.
O policiamento de entrada e o repasse baseado em prioridade, como aqui descrito, podem ser vantajosamente combinados com a estrutura de lista interligada para o gerenciamento de pacotes (isto é, o uso de listas interligadas para nós, blocos e filas), apesar de a combinação de ambos não ser necessária em qualquer das modalidades. Em particular, a alocação dinâmica de pacotes a medida que eles são recebidos (através da entrada ou do receptor) permite que a memória seja flexivelmente alocada entre pacotes ou fluxos de alta e baixa prioridade. As estruturas de lista interligada permitem flexibilidade na mudança eficiente da ordem de serviço quando os níveis de congestionamento ditam que os pacotes de prioridade mais elevada devem ser servidos, e de forma igualmente fácil servindo a todas as classes de pacotes quando o congestionamento diminui.
A Figura 35 apresenta uma modalidade exemplar de um método 3500 ilustrando a operação da decisão de repasse 2880 e do mecanismo de repasse 2890. Em 3510, a decisão de repasse 2880 recebe um acionador indicando que foi recebido um pacote. Na modalidade exemplar, o sinal de gravação completa irá indicar quando o pacote foi completamente gravado no armazenador de pacotes, para evitar o repasse acidental de um pacote gravado parcialmente. As informações necessárias para efetuar uma decisão de repasse, como será detalhado mais adiante, são levadas à decisão de repasse 2880 a partir do RX FIFO 2870.
Em 3520, a decisão de repasse 2880 determina se os pacotes estão disponíveis para repasse. De um modo geral, qualquer método ou técnica podem ser usados para priorizar os pacotes para repasse. Como exemplo, como foi acima descrito, as prioridades designadas para os fluxos permitem o repasse de fluxos com base na reordenação de acordo com a prioridade e não apenas a ordem de chegada. Note-se que a priorização não é requerida. Os fluxos podem ser repassados em ordem, a medida que pacotes se tornem disponíveis. Caso haja pacotes disponíveis para repasse, em 3530, uma fila de repasse é atualizada para indicar a ID de fluxo associada aos um ou mais pacotes disponíveis para repasse. Em 3540, o mecanismo de repasse 2890 irá realizar repasse de forma autônoma os pacotes disponíveis, permitindo que a decisão de repasse 2880 aguarde o próximo pacote recebido e efetue a decisão de repasse para tal pacote.
Os conceitos gerais ilustrados acima podem ser mais claramente entendidos por meio da modalidade exemplar que se segue. No exemplo a seguir, a decisão de repasse 2880 irá efetuar decisões de repasse, atualizar filas associadas a pacotes para repasse e emitir ordens para o mecanismo de repasse 2890 para processar os repasses de forma autônoma. Como ilustrado na Figura 28, a decisão de repasse 2880 transporta uma ID de fluxo e parâmetros correlacionados para iniciar o repasse. Na modalidade exemplar, uma contagem de repasse, indicando o número de pacotes disponíveis para repasse, uma ID de fluxo associada a tais pacotes e um tipo de fluxo são levados ao mecanismo de repasse 2890 a partir da decisão de repasse 2880.
Além disso, pode ser implementado um sinal de interrupção. Tal interrupção opcional pode ser usada quando um pacote de maior prioridade for recebido e a decisão de repasse 2880 deseja passar o pacote de maior prioridade e seu fluxo à frente daqueles que estão sendo repassados no momento. As técnicas de interrupção são bem conhecidas pelos técnicos na área e podem incluir .interrupções do tipo agrupado, bem como interrupções acionadas por vetor e várias outras, dependendo do tipo de decisão de repasse e mecanismo de repasse implementados. Os técnicos na área notarão que o bloco de decisão de repasse 2880 e/ou o mecanismo de repasse 2890 podem ser implementados usando-se mecanismos de estado, processos de firmware ou software, em processadores de uso geral ou específicos, em hardware dedicado, ou qualquer combinação de tais. Neste exemplo, o mecanismo de repasse 2890 irá retornar um sinal de "repasse efetuado" para indicar que o repasse foi efetuado, juntamente com o número de pacotes repassados. Tal modalidade exemplar será detalhada mais adiante.
A separação das tarefas entre o bloco de decisão de repasse 2880 e o mecanismo de repasse 2890 foi delineada acima, sendo descritos alguns dos seus benefícios incluindo a priorização de fluxos e gerenciamento de potenciais gargalos. Nesta modalidade exemplar, a interface geral entre a decisão de repasse e o mecanismo de repasse consiste em manter um parâmetro de contagem de repasses para cada fluxo. O bloco de decisão de repasse indica essencialmente a necessidade para repasse de um fluxo pelo aumento da contagem de repasse. O mecanismo de repasse reduz a contagem de repasse a medida que ele efetua o repasse dos pacotes. Dessa forma, tal parâmetro pode ser de um modo geral usado entre qualquer modalidade de decisão de repasse com quaisquer motores de repasse em questão.
Note-se que esta técnica contrasta com o uso alternativo de um FIFO. Um FIFO também pode ser implementado para repasse, em conjunto com várias modalidades aqui descritas. No entanto, devido à grande variação do número de pacotes que possam estar aguardando o repasse, em certas circunstâncias o FIFO pode ser bastante profundo. Note-se também que, sem a adição de maior complexidade ao FIFO, pode ser difícil a reordenação dos pacotes de modo a acomodar a prioridade. Na modalidade exemplar, é mantida uma fila do tipo primeiro a chegar - primeiro a ser servido para cada um dentre uma pluralidade de níveis de prioridade. Na modalidade exemplar, são suportadas quatro prioridades. Os técnicos na área notarão que pode ser suportado qualquer número de filas e/ou prioridades.
Em uma modalidade alternativa, o bloco de decisão de repasse 2880 pode efetuar decisões de repasse e preencher uma ou mais filas e/ou tabelas de estado para indicar o estado das filas e os pacotes que nelas aguardam o repasse. Pode ser implementado um mecanismo de repasse 2890 que não requer acionamento explicito a partir da decisão de repasse 2880, tal como mostrado, mas que monitora de forma autônoma o estado das diversas filas e tabelas de estado para determinar quais pacotes estão disponíveis para repasse e para priorizar a ordem em que eles são repassados. Os técnicos na área saberão facilmente implementar estas e outras modalidades alternativas dentro do escopo dos presentes ensinamentos. Os detalhes desta modalidade alternativa são omitidos.
A Figura 36 ilustra uma modalidade exemplar de um método 3600 para efetuar a decisão de repasse, adequado para implementação em um bloco de decisão de repasse 2880, tal como acima descrito. Em 3610, quando um pacote é recebido, passar para 3620 para processar o fluxo para o pacote recebido. Um exemplo de processo será detalhado mais adiante. De um modo geral, quando for suportada a confirmação de blocos, o processamento de um pacote inclui determinar se um "buraco" foi preenchido (isto é, um ou mais pacotes de número de seqüência mais alto foram corretamente recebidos e estão aguardando o repasse até que um pacote com um número de seqüência anterior seja recebido após a retransmissão). Naturalmente, os pacotes corretamente recebidos em ordem podem estar disponíveis para repasse sem preencher um buraco (isto é, não existe qualquer pacote com numeração subseqüente aguardando repasse). A recepção de um pacote pode acionar a disponibilidade de um ou mais pacotes para repasse, ou o próprio pacote pode ser o único pacote pronto para repasse. Caso o pacote recebido não preencha um buraco existente, pode não existir qualquer repasse disponível para tal fluxo. O processo então retorna ao bloco de decisão 3610.
Neste exemplo, o fluxo alterna entre o bloco de processo de pacote 3630 e o bloco de processo de fila 3630 (detalhado mais adiante). Os técnicos na área notarão que o método 3600 ilustra dois processos simultâneos, um para processamento da fila de repasse e outro para recepção de pacotes a medida que eles chegam. Os técnicos na área conhecerão várias técnicas para efetuar tal processamento paralelo e a modalidade exemplar serve apenas como ilustração.
A Figura 37 ilustra uma modalidade exemplar de um método para o processamento de um pacote recebido, adequado para implementação como o bloco 3620, tal como acima ilustrado. Em 3710, foi recebido um pacote. Determinar se o fluxo associado a tal pacote foi alimentado a uma tabela de estado de decisão. Uma tabela de estado de decisão exemplar está ilustrada na Figura 40. Na tabela de estado de decisão exemplar 4000, ilustrada na Figura 40, existem N IDs de fluxo suportadas em um dado instante. Na modalidade exemplar, podem ser suportados até 256 fluxos. A tabela de estado de decisão 4000 inclui, para cada ID de fluxo, um conjunto de parâmetros 4010. Na modalidade exemplar, a tabela de estado de decisão 4000 inclui, para cada ID de fluxo, um deslocamento de decisão 4012, uma contagem de repasse 4014, um campo de ponteiro seguinte 4016, um bit em fila 4018 e um campo de prioridade 4020.
Fazendo novamente referência à Figura 37, em 3710, caso o fluxo não esteja na tabela de estado de decisão 4000, passar a 3715 para adicionar o fluxo à tabela de estado de decisão. Uma vez que seja determinado que o fluxo está na tabela de estado de decisão, passar para 3720 para determinar se um pacote está disponível para repasse. O campo de deslocamento de decisão 4012 é usado para determinar o próximo pacote potencial no fluxo que pode ser repassado. Pode ser usada uma variedade de técnicas para manter tal informação. Como exemplo, pode ser implementado um bitmap com um bit associado para cada pacote e/ou fragmento dentro de uma janela. Quando um pacote é recebido corretamente, o bitmap é atualizado de modo a indicar a recepção bem sucedida do pacote. Dessa forma, neste exemplo, caso o pacote associado à posição indicada pelo campo de deslocamento de decisão esteja acionado (isto é, seja igual a 1), então o pacote está disponível para repasse. Caso tal posição no bitmap não esteja acionada (isto é, esteja ajustada para 0) , então é indicado um buraco e nenhum dos pacotes subseqüentes para tal fluxo (caso existam) estará disponível para repasse.
Neste exemplo, o processo de decisão de repasse 3600 continua a interagir repetidamente. Caso um pacote esteja disponível para repasse, passar ao bloco de decisão 3730 para determinar se a ID de fluxo está incluída na fila de repasse. Uma modalidade exemplar de uma fila de repasse está ilustrada como a tabela de estado de arranjo Q 4100, mostrada na Figura 41. Neste exemplo, são mantidas filas para até M prioridades, cada uma com entradas 4110 na tabela de estado de arranjo Q 4100. Neste exemplo, uma entrada 4110 inclui uma variável de contagem Q 4112, um ponteiro de início 4114 e um ponteiro de final 4116. As filas são mantidas usando-se uma estrutura de lista interligada. Em modalidades alternativas, podem ser implementados outros tipos de filas. Na modalidade exemplar, M é ajustado para 4 e, portanto, são suportados quatro níveis de prioridade. O nível de prioridade para um fluxo pode ser determinado a partir do campo de prioridade 4020 da tabela de estado de decisão 4000. O bit em fila 4018 pode ser usado para determinar se o fluxo foi ou não inserido na tabela de estado de arranjo Q. Em uma modalidade alternativa, a contagem de repasse 4014 pode ser usada para auxiliar a lógica de decisão a determinar se um dado fluxo já possui pacotes aguardando o repasse, ou se ele deve ser adicionado à fila. A contagem de repasse pode ser diferente de zero, porém pode não estar claro se ela já era diferente de zero ou se ela acabou de se tornar diferente de zero. Neste exemplo, os pacotes podem estar sendo processados um de cada vez. Em várias modalidades, tal bit pode não ser necessariamente, ou pode ser, usado por conveniência.
Caso a ID de fluxo não esteja na fila de repasse, passar para 3735 para adicionar o fluxo. Como mostrado na Figura 41, para cada fila de prioridade, são mantidos um ponteiro de inicio 4114 e um ponteiro de final 4116. O ponteiro de inicio 4114 inclui uma ID de fluxo que pode ser usada para indexação à tabela de estado de decisão 4000 para determinar o primeiro fluxo na fila. Neste exemplo, lembrar que, dentro de uma prioridade, os fluxos são servidos com base em primeiro a chegar - primeiro a ser servido. Dessa forma, o ponteiro de inicio 4114 é um índice para a ID de fluxo para o primeiro fluxo a ser servido dentro da fila. Note-se que uma vez acessada a ID de fluxo indicada pelo ponteiro de início 4114, o próximo fluxo dentro de tal fila, caso exista, está indicado pelo campo de próximo ponteiro 4016. O ponteiro de final 4116, na tabela de estado de arranjo Q 4100, indica o último fluxo na fila de prioridades. Quando da adição de um fluxo novo à fila de repasse, o processo pode ser efetuado atualizando- se o campo de próximo ponteiro para a ID de fluxo identificada pelo ponteiro de final 4116. Tal campo será substituído por um ponteiro para o fluxo que está sendo adicionado. Subseqüentemente, o campo de ponteiro de final 4116 é atualizado de modo a apontar para o fluxo recém chegado, o qual se torna o novo final da fila (isto é, o último da fila) . Além disso, o campo de contagem de fila 4112 mantém o número total de fluxos dentro da fila de prioridade. Dessa forma, através da leitura do valor de contagem de fila para o nível de prioridade, pode ser rapidamente determinado se existem quaisquer pacotes de tal prioridade aguardando repasse. Tal procedimento é seguido para manutenção das filas para cada uma das M filas de prioridade, e o estado é mantido facilmente na tabela de estado de arranjo Q 4100.
Uma vez determinado que o fluxo está na fila de repasse, ou que foi adicionado, passar para 3740 para elevar a contagem de repasse 4014. Note-se que a contagem de repasse é um parâmetro usado para determinar o número de pacotes aguardando o repasse para um fluxo especifico, e que é mantida na tabela de estado de decisão 4000. Em 3750, determinar se existem pacotes adicionais para repasse para o fluxo. Quando for determinado que um primeiro pacote está pronto para repasse e a contagem de repasse foi incrementada, o deslocamento de decisão pode se mover para a frente dentro do bitmap (isto é, deslocamento de decisão ++). Caso o deslocamento de decisão atualizado também apresente um pacote disponível para repasse, retornar a 3740, elevar a contagem de repasse e continuar o processo até que todos os pacotes dentro da janela tenham sido testados, ou até que um buraco tenha sido alcançado. Note- se que o deslocamento de decisão irá então apontar para o próximo buraco. Em interações subseqüentes do método 3620, cada fluxo será testado quanto a pacotes de repasse disponíveis a medida que cheguem pacotes para tal fluxo.
Uma vez alcançado um buraco, e não existam pacotes adicionais para repasse, passar para 3760. O bloco de decisão 3760 ilustra um exemplo opcional de um procedimento de interrupção que pode ser implementado. Os técnicos na área poderão facilmente implementar vários procedimentos de interrupção. Em 3760, determinar se um repasse está ocorrendo no momento. Caso não haja um repasse em andamento, o processo pode parar. Caso um repasse esteja em curso, e caso esta re-priorização opcional esteja implementada, passar para 3770. Em 3770, pode ser determinado se o fluxo do pacote recém chegado é de prioridade mais elevada e deve ser passado à frente de quaisquer pacotes que estejam em repasse no momento. Testar a prioridade do fluxo atual com a prioridade do fluxo que está sendo processado pelo mecanismo de repasse 2890. Caso a prioridade do fluxo atual seja maior do que aquele sendo processado, passar a 3775 e acionar um indicador/sinalizador de interrupção. Neste exemplo, o indicador de interrupção será reconhecido durante o processamento da fila de repasse, identificado no bloco 3630 acima, e ilustrado em maiores detalhes mais adiante. Caso a prioridade do fluxo atual seja menor do que aquela do fluxo sendo processado pelo mecanismo de repasse 2890, não há necessidade de preempção e o processo pode parar.
A Figura 38 ilustra uma modalidade exemplar de um método para processamento de uma ou mais filas de repasse, adequado para implementação como o bloco 3630 acima ilustrado. 0 processo se inicia no bloco de decisão 3810. caso um repasse, processado pelo mecanismo de repasse 2890, esteja ocorrendo no momento (isto é, uma interação anterior do método 3630 iniciou tal repasse), então prosseguir para a decisão 3815 para determinar se tal repasse está completo. Caso ele tenha sido completado, então, em 3820, atualizar a contagem de repasses. Na modalidade exemplar, o número de pacotes repassados será retornado pelo mecanismo de repasse 2890 e pode ser subtraído da contagem de repasses. 0 sinal de repasse completado ilustrado na Figura 28 pode ser usado para determinar se um repasse está completo. Note-se que quando a contagem de repasse vai a zero, a ID de fluxo pode ser removida da respectiva fila de prioridade usando os campos ilustrados na Figura 41. Além disso, quando um fluxo é removido de uma fila, a respectiva contagem Q também é reduzida. Em 3825, um indicador de espera, usado para determinar quando um repasse está sendo efetuado, é resetado. Tal indicador é útil para determinar se um repasse está pendente no bloco de decisão 3810 e pode também ser usado no bloco de decisão 3760, acima descrito, com relação ao processamento de pacotes. Caso o repasse não esteja completo, tal como determinado no bloco de decisão 3815, e esteja implementado um recurso de interrupção, tal como acima descrito, passar ao bloco de decisão 3830 para determinar se um indicador de interrupção foi acionado. Como exemplo, tal indicador pode ser acionado tal como descrito no bloco 3775 acima descrito. Caso negativo, o processo pode parar. O mecanismo de repasse 2890 pode continuar a efetuar suas operações de repasse atuais e o fluxo de processo na Figura 36 pode voltar ao bloco de decisão 3610 para aguardar pacotes adicionais sendo recebidos ou uma mudança no estado de processamento da fila de repasse. Caso, no bloco de decisão 3830, tenha sido acionado um indicador de interrupção, comandar uma interrupção ao mecanismo de repasse no bloco 3835. A seguir, será detalhada uma modalidade exemplar de processamento por mecanismo de repasse de um sinal de interrupção.
No bloco de decisão 3840, o mecanismo de repasse completou qualquer processamento anterior e podem ser geradas instruções adicionais de repasse. No bloco de decisão 3840, determinar se um fluxo está disponível para repasse na fila de repasse. Uma modalidade exemplar será detalhada mais adiante. Caso negativo, o processo pode parar e continuar a interagir tal como acima descrito. Caso esteja disponível um fluxo, em 3845, iniciar um repasse para o mecanismo de repasse. Como foi acima descrito, a ID de fluxo e parâmetros correlacionados podem ser levados ao mecanismo de repasse. Na modalidade exemplar, a contagem de repasses pode ser igual a qualquer número. Caso a contagem de repasses seja maior do que um, o mecanismo de repasse pode realizar repasse cada pacote até o final, a menos que seja interrompido. Em uma modalidade alternativa, o mecanismo de repasse pode processar um pacote a cada vez que um repasse seja iniciado. Em tal modalidade alternativa, uma interrupção pode ser desnecessária. Em 3850, o indicador de espera é acionado para indicar que um processo de repasse está pendente. A seguir, a interação corrente do processo pode parar.
A Figura 39 apresenta uma modalidade exemplar de um método para determinar os fluxos disponíveis para repasse, adequado para implementação como o bloco 3840 acima descrito. Note-se que este exemplo presume que os fluxos de maior prioridade recebem um valor numérico de prioridade mais baixo. Dessa forma, a prioridade 0 é a prioridade mais alta. Os técnicos na área adaptarão facilmente qualquer tipo de esquema de prioridade dentro do escopo dos presentes ensinamentos. Em 3910, caso exista um fluxo na fila identificada pelo índice de prioridade (isto é, sua contagem Q for maior do que 0), então sair do método 3840 e retornar o fluxo. Novamente, na modalidade exemplar, o primeiro fluxo na fila (identificado pelo ponteiro de início) da prioridade identificada será repassado.
Caso a fila de prioridade identificada não contenha quaisquer fluxos, incrementar o índice de prioridade em 3930. Em 3940, caso o índice de prioridade seja maior do que N, que é o número de prioridades suportadas (N = 4 na modalidade exemplar), não existem quaisquer filas adicionais a testar. Em tal caso, todas as filas estão vazias. Caso existam filas adicionais a testar (isto é, o índice de prioridade for menor do que Ν) , retornar para testar a próxima fila em 3920. O processo continua até ser encontrado um fluxo, ou até que as filas sejam exauridas. Novamente, qualquer tipo de técnica de seleção de fluxo pode substituir o método 3840.
A Figura 42 ilustra uma modalidade exemplar de um método 4200 para efetuar repasse, adequado para implementação em um mecanismo de repasse 2890. Em tal modalidade exemplar, o bloco de decisão de repasse 2880 leva ao mecanismo de repasse 28 90 um certo número de pacotes para repasse, uma contagem de repasses, um tipo de fluxo (o qual pode ser usado caso esteja implementado o suporte para múltiplos tipos de pacotes, tais como 802.11b, g, n, etc.) e uma interrupção. O mecanismo de repasse leva pacotes para a saida, os quais são recolhidos a partir do armazenador de pacotes através do árbitro de memória 680, tal como acima descrito com referência à Figura 28. O número de pacotes repassados, juntamente com o sinal de repasse completo, são retornados à decisão 2880 para processamento, tal como foi acima descrito.
Em 4210, o mecanismo de repasse 2890 recupera um ou mais nós a partir do armazenador de pacotes, até a quantidade indicada pela contagem de repasses. Os nós estarão localizados no armazenador de pacotes em um local identificado por um ponteiro de janela mais um deslocamento de repasse, que estão ajustados em correspondência à ID de fluxo. Note-se que o armazenador de pacotes recebidos exemplar pode ser tal como ilustrado na Figura 33, em que um arranjo de nó 3330 compreende os nós 3310, cada um correspondendo a um pacote, ligados em um formato de arranjo, com listas interligadas de blocos contendo os dados de pacotes associados aos mesmos. As variáveis usadas para indexar o armazenador de pacotes são mantidas para o mecanismo de repasse na tabela de estado de repasse 4300, ilustrada na Figura 43. Novamente, são suportadas N IDs de fluxos e para cada ID de fluxo é mantida uma entrada 4310 na tabela de estado de repasse 4300. Na modalidade exemplar, são suportados até 256 fluxos. O firmware mantém a localização do arranjo de nós no armazenador de pacotes para cada fluxo. Este é identificado na tabela de estado de repasse 4300 pelo ponteiro WIN 4314. O tamanho da janela para os fluxos indicados no tamanho win 4316. O deslocamento de repasse 4312 é mantido em estado pelo mecanismo de repasse para determinar onde será encontrado o próximo pacote a ser repassado. Dessa forma, os nós correspondendo a pacotes para repasse são identificados, tal como foi acima descrito, pela adição do deslocamento de repasse 4312 ao ponteiro WIN 4314. Para acesso à SDRAM mais eficiente, pode ser desejável recuperar mais de um nó de cada vez, apesar de tal não ser requerido.
O tamanho WIN 4316 pode ser usado com o número de seqüência inicial e o deslocamento de repasse para posicionar o mecanismo de repasse para o pacote de deve ser processado para repasse. Neste exemplo, o deslocamento de repasse aponta para o número de seqüência inicial na estrutura de dados de janela (isto é, um arranjo de nós) e o número de seqüência a ser repassado é identificado em relação ao número de seqüência inicial.
Em 4215, selecionar o primeiro nó correspondente ao deslocamento de repasse 4312. Em 4220, recuperar blocos correspondentes a tal nó a partir do armazenador de pacotes. Em 4225, defragmentar o pacote, caso necessário, com base no tipo de fluxo. Isto pode envolver recuperar vários fragmentos a partir do armazenador de pacotes, remover os headers de fragmentos de cada fragmento, compactar os blocos em um único pacote e criar o cabeçalho apropriado. Isto pode ser efetuado no bloco defrag 2892 associado ilustrado na Figura 28. O tipo de fluxo pode ser usado para indicar quando a fragmentação é necessária. Como exemplo, em algumas modalidades, podem ser suportados pacotes 802.11e e g e a fragmentação pode ser usada. Note- se que, em uma modalidade alternativa, detalhada mais adiante, os tipos de pacotes requerendo fragmentação são manipulados em firmware para reduzir a complexidade. Em tal modalidade, o bloco defrag 2892 não necessita ser implementado.
Em 4230, uma vez recuperados cada um dos blocos associados ao pacote e o pacote ser reconstruído (incluindo qualquer defragmentação necessária), levar o pacote para saída. Como foi acima descrito, a saída pode ser efetuada através de qualquer uma dentre uma variedade de interfaces, exemplos das quais foram apresentados acima.
Uma vez repassado um pacote (ou um conjunto de fragmentos), o deslocamento de repasse 4312 é atualizado para identificar o próximo pacote para repasse. Em 4240, uma variável # repassada, para seguir o número de pacotes repassados, é adequadamente incrementada. Em 4245, caso sejam suportadas interrupções, e uma interrupção tenha sido emitida, passar a 4225. Em 4225 o repaaase para, é confirmado o repasse finalizado e o número de pacotes repassados é retornado. Em tal modalidade, a interrupção é acionada após cada pacote ser completamente repassado. Podem ser implementados esquemas de interrupção alternativos, e ficaram claros para os técnicos na área.
Uma vez interrompido, o processo de repasse para. Neste exemplo, o bloco de decisão de repasse 2880 pode posteriormente emitir um novo comando de repasse para o mecanismo de repasse 28 90 para continuar o repasse de pacotes para um fluxo interrompido. Em 4245, caso não tenha sido recebida qualquer interrupção, passar ao bloco de decisão 4250. Em 4250, caso não existam quaisquer pacotes adicionais a o repasse, o que pode ser determinado pela comparação do número de pacotes repassados com a contagem de repasses, o repasse está completo. Passar para 4255, confirmar que o repasse está terminado e retornar o número de pacotes repassados.
Caso existam pacotes adicionais para repasse, passar a 4260. Processar o próximo nó e retornar a 4220 para recuperar blocos que correspondam a tal nó, retomando o processo acima descrito.
0 bloco de descarte 2894 está conectado ao mecanismo de repasse 2890, tal como ilustrado na Figura 28.
O bloco de descarte 2894 pode ser usado para seguir limites de reenvio, timeouts e similares, que podem ser usados para finalmente descartar um pacote. Isto permite ao mecanismo de repasse passar à frente antes que um buraco seja preenchido. 0 repasse então ocorre, enviando pacotes e qualquer retransmissão subseqüente será manuseada através de camadas superiores, caso necessário.
0 bloco de descarte 2894 efetua várias funções quando a janela ARQ é movida. Como exemplo, pacotes parcialmente fragmentados são descartados. Pacotes completados são repassados independentemente da existência de buracos. Os armazenadors são liberados e, portanto, ponteiros de grandes blocos são recolocados na lista de ponteiros de grandes blocos livres e as janelas são movidas.
Os técnicos na área adaptarão facilmente vários circuitos, componentes e técnicas em modalidades alternativas. Em uma modalidade exemplar generalizada (e compatível com a modalidade alternativa 4900 apresentada na Figura 49 detalhada mais adiante) uma máquina de estado de entrada (ISM) processa os pacotes recebidos e atualiza as informações usadas por uma máquina de estado de controle (CSM). Tais atualizações podem incrementar o número de pacotes na memória e também atualizam a ordem em que as flow_ids devem ser processadas pela CSM. A CSM pode atualizar uma cachede nós de quatro pacotes no transmissor, tal como acima descrito. Tal máquina de estado opera sobre as informações em uma f low_packet_table. Um ponteiro de início e um ponteiro de final, bem como o ponteiro de próximo fluxo na tabela permitem à CSM selecionar a próxima flow_id a ser processada. Pode existir um bit "em serviço" na tabela (por flow_id) que informa à CSM se os pacotes provenientes de tal flow_id estão em transmissão no momento. Tal bit pode ser ajustado para 1 pelo mecanismo TX antes que ele inicie a transmissão, e é ajustado para 0 após a transmissão ser finalizada. Uma máquina de estado de transmissão usa as informações provenientes da fila de comandos para transmissão de pacotes através da WLAN (de forma similar àquela acima descrita com referência à Figura 18). Uma máquina de estado de descarte (FSM), que pode ser usada como um bloco de descarte 28 94, descarta os pacotes SDRAM que forem corretamente recebidos e confirmados pelo respectivo receptor. A FSM a seguir decrementa os pacotes na contagem de memória na flow_packet_table.
A flow_packet_table pode possuir uma ou mais dentre as seguintes entradas: uma flow_id (1 byte), o número de pacotes na memória (2 bytes), pacotes na cache (2 bits), bit em serviço (1 bit), next_flow_id (1 byte) e um campo de prioridade de 2 bits. Quando um pacote chega na entrada, a ISM atualiza os pacotes na memória, atualiza a next_flow_id, bem como o tail_pointer. A máquina de estado de transmissão, quando está transmitindo pacotes a partir de uma flow_id especifica, ajusta o correspondente bit em serviço. Quando ajustado, a CSM não irá atualizar a cache de nós de quatro pacotes. Após os pacotes serem transmitidos, a máquina de estado TX atualiza o número de pacotes em cache e também reseta o bit em serviço. A CSM irá agir somente quando o bit em serviço for resetado. A ordem em que ela processa a flow_id é determinada pela next_flow_id. Caso desejado, um bit de prioridade de 2 bits pode ser adicionado à tabela. Em tal caso, a CSM irá primeiramente processar fluxos pertencentes à prioridade mais elevada, a seguir a próxima e assim por diante. Um exemplo do tamanho desta tabela é de aproximadamente 4 bytes vezes o número de fluxos, ou aproximadamente 1 Kbyte para 256 fluxos. A CSM usa o ponteiro de cabeçalho da flow_id (o primeiro pacote na linked_list) para inferir os endereços de nós dos pacotes que devem ser incluídos na cache de nós de quatro pacotes.
Dessa forma, em uma modalidade exemplar, um mecanismo de descarte ou bloco de descarte 2894 exemplar pode remover a partir do armazenador de pacotes todos os pacotes que forem recebidos com sucesso e confirmados. Quando for recebido um bitmap de confirmação de bloco, a máquina de estado TX primeiramente o processa e pode efetuar retransmissões imediatas para lidar com certos pacotes não confirmados (a confirmação de blocos será detalhada mais adiante). O bitmap é a seguir passado a uma máquina de estado de mecanismo de descarte no mecanismo de descarte ou bloco de descarte 2894, que recupera o head_pointer da estrutura de dados de lista interligada para a correspondente flow_id - o head_ptr está disponível na RAM de estado de fluxo. O head_ptr contém o endereço de nó do primeiro pacote para a dada flow_id, bem como o número de seqüência de tal pacote. A máquina de estado de mecanismo de descarte processa o bitmap e o enfileira para descartar pacotes que foram confirmados em seqüência. Tal lógica pode ser similar à lógica usada por uma máquina de estado de saída, em que os pacotes recebidos em seqüência são passados ao hospedeiro. Uma vez que a máquina de estado de mecanismo de descarte tenha identificado o número de pacotes a serem descartados e seus números de seqüência, eles podem ser colocados em uma fila para descarte. O head_ptr provê o endereço de nó do primeiro pacote na lista interligada. O endereço de nó dos pacotes a serem descartados é obtido por acesso aos endereços de nós dos correspondentes pacotes provenientes da lista interligada.
Na modalidade exemplar, a memória é alocada para prover locais de pacotes, blocos e nós suficientes. Dessa forma, o descarte pode ser efetuado ao fundo, uma vez que de um modo geral não existe uma exigência estrita de tempo ou momento para tal tarefa. 0 árbitro de memória pode prover acessos para as funções de descarte como uma tarefa de baixa prioridade.
CONFIRMAÇÃO DE BLOCOS
Os vários aspectos ilustrados por modalidades exemplares, acima descritas, são bem adequados para efetuar a confirmação de blocos para controle de acesso a mídia de alta velocidade. Em um tipico protocolo de confirmação de blocos, um transmissor transmite pacotes para um receptor por um período de tempo, sem necessariamente receber uma confirmação de qualquer um dos pacotes. A seguir, uma confirmação de bloco é retornada a partir do receptor para o transmissor, indicando quais dos pacotes previamente transmitidos foram recebidos corretamente. Uma confirmação de bloco pode ser transmitida em resposta a uma requisição de ACK de bloco, ou podem ser implementados mecanismos de programação alternativos, tais como uma resposta após um número predeterminado de pacotes ter sido recebido. Uma requisição de confirmação de bloco pode ser uma mensagem específica transmitida para indicar que é desejada uma confirmação de bloco, ou a confirmação de bloco pode estar inerente em outro tipo de sinal ou mensagem.
Um mecanismo para manter um estado de pacotes confirmados ou não confirmados consiste em manter um bitmap em que cada posição de bit corresponde a um pacote ou fragmento de pacote, tal como acima descrito com referência às Figuras 30 e 31. Um exemplo de bitmap 3130 foi acima descrito.
Em um sistema de alta capacidade de transmissão, pode ser desejável retornar uma requisição de ACK de bloco em um espaço de tempo relativamente curto após um evento acionador, tal como uma requisição de ACK de bloco explícita ou inerente, ou outro indicador de requisição de ACK de bloco. Em uma modalidade exemplar da 802.11, pode ser requerido que a requisição de ACK de bloco seja retornada dentro do período SIFs subseqüente a uma requisição de ACK de bloco (isto é, uma ACK de bloco imediata). Dessa forma, pode ser desejável a manutenção de informações de estado para múltiplos fluxos, permitindo uma pronta resposta de ACK de bloco para qualquer um dos fluxos pendentes e para processamento de confirmações de blocos subseqüentes à requisição. de ACK de bloco para retransmissão de quaisquer pacotes que necessitem retransmissão. Podem ser suportados vários tipos de confirmação de blocos. Como exemplo, pode ser desejada confirmação de estado parcial ou total. De um modo geral, a confirmação de estado parcial pode ser menos trabalhosa em termos de computação ou pode demandar menos retardo. As modalidades exemplares aqui descritas podem ser facilmente adaptadas para confirmação de blocos de estado total ou parcial, ou uma combinação de tais. Serão descritos outros aspectos mais adiante por meio das modalidades exemplares que se seguem.
ACK DE BLOCOS NO RECEPTOR
Em uma modalidade exemplar, é recebido um pacote, que pode ser um pacote agregado. A medida que os pacotes são recebidos no receptor, eles são testados para determinar se o pacote foi recebido corretamente, pode ser usado, por exemplo, uma seqüência de conferência de quadros ou similar. Independentemente do método para determinar a recepção correta de um pacote, pode ser armazenado um indicador para cada pacote (ou fragmento, conforme apropriado). Na modalidade exemplar, tais indicadores de confirmação são armazenados em um bitmap associado a cada fluxo. Uma variedade de técnicas para armazenamento de bitmaps para fluxos foram acima descritas com referência à Figura 30.
A Figura 4 4 é uma modalidade exemplar de um método 4400 para responder a uma requisição de ACK de bloco imediata. Tal método é adequado para responder prontamente a uma requisição de ACK de bloco.
Em 4410, são mantidas informações de cabeçalho de pacote para qualquer fluxo para o qual deva ser gerada uma ACK de bloco. Tais informações de cabeçalho podem ser mantidas em qualquer formato, exemplos dos quais são bem conhecidos pelos técnicos na área. As informações de cabeçalho (ou em modalidades alternativas, quaisquer informações que possam ser predeterminadas para uso na preparação de uma resposta de confirmação de bloco) são armazenadas para montagem de um pacote antes de uma potencial transmissão de ACK de bloco. Dito de outra forma, o pacote permanece em alguma forma de memória, apropriadamente formatado com todos os valores para envio (que possam ser estabelecidos a priori). A peça que falta é a das informações de bitmap indicando a real confirmação ou não confirmação de cada pacote ou fragmento individual (e quaisquer outras informações que não puderam ser estabelecidas anteriormente). O bitmap (e quaisquer informações restantes) é simplesmente inserido no pacote em espera e transmitido.
Note-se que em uma modalidade exemplar, acima descrita, podem ser implementados três niveis de memória para prover vários niveis de vias indiretas. Em um exemplo, o primeiro nivel de memória é de tabelas de hardware, tais como a tabela de hardware 2820. Um segundo nivel de memória pode incluir a SRAM 330. Em uma configuração opcional, pode ser implementado um terceiro nivel tal como a SDRAM 340. As informações de cabeçalho de pacote podem ser armazenadas em qualquer camada de memória considerada como possuindo acesso apropriado.
Em 4 420, é recebida uma ACK de bloco que pode ser implícita ou explícita. Em 4430, é recuperado o bitmap associado ao fluxo. Qualquer identificador de fluxo pode ser usado para recuperar o bitmap. Como exemplo, tal como foi acima descrito na Figura 30, é usado um índice MAC 3004 para identificar uma ID de enlace 3006 que possui um ponteiro associado 3002. 0 ponteiro 3002 pode apontar diretamente para uma tabela 3042 incluindo o bitmap 304 6 diretamente, ou o ponteiro 3002 pode apontar para uma tabela de taxas 3010 que, com base na ID de transmissão 3020, aponta para a tabela de estado RX 2920. Como foi acima descrito, a tabela de estado 2920 pode incluir um ponteiro de bitmap 3050 para apontar para o bitmap real 3130. Os técnicos na área notarão que pode ser implementado qualquer tipo de via indireta ou armazenamento direto de bitmaps. De acordo com a técnica usada, é recuperado o bitmap apropriado associado à ID de fluxo com a requisição de ACK de bloco.
Em 4440, o bitmap recuperado é colocado no pacote mantido e, em 4450, é transmitida a ACK do bloco agora montado. Dessa forma, nesta modalidade, é pré-montado tanto quanto possível do pacote de ACK de bloco. As informações de bitmap, ou outros dados de confirmação em uma modalidade alternativa, são mantidos em uma parte facilmente acessível da memória para pronta recuperação. A combinação dessas duas peças é a seguir transmitida prontamente para prover ACK de bloco imediata de estado parcial ou completa em resposta a requisições de ACK de bloco imediata.
As modalidades acima dão suporte à confirmação de bloco de estado total ou estado parcial imediata. O suporte para estado parcial, estado completo, ou qualquer combinação pode ser implementado em uma modalidade exemplar. No entanto, outras modalidades podem necessitar apenas dar suporte à confirmação de bloco de estado parcial, como parece que será o padrão para a 802.11η. Em tal caso, uma confirmação de bloco é enviada apenas em resposta ao agregado recebido, enviando o estado apenas para os pacotes recebidos.
Para ACK de bloco de estado parcial, deve ser mantida apenas uma única memória no receptor. Não há necessidade de incluir o estado completo (isto é, memória para 256 fluxos) . 0 estado de bitmap parcial mantido no receptor pode ser sobrescrito caso seja recebida uma transmissão proveniente de um originador diferente. Note-se que se o estado for sobrescrito acidentalmente, então não será possível uma requisição posterior para confirmação de bloco. Como exemplo, neste caso pode ser enviado um bitmap todo de zeros. Pode ser implementada uma dada modalidade para manter mais do que a quantidade mínima de estado, caso desejado.
ACK DE BLOCO NO TRANSMISSOR
Como foi acima descrito, um transmissor pode transmitir um certo número de pacotes e a seguir requisitar o estado da recepção através de uma requisição de confirmação de bloco explícita ou implícita. Para manter capacidade de transmissão elevada, é desejável que o transmissor esteja pronto para continuar a transmissão, ou retransmitir conforme necessário, imediatamente, quando a confirmação de bloco correspondente for recebida. Várias modalidades podem ser facilmente adaptadas para aproveitar vários aspectos, detalhados por todo o presente relatório descritivo, para permitir retransmissão eficiente e imediata em resposta a uma confirmação de bloco.
A Figura 45 apresenta uma modalidade exemplar do método 4500 para responder a uma confirmação de bloco. Tal método é bem adequado para modalidades que implementam arranjos de nó tais como aqueles armazenados em caches de arranjo de nós 1810 acima descritos. Além disso, as filas acima descritas, que podem ser alteradas e mantidas por listas interligadas de nós, são também bem adequadas para adaptação ao método 4500.
Para resumir o procedimento, note-se que a confirmação de bloco corresponde a um tamanho de janela (que possui tamanho de até 64 na modalidade exemplar) . O número de seqüência inicial é ajustado para o número de seqüência mais baixo representado pela janela (conceitualmente, o ponto mais à esquerda na janela). O transmissor sabe quantos pacotes foram transmitidos, portanto ele sabe onde está o último pacote na janela. Partindo do último pacote transmitido, o transmissor pode então prosseguir pacote a pacote através do bitmap desde o transmitido mais recentemente até o transmitido mais cedo. Caso seja identificada uma não confirmação (um zero na modalidade exemplar), então o ponteiro de nó para tal pacote é novamente ligado à fila de transmissão (que re- enfileira o pacote para retransmissão). O transmissor prossegue pelo bitmap, reconstruindo a fila de transmissão da lista interligada até ser alcançado o inicio do bitmap (identificado pela seqüência inicial anterior). O método 4500 é uma de tais técnicas que podem ser implementadas, apesar de qualquer técnica para determinação dos parâmetros de retransmissão requeridos poder ser usada em conjunto com as modalidades aqui descritas.
O exemplo a seguir ilustra o uso de um bitmap ACK de bloco para processar a fila de transmissão em um armazenador de pacotes. As mesmas técnicas, ou similares, podem ser igualmente aplicadas para prover retransmissão de baixa latência em resposta a uma ACK de bloco. Como exemplo, uma fila, tal como um arranjo de nós 1842, pode ser carregada com os nós de um fluxo, os quais são a seguir transmitidos tal como foi acima descrito. Tais nós podem permanecer até que uma ACK de bloco seja recebida e processada. O bitmap de ACK de bloco pode ser usado para indicar quais nós devem ser retransmitidos. Em uma modalidade, as posições dos nós no arranjo de nós irão corresponder a posições no campo de bits ou bitfield de ACK de bloco. Quando da recepção de uma ACK de bloco, os pacotes que não foram confirmados podem ser prontamente agregados e retransmitidos (presumindo-se que uma oportunidade de transmissão esteja disponível) usando-se as técnicas de agregação acima descritas. Este constitui um exemplo de técnicas de resposta de baixa latência que permitem que oportunidades de transmissão remanescentes sejam eficientemente utilizadas. Os nós no arranjo de nós podem ser movimentados a medida que a janela se move, de forma similar àquela descrita a seguir. Note-se que, usando-se arranjos de nós ou armazenadors de transmissão para c processamento de ACK de bloco e retransmissão, quando os pacotes são armazenados em um armazenador de pacotes usando-se estruturas de dados tais como nós e blocos, acima descritos, não há nunca necessidade de mover os dados de pacote dentro do armazenador de pacotes. Eles podem permanecer em um local durante a primeira transmissão e quaisquer retransmissões subseqüentes (apesar de poderem ser re-acessados durante cada transmissão) até que o pacote seja recebido com sucesso, ou superar limites predeterminados e seja descartado.
Em 4510, é recebida uma confirmação de bloco. Em 4515, o número de seqüência inicial é ajustado para apontar para o primeiro pacote não transmitido. Dessa forma, no exemplo em que uma ACK de bloco é recebida, indicando que todos os pacotes transmitidos foram recebidos corretamente, a janela será movida. 0 próximo pacote para transmissão será o primeiro pacote na nova janela, portanto o número de seqüência inicial deve estar associado a tal pacote. As etapas a seguir detalham como modificar o número de seqüência inicial e atualizar a fila de transmissão, para acomodar quaisquer retransmissões necessárias, caso sejam necessárias. Quando o processo é terminado, o número de seqüência inicial terá sido automaticamente atualizado para a posição apropriada movendo- se a janela para a frente (caso possível). A fila de transmissão será atualizada, permitindo que a transmissão ou retransmissão se inicie imediatamente.
Em 4520, examinar o bitmap de ACK de bloco que se inicia no pacote transmitido mais recentemente. Em 4525, caso seja detectado um zero (ou em uma modalidade alternativa, seja detectado um indicador de não confirmação), então tal pacote deve ser retransmitido. Passar a 4530 e ligar o ponteiro para a próxima transmissão ao pacote associado a tal posição de bitmap. Como exemplo, quando for implementada uma fila de transmissão tal como acima descrito com referência à Figura 6, o ponteiro de início de fila 630 pode ser direcionado para apontar para o nó associado ao pacote para o qual foi detectado um zero. A seguir, o campo de ponteiro de próximo nó 612 contido em tal nó pode ser atualizado para apontar para o ponteiro de inicio anterior. Em modalidades alternativas, podem ser usadas técnicas alternativas para atualizar uma fila de transmissão.
Em 4535 o número de seqüência inicial é atualizado para apontar para o pacote atual. Dessa forma, para cada zero recebido, o número de seqüência inicial será movido para um local anterior. Como foi acima descrito, caso todos os pacotes foram recebidos corretamente, a janela terá passado para o próximo pacote que aguarda a transmissão. No entanto, tal movimento à frente é então recuado até o zero detectado mais precocemente. Após todo o processo do método 4500, caso o pacote associado ao número de seqüência inicial na confirmação de bloco não tenha sido recebido corretamente, naturalmente a janela não será movida à frente.
Em 4540, voltar através do bitmap para o próximo pacote anterior. Em 4545, caso existam mais posições de bitmap a checar, voltar ao bloco de decisão 4525 para a próxima confirmação. Em 4525, caso não seja detectado um zero, o processo passa por 4540, passando através do bitmap e checando se o bitmap está completo. Uma vez testados todos os pacotes no bitmap, do bloco de decisão 4545 prosseguir para 4550 e iniciar a transmissão usando a fila de transmissão atualizada.
Em 4560, os pacotes que foram confirmados podem ser descartados e seus ponteiros associados reciclados para uso subseqüente. Note-se que tal etapa pode operar em paralelo (ou ao fundo) tal como mostrado. A seguir, o processo pode parar.
Em suma, quando um bitmap for recebido para uma ACK de bloco, os zeros no bitmap são religados à fila de transmissão existente para formar uma nova fila de transmissão. Os ponteiros de nós associados para tais pacotes são re-gravados na memória. No entanro, note-se que os próprios pacotes (identificados por ponteiros de grandes blocos e contidos nos blocos 620) nunca se movem. Somente quando os pacotes forem transmitidos com sucesso e confirmados (ou ocorra algum outro evento tal como um time out) serão descartados um nó e grande bloco e os ponteiros retornados à lista de ponteiros livres. Tal processo de gerenciamento de memória pode ser efetuado ao fundo e assim por diante. Em um caso em que, por exemplo, o transmissor possui tempo remanescente em sua TXOP, a fila de retransmissão é gerada rapidamente e a transmissão pode prosseguir para utilizar qualquer TXOP remanescente. Caso o transmissor não tenha permissão para retransmitir imediatamente (isto é, não há mais TXOP restante) , o mesmo método pode ser efetuado, porém a transmissão não necessita ocorrer imediatamente.
Note-se que, como foi acima descrito com referência à Figura 18, pode ser implementado uma cachedo tipo pingpong para permitir que os arranjos de nós 1842 sejam atualizados sem interferir com uma transmissão em curso. Tal técnica pode também ser implementada em um esquema de retransmissão de confirmação de bloco. A Figura 46 apresenta uma modalidade exemplar de um método 4 600 que pode ser implementado para utilização de uma cachede arranjo de nós ping pong em um processo de retransmissão. Como exemplo, o método 4 600 pode ser incorporado ao bloco 4550 acima descrito. Em 4610, ajustar um primeiro arranjo de nós ping pong 1842 usando ponteiros de nós provenientes da fila de transmissão, potencialmente atualizados em resposta a informações de retransmissão na requisição de confirmação de bloco. Atualizar a ID de enlace conforme apropriado em 1844, tal como acima descrito. Em 4 620, comutar para este primeiro arranjo de nós para permitir que a transmissão prossiga. Em 4 630, pode ser limpa a estrutura de memória conforme necessário (isto é, descartando pacotes, reciclando ponteiros e similares).
CONFIRMAÇÃO DE BLOCO MULTI-TID
Em uma dada estação pode ser possível suportar uma variedade de fluxos (por exemplo, até 16 fluxos) , em que cada fluxo corresponde a um identificador de tráfego (TID). Note-se que um TID mapeia um fluxo proveniente de uma estação. Em um agregado é possível encontrar pacotes correspondentes a múltiplos TIDs, por exemplo agregando pacotes por enlace.
Portanto, uma ACK de bloco pode ser retornada correspondendo a múltiplos TIDs (ou uma ACK de bloco de múltiplos TIDs). Em uma modalidade, uma ACK de bloco multi-TID compreende um TID, a seguir um bitmap, a seguir outro TID, a seguir outro bitmap e assim por diante. Surge uma dificuldade pelo fato de que os pacotes dentro de um agregado não estão necessariamente em ordem serial (isto é, devido a retransmissões). Assim sendo, para um dado TID a ACK de bloco irá se iniciar com um número de seqüência inicial, que especifica o número de seqüência mais baixo recebido em tal agregado para tal TID. A seguir, o bitmap do TID é provido na forma de um deslocamento a partir do número de seqüência inicial. A seguir, serão detalhadas várias modalidades para a preparação de uma ACK de bloco multi-TID.
Em uma modalidade, a medida que os pacotes chegam, comparar cada número de seqüência e manter o mais baixo. O processo pode se iniciar gravando-se o primeiro número de seqüência recebido para cada TID. A seguir, a medida que cada pacote chega, comparar o número de seqüência gravado para o TID com o do novo pacote e manter o mais baixo. Ao final do agregado, se terá o número de seqüência inicial mais baixo para cada TID. Após encontrado o número de seqüência mais baixo representado, subtrair tal número de seqüência do número de seqüência de cada pacote para o qual se responde (os quais podem ser gravados a medida que eles chegam) para encontrar o deslocamento do pacote dentro do bitmap. 0 número de seqüência inicial mais baixo é o número de seqüência inicial para o TID.
Na velocidade de linha, determinar se um pacote é válido pode ocorrer na velocidade de linha e simplesmente gravar cada bit para ACK ou NAK, juntamente com os números de seqüência absolutos. Ao final do agregado, passar por toda a série de números de seqüência de pacotes gravados, usar o valor subtraído como o deslocamento ou Índice para o bitmap e colocar a ACK ou NAK gravada no bitmap.
Em uma modalidade alternativa, armazenar o bitmap relativo ao número de seqüência mais baixo recebido atualmente. A seguir, pode ser efetuado um deslocamento à esquerda ou direita (dependendo da ordem de armazenamento) para atualizar a localização. Como exemplo, enquanto se armazena o bitmap, caso o número de seqüência de um pacote que chega seja mais alto do que o número de seqüência mais baixo atual, simplesmente marcar o bit de confirmação no local apropriado (determinado pela diferença entre o número de seqüência mais baixo recebido e o número de seqüência recebido no momento. Caso o número de seqüência que chega seja mais baixo do que o número de seqüência mais baixo previamente recebido, então deslocar o bitmap (e colocar a nova ACK ou NAK no ponto mais baixo). O deslocamento pode ser determinado como a diferença entre o número de seqüência antigo (isto é, o número de seqüência inicial mais baixo previamente recebido) e o novo número de seqüência inicial (isto é, o número do pacote recebido corrente, que será o novo mais baixo) . Em contraste com a primeira modalidade acima descrita, em que foi efetuada a passagem através dos números de seqüência gravados, nesta modalidade é necessário apenas gravar o bitmap e o número de seqüência inicial mais baixo. Nenhum dos outros números de seqüência no bitmap necessita ficar retido.
As descrições de modalidades acima se aplicam à confirmação de bloco de estado parcial imediata. Para estendê- las para o estado completo, simplesmente recuperar o histórico armazenado para cada fluxo primeiro e a seguir adicionar ao mesmo. Qualquer das modalidades pode ser implementada para um caso de TID único e pode ser repetida para cada TID para suportar multi-TID.
U-APSD NÃO PROGRAMADO
As modalidades exemplares aqui descritas são também bem adequadas para adaptação para prover transporte não programado com economia de energia automática (UAPSD). A UAPSD é uma técnica usada para economizar energia. Existem muitas variações, incluindo técnicas programadas e não programadas. A Figura 47 apresenta uma modalidade exemplar de um método 4700 para efetuar o transporte não programado com economia de energia automática. Em 4710, em um típico esquema UAPSD, um terminal de usuário "acorda" de forma autônoma. Em 4720, o terminal de usuário envia um pacote acionador para o ponto de acesso. Em 4730, o ponto de acesso determina a ID de fluxo a partir do pacote recebido. No bloco de decisão 4740, caso haja pacotes aguardando a transmissão para o terminal de usuário associado à ID de fluxo, passar para 4750. Caso contrário, passar para 4790, onde um indicador de "enviar mais" é desativado, indicando que não há mais pacotes para transmissão (por exemplo, o bit de "final de período de serviço" - EOSP).
Em 4795, o terminal de usuário pode voltar a "dormir" e o processo pode parar. No bloco de decisão 4740, caso existam pacotes para transmissão para o terminal de usuário, passar para 4750.
Em 4750, enviar um ou mais pacotes a partir da cache de arranjos de nós TX imediatamente. Como exemplo, uma cachede arranjos de nós TX 1810, tal como acima descrito na Figura 18, pode ser acessado. Usando-se as técnicas ilustradas na Figura 18, um transmissor pode responder imediatamente ao terminal de usuário acordado. Isto evita ter de empregar uma técnica alternativa para manter o terminal de usuário acordado, tal como o envio de um pacote sem dados. Isto evita desperdício de amplitude de banda, bem como de energia, dado que o terminal de usuário não necessita permanecer acordado por mais tempo do que o necessário. Dado que os pacotes estão enfileirados e prontamente acessíveis, como foi acima descrito, é provável que, pelo uso desta técnica, uma resposta ao terminal de usuário possa ser efetuada incluindo dados.
Note-se que, em alguns sistemas exemplares, tais como um típico sistema de voz através de protocolo Internet (VOIP), somente um único pacote ou dois podem ser necessários para dar suporte às comunicações de voz. Dessa forma, um terminal de usuário, empregando UAPSD pode acordar de uma forma não programada, recuperar rapidamente o pacote ou dois com relativamente pouco retardo e retornar ao sono para economizar energia.
No bloco de decisão 47 60, caso haja pacotes para enviar além daqueles incluídos no pacote de resposta enviado em 4750, passar a 4770. Em 4770 acionar um indicador de "enviar mais", o qual pode ser incluído em um pacote transmitido para o terminal de usuário. Tal indicação de "enviar mais" irá indicar para o terminal de usuário que ele deve permanecer acordado para receber pacotes adicionais. Em 4780, recuperar nós adicionais e transmitir pacotes adicionais associados, tal como acima descrito. Voltar a 47 60 para determinar se existem pacotes adicionais a enviar. Uma vez que todos os pacotes designados para tal terminal de usuário sejam transmitidos, então, tal como acima descrito, em 4790, o "enviar mais" é desativado e, em 4795, o terminal de usuário pode voltar a dormir.
Dessa forma, na modalidade exemplar de UAPSD acima descrita, podem ser transmitidos até quatro pacotes para qualquer terminal de usuário imediatamente, desde que eles estejam disponíveis na cache de arranjos de nós. Estes quatro pacotes podem ser enviados prontamente e, caso mais devam segui-los, pode ser acionado um indicador. Subseqüentemente, após SIFs, ACK de bloco e similares, pacotes adicionais estarão prontos para transmissão. Neste exemplo, é mantida uma variável na tabela de estado de fluxo TX (por exemplo, 1030) para indicar a um ponto de acesso se um terminal de usuário está acordado ou dormindo. Esta modalidade descreve o uso de armazenamento em cache tal como ilustrado no transmissor apresentado na Figura 18 (caches de arranjos de nós 1810). Note-se que quantidades alternativas de armazenamento em cache podem ser usadas, ou particionadas de forma diferente, caso seja desejado maior armazenamento para fluxos específicos (isto é, repartição para permitir mais do que 4 pacotes na resposta).
ECONOMIA DE ENERGIA DE MÚLTIPLOS GRUPAMENTOS (PSMP)
A economia de energia de múltiplos grupamentos (PSMP) é outra área em que o esquema de armazenamento em cache acima descrito propicia benefícios. Existem duas variedades de PSMP: programada e não programada.
A PSMP não programada (UPSMP) é similar à APSD não programada. Quando uma estação acorda, ela usa procedimentos EDCA para enviar uma mensagem acionadora, a qual pode ser uma mensagem QoS_data ou QoS_null para a classe de acesso que foi configurada como habilitada por acionador (através de mensagens de estabelecimento) . Ao receber tal pacote, o ponto de acesso envia pacotes armazenados para tal estação, os quais ficam vantajosamente armazenados na cache de arranjos de nós 1810. No último pacote, o ponto de acesso ajusta EOSP para 1 para indicar que não existem mais pacotes. Após receber tal pacote, a estação volta a dormir. Quando uma estação é configurada para ser habilitada por UPSMP para uma classe de acesso específica, o fluxo correspondente é indicado como sendo habilitado por UPSMP na tabela de mapeamento de fluxo TA/TID (por exemplo, 1030) Além disso, é também mantida uma variável de estado indicando se o fluxo está no modo de sono ou ativo na tabela de mapeamento de fluxo TA/TID.
Dessa forma, as modalidades acima são bem adequadas para suportar UPSMP. Em uma modalidade exemplar, podem ser mantidas uma primeira variável indicando se um fluxo é um fluxo PSMP e uma segunda variável indicando se uma estação específica está acordada ou dormindo, sendo adicionadas a outras variáveis tal como acima descrito. Após um receptor de dados (ou acionador), o ponto de acesso checa se o acionador é um fluxo UPSMP legítimo (de acordo com a primeira variável) e ajusta a segunda variável de "dormindo" para "acordada". O ponto de acesso envia pacotes armazenados para tal STA, os quais estão prontamente disponíveis, a seguir manda a estação dormir e ajusta a segunda variável de volta para "dormindo". 0 bit de acordar pode também ser usado caso exista TXOP remanescente. Em tal caso, o bit de acordar é checado e a TXOP somente é usada para uma STA quando ela estiver acordada. 0 ponto de acesso tem a autoridade para manter uma estação acordada para efetuar transmissões e assim por diante. As variáveis podem ser adicionadas à tabela de estado de arranjo TX 1830.
Na PSMP programada (SPSMP), é desenvolvido um gabarito e a seguir é publicado um programa de enlace descendente e enlace descendente (por exemplo, o firmware em um ponto de acesso poderia efetuar tal função, bem como qualquer outro dispositivo). Os dispositivos de comunicação sem fio dentro da WLAN podem usar o mesmo gabarito até que uma nova chamada seja adicionada ou uma chamada terminar. A seguir, pode ser criado um novo gabarito.
Em uma modalidade, o ponto de acesso está no controle da PSMP programada. Um método pode ser efetuado como se segue: (1) o próprio ponto de acesso envia um "pronto para enviar" (CTS) para limpar o meio. 0 CTS ajusta uma duração NAV igual às oportunidades de transmissão a jusante e a montante; (2) o ponto de acesso envia o quadro PSMP, que detalha o programa do enlace descendente e enlace descendente (por estação, com precisão de microssegundos); (3) a transmissão de enlace descendente se inicia; (4) a transmissão de enlace descendente se segue a transmissão de enlace descendente; (5) tal formato é altamente programado e o ponto de acesso evita ultrapassar o ponto final programado, para remover qualquer "jitter"; isto pode ser conseguido restringindo-se o acesso ao meio próximo ao final da duração NAV. É importante evitar o jitter para que os terminais de usuário não acordem para checar seu estado, percam suas mensagens devido a um deslocamento introduzido por jitter e voltem a dormir, perdendo suas oportunidades de transmissão. Em uma modalidade exemplar, a estrutura de dados usada para gerar o programa será mantida em uma estrutura de dados ping pong, tal como acima descrito. A estrutura de dados compreende o gabarito usado para o programa de enlace descendente e enlace descendente usado para PSMP programada. O programa corrente é mantido em uma metade da estrutura de dados ping pong. Este pode ser transmitido para as estações na WLAN. O ponto de acesso pode então efetuar mudanças no gabarito na outra metade da estrutura de dados ping pong. Um seletor pode ser empregado para se alternar entre o primeiro gabarito e o segundo gabarito. O ponto de acesso fica livre para trabalhar sobre qualquer dos gabaritos que não esteja ativo, sem interferir com o gabarito ativo. Tal técnica é análoga ao uso dos arranjos de modo 1842, ou das tabelas de fluxo ocultas 1092 e 1096.
MODALIDADE ALTERNATIVA: CAPACIDADES DE TRANSMISSÃO ALTA E BAIXA BIFURCADAS
Tal como foi acima descrito com referência à Figura 10a, várias funções, tais como a fragmentação, podem não ser necessárias para o processamento de pacotes de alta velocidade, enquanto o suporte para outros tipos de pacotes ou pacotes 802.11 legados pode ainda ser desejado. A Figura 48 ilustra uma modalidade alternativa implementado mais de um processador MAC. Um processador MAC de alta velocidade, tal como o processador H2W 530 detalhado e o MAC inferior 540 (implementado em um processador MAC tal como o 240 acima descrito), pode ser implementado (talvez com funcionalidade simplificada) para processamento de alta velocidade eficiente, enquanto um processador MAC alternativo 4810 é implementado em paralelo para processamento de outros tipos de pacotes (ou pacotes legados, tais como vários tipos de pacotes 802.11, por exemplo).
Em uma modalidade exemplar, um processador MAC de capacidade de transmissão mais baixa 4810 é incorporado no processador 210 (e pode também incluir outros componentes, tais como componentes implementados para processamento de pacotes legados, caso desejado). 0 processador 210, na modalidade exemplar, tem poder suficiente para processar os pacotes de baixa capacidade de transmissão e legados, permitindo que componentes de capacidade de transmissão mais alta, tais como o processador H2W 530, sejam projetados para dar suporte eficiente a pacotes de alta capacidade de transmissão. Outras modalidades podem incluir processadores MAC adicionais, tal como descrito mais adiante.
Neste exemplo, dado que os pacotes 802.11η não suportarão a fragmentação, as modalidades acima descritas podem ser simplificadas pela remoção do suporte à fragmentação do hardware e sua implementação em firmware. Várias simplificações exemplares são notadas acima. Tendo-se o firmware processando todos os pacotes legados permite a remoção do suporte à fragmentação, simplifica os motores de transmissão e recepção e simplifica o gerenciamento de nós e blocos (dado que o limite de fragmentação pode ser diferente dos tamanhos de blocos) . Os técnicos na área poderão facilmente adaptar as modalidades aqui descritas para inclusão ou omissão de vários blocos de processamento, dependendo de quais recursos/caracteristicas sejam suportados.
Os técnicos na área notarão prontamente as compensações entre a implementação de uma modalidade incluindo um único processador capaz de processar todas as funções de vários tipos de pacotes e outra modalidade compreendendo dois ou mais processadores MAC, cada um deles capaz de prover qualquer subconjunto de funcionalidades. Naturalmente, pode também ser implementado um único processador MAC capaz de processar pacotes demandando um único conjunto de funcionalidades.
A bifurcação de alta e baixa capacidades de transmissão constitui apenas um exemplo de partição de funcionalidades entre múltiplos processadores MAC. De um modo geral, qualquer conjunto de funções pode ser implementado em diferentes processadores MAC. Como exemplo, pode ser desejável processar dois tipos de pacotes de mesma velocidade alta (ou qualquer velocidade) em processadores separados quando as demandas de processamento para os diferentes tipos de pacotes não compartilharem similaridades suficientes para obter eficiência pelo compartilhamento de componentes, ou caso as considerações de projeto de circuito sejam suficientemente diferentes entre projetos para suportar vários tipos de pacotes.
A Figura 49 apresenta uma modalidade exemplar de um dispositivo de comunicação sem fio 4 900 (por exemplo, um ponto de acesso 104 ou terminal de usuário 106) incluindo dois processadores MAC, incluindo um primeiro processador MAC tal como acima descrito e um segundo processador MAC incorporado no microprocessador. Tal exemplo constitui um exemplo mais detalhado similar à modalidade generalizada da Figura 48.
Os técnicos na área poderão facilmente adaptar a modalidade apresentada na Figura 5 acima à modalidade alternativa apresentada na Figura 49. Neste exemplo, os pacotes de entrada e saida chegam em, e partem de, uma interface externa no barramento 4980. As interfaces externas exemplares incluem a SDIO I/F 582, PCI I/F 584, uma interface USB, ou qualquer outro tipo de interface. A interface pode incluir circuitos para arbitrar e/ou multiplexar entre uma ou mais interfaces. Os pacotes que chegam são processados pelo bloco de entrada 4 910 e armazenados na memória através da interface de memória 4 920, usando quaisquer das técnicas de memória e entrada acima descritas. A interface de memória 4920 pode incluir, por exemplo, o árbitro de memória 552 e/ou 556, o multiplexador 554, a interface SRAM 558, a interface SDRAM 562, ou vários outros componentes. Os técnicos na área poderão adaptar também outras interfaces de memória.
Em contraste com a modalidade da Figura 5, certos tipos de pacotes são processados no processador (por exemplo, o processador 210) . Neste exemplo, os pacotes de entrada que devem ser formatados pelo processador são transportados a partir da interface de memória 4920 para o processador através do barramento de processador 520 (vários outros componentes podem também estar ligados ao barramento de processador 520, exemplos dos quais são mostrados na Figura 5). Pode ser implementada uma interface de processador entre a interface de memória 4920 e o barramento 520. Neste exemplo, são implementados um ou mais FIFO 4 950 de memória de processador (qualquer outra interface para transporte dos pacotes recebidos. Isto permite que os pacotes (bem como estruturas de dados tais como nós, blocos, etc.) sejam armazenados para uso pelo processador 210. Os pacotes de baixa capacidade de transmissão recebidos são também processados pelo processador 210 e podem ser transferidos a partir da interface de memória 4920 para o barramento de processador 520 através de um FIFO de memória de processador 4950.
Em uma modalidade alternativa, os FIFO de memória de processador podem ser substituídos por uma conexão direta à memória de processador. Como exemplo, DMA pode ser usado para colocar pacotes de baixa velocidade na memória para processamento pelo processador 210. Em uma modalidade, a interface de memória 4 920 pode gravar pacotes de baixa velocidade diretamente na memória de processador 4950 (não um FIFO) sem armazenar o pacote na RAM de pacotes de alta velocidade.
Neste exemplo, os pacotes podem também ser depositados na memória (através da interface de memória 4920) pelo processador 210. Como exemplo, o processador pode redirecionar um pacote recebido para fora através da WLAN sem enviar o pacote através da interface externa. Note-se que todas as modalidades aqui descritas podem ser adaptadas para redirecionar pacotes recebidos para transmissão. Os pacotes levados ao barramento 520 podem ser formatados usando-se quaisquer técnicas acima descritas. Na modalidade exemplar, pacotes 802.11b, g ou e são direcionados para o processador para formatação (incluindo qualquer fragmentação que possa ser apropriada). Outros tipos de pacotes podem também ser adequados para formação pelo processador. Como exemplo, a 802.11η especifica uma unidade de dados de serviço MAC agregada (AMSDU) que é também adequadamente formatada pelo processador. Podem ser implementadas várias técnicas para redirecionamento. Neste exemplo, quando um pacote é recebido para formatação pelo processador, o pacote é armazenado na memória e uma interrupção é dada ao processador para iniciar a formatação para transmissão (os detalhes não são mostrados).
Os pacotes formatados de baixa capacidade de transmissão ou legados, após o processamento pelo processador 210, podem ser armazenados para transmissão no FIFO de transmissão WLAN de processador 4 960. Pode ser provida realimentação ao FIFO de transmissão WLAN de processador 4960, tal como um sinal de "pronto", sinais para prover controle de velocidade e similares. Tais pacotes podem também ser levados ao mecanismo TX 1880 para enf ileiramento e possível processamento adicional (por exemplo, com o mecanismo de protocolo legado 2210) e finalmente para transmissão através da PHY 2 60. Eles podem ser levados diretamente ao mecanismo TX 1880, ou podem ser incorporados a filas 1850 (tal como descrito na Figura 18), gerenciados pelo controle de arranjo 1840, etc. Note-se que na modalidade exemplar o módulo de agregação 2610 pode ser bypassado para pacotes legados e A- MSDU.
Os pacotes de alta velocidade, tais como as unidades de dados de protocolo MAC agregado 802.11η (A-MPDU), são também recebidos pelo bloco de entrada 4 910 e armazenados na memória através da interface de memória 4 920. Em tal caso, os pacotes são transmitidos pelo mecanismo TX 1880 usando-se as técnicas acima descritas (por exemplo, com referência à Figura 18) . Neste exemplo, o processamento em hardware dos pacotes de alta velocidade permite transmissão em alta velocidade, enquanto os pacotes de menor velocidade, tais como os pacotes legados acima descritos, podem ser portados no firmware do processador 210, sem criar um gargalo de capacidade de transmissão. Isto permite que os detalhes legados de vários pacotes legados sejam deixados de fora do hardware de processamento MAC de alta velocidade, permitindo que ele seja projetado mais eficientemente, provendo ainda suporte ao legado através do processador MAC implementado em firmware. Os pacotes de alta velocidade são finalmente transmitidos através da WLAN pela PHY. Um cabeçalho pode ser usado para indicar a transmissão fisica de alta velocidade ou baixa velocidade.
Os pacotes recebidos a partir da WLAN são levados a um mecanismo RX acoplado 4 970 e finalmente armazenados na memória através da interface de memória 4 920. Os pacotes de baixa velocidade podem ser passados ao processador 210 para processamento (isto é, pacotes legados, ou pacotes usando recursos não suportados no processador MAC do hardware, tais como fragmentação, etc.). Em uma modalidade alternativa, os pacotes podem ir direto para o processador 210 (não sendo armazenados na memória) , ou podem ser conectados a qualquer outro processador MAC alternativo (note-se que pode ser implementado um número zero de processadores MAC, para suportar qualquer número de conjunto de recursos de pacotes). Neste exemplo, os pacotes de baixa capacidade de transmissão ou legados são levados ao processador a partir da interface de memória 4920, através de um FIFO de memória de processador 4 950, tal como acima descrito. Eles podem ou não ser parcialmente processados pelo mecanismo de protocolos legados 2210. note-se que a unidade de desagregação 2802 pode ser bypassada para unidades de dados não agregadas (tais como pacotes legados).
0 mecanismo RX 4970 (bem como outros componentes, tais como o mecanismo legado 2210, caso implementado, por exemplo) processa pacotes desagregados tal como acima descrito no núcleo MAC inferior 540. Neste exemplo, os pacotes de alta velocidade são os únicos pacotes processados no processador MAC de hardware, porém em modalidades alternativas qualquer tipo de pacotes pode ser processado.
O mecanismo RX 4 970 pode decodificar qualquer dos tipos de pacotes usando o mecanismo legado 2210, tal como acima descrito. Note-se que os pacotes recebidos podem ser marcados por uma interface MAC/PHY (por exemplo, a interface MAC/PHY 545, acima descrita) para indicar o tipo de pacote. Como exemplo, os pacotes podem ser identificados como 802.11a, b, e, g, n, etc. Os pacotes podem ser identificados como A- MSDU ou A-MPDU. De um modo geral, qualquer marcador pode ser aplicado para indicar a rota de um pacote para um dentre quaisquer de vários processadores MAC.
Na modalidade exemplar acima descrita, note-se que a agregação e desagregação se aplicam somente a pacotes de alta velocidade (a agregação é opcional para pacotes de alta velocidade, como acima descrito). Os pacotes de baixa velocidade passam pelos blocos de agregação e desagregação. A fragmentação é suportada apenas para pacotes legados ou de baixa velocidade, não para pacotes de alta velocidade. O processador (isto é, 210) é um primeiro processador MAC e o segundo processador MAC compreende vários componentes acima descritos (isto é, na Figura 5) . Como foi acima descrito, estes são apenas exemplos. De um modo geral, qualquer conjunto de recursos pode ser suportado em um primeiro processador MAC e o mesmo conjunto, ou um conjunto diferente, de recursos em um segundo processador MAC (cada um dos quais, ou nenhum dos quais, pode ser efetuado usando-se um processador tal como o processador 210).
O bloco de saida 4930 pode receber e realizar repasse pacotes de alta velocidade provenientes do armazenador de pacotes através da interface de memória 4920. O bloco de saida 4930 pode também arbitrar entre pacotes de baixa velocidade provenientes do FIFO de saida de processador 4940 e pacotes de alta velocidade. Na modalidade exemplar, o processador leva pacotes processados prontos para repasse em ordem de prioridade para o FIFO de saida de processador 4940. Em uma modalidade alternativa, uma memória alternativa poderia substituir o FIFO de saida de processador 4940 para permitir que o bloco de saida 4930 selecione pacotes para priorização dentro do bloco de saida, caso desejado. Em outra modalidade alternativa, o FIFO de saida de processador 4940 poderia ser eliminado e o bloco de saida 4 930 poderia realizar repasse pacotes de baixa velocidade através de acesso direto para a memória do processador (por exemplo, com DMA ou outro método de acesso). Em mais outra modalidade, a saida do FIFO de saida de processador 4 94 0 pode possuir múltiplas filas de prioridade a partir das quais o bloco de saida 4 930 poderia selecionar a implementação de um esquema de prioridade.
Os técnicos na área notarão várias configurações alternativas dos ensinamentos incorporados no dispositivo de comunicação sem fio 4 900.
A Figura 50 ilustra aspectos de armazenamento em armazenador e enfileiramento de pacotes de múltiplos fluxos. A Figura 50 compreende um dispositivo para armazenar 5010 em uma primeira estrutura de dados 5040 em um armazenador de pacotes 5030 o comprimento de um primeiro pacote 5050, o número de seqüência do pacote 5060 e um segundo local de armazenador de pacotes 5070 de uma segunda estrutura de dados 5080 no armazenador de pacotes, e mecanismos para armazenar dados 5020 provenientes do primeiro pacote na segunda estrutura de dados 5080 identificado pela segunda localização de armazenador de pacotes 5070 armazenada.
A Figura 51 ilustra aspectos de armazenamento em armazenador e enfileiramento de pacotes de múltiplos fluxos. A Figura 51 compreende uma primeira estrutura de dados 5140 associada a um pacote; e uma ou mais segundas estruturas de dados 5180 compreendendo dados provenientes do pacote associado; e apresenta a primeira estrutura de dados compreendendo um campo de comprimento 5150 que indica o comprimento de pacote associado; um campo de número de seqüência 5160 indicando o número de seqüência do pacote associado; e um campo de ponteiro de segunda estrutura de dados 5170, indicando a localização em um armazenador de pacotes de uma dentre as segundas estruturas de dados 5180; e apresenta mecanismos para armazenar 5120 o pacote em uma ou mais das segundas estruturas de dados 5180.
A Figura 52 ilustra aspectos de gerenciamento de memória para controle de acesso a midia de alta velocidade. A Figura 52 compreende mecanismos 5290 para selecionar um primeiro ou segundo modo; mecanismos 5210 para configurar uma primeira memória 5230 em um primeiro modo para armazenamento um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação; mecanismos para configurar 5260 a primeira memória em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao respectivo fluxo de comunicação; mecanismos para configurar 5220 uma segunda memória 5240 no primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação; mecanismos para configurar 5270 a segunda memória no segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenado na localização indicada pelo ponteiro associado ao respectivo fluxo de comunicação; e mecanismos para configurar 5280 uma interface de memória 5250 que opera com uma terceira memória no segundo modo para operar para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação.
A Figura 53 ilustra aspectos de controle de acesso a midia de múltiplos fluxos. A Figura 53 compreende mecanismos para ajustar 5320 um índice identificador de fluxo para um dentre uma pluralidade de valores de índice identificador de fluxo, cada índice identificador de fluxo estando associado a um respectivo fluxo dentre uma pluralidade de fluxos; mecanismos para armazenar 5310 uma pluralidade de conjuntos de parâmetros 5340 em uma primeira memória 5330 em uma pluralidade de primeiras localizações de memória, cada conjunto de parâmetros compreendendo um ou mais parâmetros para um respectivo fluxo dentre uma pluralidade de fluxos, a primeira localização de memória para cada conjunto de parâmetros identificado por um respectivo valor de índice identificador de fluxo tal como ajustado no índice identificador de fluxo; e mecanismos para recuperar 5350 um ou mais dos parâmetros de um dentre a pluralidade de conjuntos de parâmetros a partir da primeira memória de acordo com o índice identificador de fluxo.
A Figura 54 ilustra aspectos de controle de acesso a mídia de múltiplos fluxos. A Figura 54 compreende mecanismos para armazenar 5410 uma pluralidade de conjuntos de parâmetros 5420 em uma primeira memória 5430, cada conjunto de parâmetros estando armazenado em uma respectiva localização dentre uma pluralidade de localizações de conjuntos de parâmetros, cada conjunto de parâmetros compreendendo um ou mais parâmetros para um respectivo fluxo dentre uma pluralidade de fluxos, cada um dentre a pluralidade de fluxos sendo identificado por um dentre uma pluralidade de identificadores de fluxo; mecanismos para armazenar 5440 uma pluralidade de ponteiros de conjuntos de parâmetros 5450 em uma segunda memória, cada ponteiro de conjunto de parâmetros identificando uma dentre a pluralidade de localizações de conjuntos de parâmetros na primeira memória, cada ponteiro de conjunto de parâmetros estando associado a um dentre a pluralidade de fluxos; mecanismos para recuperar 5470 um ponteiro de conjunto de parâmetros a partir da segunda memória de acordo com um identificador de fluxo; mecanismos para recuperar 5480 um ou mais parâmetros a partir da primeira memória por acesso ao conjunto de parâmetros ajustado de acordo com o ponteiro de conjunto de parâmetros recuperado.
A Figura 55 ilustra aspectos de multiplexação de múltiplos fluxos para controle de acesso a mídia de alta velocidade. A Figura 55 compreende mecanismos para armazenar 5510 um ou mais elementos de pacotes 5520 associados a um dentre uma pluralidade de fluxos em cada uma dentre uma segunda pluralidade de filas 5530; mecanismos para selecionar 5540 um elemento dentre a segunda pluralidade de filas; e mecanismos para armazenar 5550 o elemento selecionado 5560 em uma dentre uma primeira pluralidade de filas 5570, cada fila associada a um dentre uma pluralidade de canais.
A Figura 56 ilustra aspectos de agregação em um sistema de comunicação de alta velocidade. A Figura 56 compreende mecanismos para armazenar 5610 uma ou mais primeiras estruturas de dados 5620 em uma fila 5630, em que cada primeira strutura de dados compreende um campo de comprimento 5635 de um respectivo pacote associado e um ponteiro 5640 para uma segunda estrutura de dados 5650, a segunda estrutura de dados compreendendo pelo menos uma parte dos respectivos dados de pacote associados; mecanismos para determinar uma quantidade de dados de transmissão 5660; mecanismos para recuperar 5670 um ou mais valores de comprimento a partir do campo de comprimento de uma ou mais dentre as primeiras estruturas de dados na fila; mecanismos para selecionar 5680 um conjunto de uma ou mais primeiras estruturas de dados de tal forma que a soma dos valores de comprimento recuperados a partir do conjunto de primeiras estruturas de dados seja menor ou igual à quantidade de dados de transmissão; e mecanismos para agregar pacotes 5690 em uma unidade de dados de protocolo agregado, cada pacote agregado sendo identificado pelo ponteiro para a segunda estrutura de dados no conjunto selecionado de primeiras estruturas de dados. A Figura 57 ilustra aspectos de caches ocultos que servem como filas em serviço e filas em espera. A Figura 57 compreende mecanismos para selecionar 5720 uma primeira fila 5710 como uma fila em serviço; mecanismos para selecionar 5740 uma segunda fila 5730 como uma fila em espera; mecanismos para programar um primeiro fluxo 5750; mecanismos para programar um segundo fluxo 5760; mecanismos para armazenar um ou mais elementos 5770 associados ao primeiro fluxo programado na fila em serviço; mecanismos para processamento 5780 da fila em serviço para transmissão durante uma primeira oportunidade de transmissão; e mecanismos para armazenar 5790 um ou mais elementos associados ao segundo fluxo programado na fila em espera, em que o armazenamento pode ocorrer simultaneamente com o processamento da fila em serviço.
A Figura 58 ilustra aspectos de políticas de entrada. A Figura 58 compreende mecanismos para receber 5810 um identificador de fluxo associado a um pacote para um dentre uma pluralidade de fluxos; mecanismos para recuperar 5820 um ou mais parâmetros associados ao identificador de fluxo; mecanismos para admitir 5830 o pacote quando uma condição predeterminada for atendida de acordo com os um ou mais parâmetros recuperados associados ao identificador de fluxo; e mecanismos para rejeitar 5840 o pacote quando a condição predeterminada não for atendida de acordo com os um ou mais parâmetros recuperados associados ao identificador de fluxo.
A Figura 59 ilustra aspectos de políticas de entrada. A Figura 59 compreende mecanismos para receber 5910 um identificador de fluxo associado a um pacote para um dentre uma pluralidade de fluxos; mecanismos para recuperar uma ocupação de armazenador de pacotes corrente 5920; mecanismos para recuperar uma ocupação máxima de armazenador 5930 associada ao identificador de fluxo; mecanismos para recuperar pacotes acumulados 5940 associados ao identificador de fluxo; mecanismos para recuperar o máximo de pacotes 5950 associado ao identificador de fluxo; e mecanismos para admitir o pacote 5960 quando a ocupação corrente do armazenador de pacotes for menor do que a ocupação máxima de armazenador associada ao identificador de fluxo ou os pacotes acumulados associados ao identificador de fluxo for menor que o máximo de pacotes associados ao identificador de fluxo.
A Figura 60 ilustra aspectos de políticas de entrada. A Figura 60 compreende um armazenador de pacotes 6010; mecanismos para recuperar 6020 um ou mais parâmetros para cada um dentre uma pluralidade de fluxos; e mecanismos para armazenar condicionalmente 6030 um pacote associado a um dentre a pluralidade de fluxos no armazenador de pacotes de acordo com os um ou mais parâmetros recuperados.
A Figura 61 ilustra aspectos de controle de acesso a mídia para resposta de baixa latencia. A Figura 61 compreende mecanismos para armazenar 6110 uma ou mais primeiras estruturas de dados 6120 em uma fila 6130, em que cada primeira estrutura de dados compreende um campo de comprimento 6135 de um respectivo pacote associado e um ponteiro 6140 para uma segunda estrutura de dados 6150, a segunda estrutura de dados compreendendo pelo menos uma parte dos respectivos dados de pacote associados; mecanismos 6160 para recuperar um ou mais valores de comprimento a partir do campo de comprimento de um ou mais das primeiras estruturas de dados na fila em resposta a uma oportunidade de transmissão requerendo uma transmissão de resposta dentro de um intervalo de tempo predeterminado; e mecanismos 6170 para formar uma unidade de dados de protocolo de resposta dentro do intervalo de tempo predeterminado, a unidade de dados de protocolo compreendendo um valor de comprimento de unidade de dados de protocolo determinado de acordo com o pelo menos um valor de comprimento dentro do intervalo de tempo predeterminado.
Os técnicos na área notarão que as informações e sinais podem ser representados usando-se; quaisquer dentre uma diversidade de diferentes tecnologias e técnicas. Como exemplo, os dados, instruções, comandos, informações, sinais, bits, símbolos e chips que possam ter sido mencionados por toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, campos ou partículas eletromagnéticas, campos ou partículas ópticas, ou quaisquer combinações de tais.
Os técnicos na área notarão também que os vários exemplos de blocos lógicos, módulos, circuitos e etapas de algoritmos descritos em conexão com as modalidades aqui descritas podem ser implementados na forma de hardware eletrônico, software de computadores, ou combinações de tais. Para ilustrar claramente tal intercambialidade de hardware e software, vários exemplos de componentes, blocos, módulos, circuitos e etapas foram acima descritos de um modo geral em termos de sua funcionalidade. Se tal funcionalidade é implementada na forma de um hardware ou software depende da aplicação e restrições de projeto específicas impostas ao sistema como um todo. Os técnicos na área podem implementar a funcionalidade descrita de diversas formas para cada aplicação específica, porém tais decisões de implementação não devem ser interpretadas como um afastamento do escopo da presente invenção.
Os vários exemplos de blocos lógicos, módulos e circuitos aqui descritos em conexão com as modalidades aqui apresentadas podem ser implementados ou efetivados por meio de um processador de uso geral, um processador de sinais digitais (DSP), um circuito integrado de aplicação específica (ASIC), arranjos de porta programáveis no campo (FPGA) ou outros dispositivos lógicos programáveis, portas individuais ou lógica de transistores, componentes de hardware individuais, ou quaisquer combinações de tais projetadas para efetuar as funções aqui descritas. Um processador de uso geral pode ser um microprocessador, porém como alternativa o processador pode ser qualquer processador, controlador, micro controlador, ou máquina de estado convencionais. Um processador pode também ser implementado na forma de uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo DSP, ou qualquer outra configuração similar.
As etapas de um método ou algoritmo descritos em conexão com as modalidades aqui apresentadas podem ser efetivadas diretamente em hardware, em um módulo de software executado por um processador, ou em uma 'combinação de ambos.
Um módulo de software pode residir em uma memória RAM, memória flash, memória ROM, memória EPROM, memória EEPROM, registradores, disco rígido, um disco removível, um CD-ROM, ou qualquer outra forma de meio de armazenamento conhecido pelos técnicos na área. Um exemplo de meio de armazenamento pode ser acoplado ao processador de tal forma que o processador possa ler informações provenientes do, e gravar informações no, meio de armazenamento. Como alternativa, o meio de armazenamento pode estar integrado ao processador. 0 processador e o meio de armazenamento podem residir em um ASIC. 0 ASIC pode residir em um terminal de usuário. Como alternativa, o processador e o meio de armazenamento podem residir na forma de componentes individuais em um terminal de usuário.
A descrição acima das modalidades preferidas é provida para permitir que os técnicos na área efetivem ou façam uso da presente invenção. As diferentes modificações dessas modalidades ficarão prontamente claras para os técnicos na área e os princípios genéricos aqui definidos podem ser aplicados a outras modalidades sem o uso das faculdades inventivas. Dessa forma, a presente invenção não deve ser limitada às modalidades aqui apresentadas, devendo receber o escopo mais amplo, consistente com os novos princípios e características aqui descritos.

Claims (9)

1. Equipamento para gerenciamento de memória, caracterizado pelo fato de que compreende: uma primeira memória, configurada em um primeiro modo para armazenar um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação e configurada em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao fluxo de comunicação respectivo; uma segunda memória, configurada no primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação e configurada no segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenados na localização indicada pelo ponteiro associado ao fluxo de comunicação respectivo; uma interface de memória operável com uma terceira memória, configurada no segundo modo para ser operativa para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação; e um processador selecionando um modo selecionado como o primeiro modo ou o segundo modo, configurando a primeira memória de acordo com o modo selecionado, configurando a segunda memória de acordo com o modo selecionado, e configurando a interface de memória de acordo com o modo selecionado.
2. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a segunda memória, quando configurada no primeiro modo, compreende um armazenador de pacote, o armazenador de pacote compreendendo: uma primeira estrutura de dados associada a um pacote; e uma segunda estrutura de dados compreendendo dados provenientes do pacote associado; e em que a primeira estrutura de dados compreende: um campo de comprimento indicando o comprimento do pacote associado; um campo de número de seqüência indicando o número de seqüência do pacote associado; e um campo de ponteiro da segunda estrutura de dados indicando a localização no armazenador de pacote da segunda estrutura de dados.
3. Equipamento, de acordo com a reivindicação 2, caracterizado pelo fato de que, adicionalmente, a interface de memória, quando configurada no segundo modo, é operável para armazenar pacotes em um armazenador de pacotes na terceira memória, a interface de memória para armazenar: uma primeira estrutura de dados associada a um pacote; e uma segunda estrutura de dados compreendendo dados provenientes do pacote associado; e em que a primeira estrutura de dados compreende: um campo de comprimento indicando o comprimento do pacote associado; um campo de número de seqüência indicando um número de seqüência indicando o número de seqüência do pacote associado; e um campo de ponteiro da segunda estrutura de dados indicando a localização do armazenador de pacotes da segunda estrutura de dados.
4. Dispositivo de comunicação sem fio para gerenciamento de memória caracterizado pelo fato de que compreende: um primeiro circuito integrado, compreendendo: uma primeira memória, configurada em um primeiro modo para armazenar um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação e configurada em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao fluxo de comunicação respectivo; uma segunda memória, configurada em um primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação e configurada em um segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenados na localização indicada pelo ponteiro associado ao fluxo de comunicação respectivo; uma interface de memória operável com uma terceira memória, configurada em um segundo modo sendo operativa para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação; e um processador selecionando um modo selecionado como o primeiro modo ou o segundo modo, configurando a primeira memória de acordo com o modo selecionado, configurando a segunda memória de acordo com o modo selecionado, e configurando a interface de memória de acordo com o modo selecionado;e um segundo circuito integrado compreendendo uma terceira memória armazenando pacotes para cada um dentre a pluralidade de fluxos de comunicação, acopladas à interface de memória do primeiro circuito integrado.
5. Dispositivo de comunicação sem fio para gerenciamento de memória caracterizado pelo fato de que compreende: uma primeira memória armazenando um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação; e uma segunda memória armazenando pacotes para cada um dentre a pluralidade de fluxos de comunicação, compreendendo: uma primeira estrutura de dados associada a um pacote; e uma segunda estrutura de dados compreendendo dados a partir do pacote associado; e em que a primeira estrutura de dados compreende: um campo de comprimento indicando o comprimento do pacote associado; um campo de número de seqüência indicando o número de seqüência do pacote associado; e um campo de ponteiro da segunda estrutura de dados indicando a localização na segunda memória da segunda estrutura de dados.
6. Dispositivo de comunicação sem fio, de acordo com a reivindicação 5, caracterizado pelo fato de que a primeira estrutura de dados compreende adicionalmente um seguinte primeiro campo de ponteiro de dados indicando a localização na segunda memória de uma segunda primeira estrutura de dados.
7. Dispositivo de comunicação sem fio, de acordo com a reivindicação 6, caracterizado pelo fato de que compreende adicionalmente uma fila de pacote de uma pluralidade de pacotes, a fila formada por uma lista interligada dentre uma pluralidade de primeiras estruturas de dados, cada primeira estrutura de dados associada a um dentre a pluralidade de pacotes, a ordem da fila determinada mediante interligação cada um dentre a pluralidade de primeiras estruturas de dados na lista interligada de acordo com o seguinte primeiro campo de ponteiro de dados de cada primeira estrutura de dados respectiva.
8. Midia legivel por computador incluindo instruções na mesma, car ac ter i ζ ado pelo fato de que as instruções compreendem: instruções para selecionar um primeiro ou segundo modo; instruções para configurar uma primeira memória em um primeiro modo para armazenar um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de comunicação; instruções para configurar a primeira memória em um segundo modo para armazenar um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao fluxo de comunicação respectivo; instruções para configurar uma segunda memória em um primeiro modo para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação; instruções para configurar a segunda memória em um segundo modo para armazenar uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenados na localização indicada pelo ponteiro associado ao fluxo de comunicação respectivo; e instruções para configurar uma interface de memória operável com uma terceira memória no segundo modo para ser operativa para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação.
9. Equipamento para gerenciamento de memória, caracterizado pelo fato de que compreende: mecanismos para armazenar em uma primeira memória, em um primeiro modo, um ou mais parâmetros para cada um dentre uma pluralidade de fluxos de dados e para armazenar, em um segundo modo, um ponteiro para cada um dentre a pluralidade de fluxos de comunicação, cada ponteiro indicando uma localização associada ao fluxo de comunicação respectivo; mecanismos para armazenar em uma segunda memória, no primeiro modo, pacotes para cada um dentre a pluralidade de fluxos de comunicação e no segundo modo, uma pluralidade de conjuntos de um ou mais parâmetros para cada um dentre a pluralidade de fluxos de comunicação, cada conjunto de um ou mais parâmetros armazenados na localização indicada pelo ponteiro associado ao fluxo de comunicação respectivo; mecanismos para uma interface de memória operável com um mecanismo para armazenar em uma terceira memória, no segundo modo, para armazenar pacotes para cada um dentre a pluralidade de fluxos de comunicação; e um mecanismo processador para selecionar um modo selecionado como o primeiro modo ou o segundo modo, configurar a primeira memória de acordo com o modo selecionado, configurar a segunda memória de acordo com o modo selecionado, e configurar a interface de memória de acordo com o modo selecionado.
BRPI0722378-1A 2006-03-31 2007-03-30 gerencimento de memória para controle de acesso à mìdia de alta velocidade BRPI0722378A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US78791506P 2006-03-31 2006-03-31

Publications (1)

Publication Number Publication Date
BRPI0722378A2 true BRPI0722378A2 (pt) 2012-05-22

Family

ID=38324003

Family Applications (2)

Application Number Title Priority Date Filing Date
BRPI0722378-1A BRPI0722378A2 (pt) 2006-03-31 2007-03-30 gerencimento de memória para controle de acesso à mìdia de alta velocidade
BRPI0709704-2A BRPI0709704A2 (pt) 2006-03-31 2007-03-30 gerenciamento de memària para controle de acesso À mÍdia de alta velocidade

Family Applications After (1)

Application Number Title Priority Date Filing Date
BRPI0709704-2A BRPI0709704A2 (pt) 2006-03-31 2007-03-30 gerenciamento de memària para controle de acesso À mÍdia de alta velocidade

Country Status (11)

Country Link
US (2) US8139593B2 (pt)
EP (2) EP2326049A1 (pt)
JP (2) JP2009532954A (pt)
KR (1) KR101027356B1 (pt)
CN (2) CN102347901A (pt)
AT (1) ATE543304T1 (pt)
BR (2) BRPI0722378A2 (pt)
CA (1) CA2644139A1 (pt)
RU (2) RU2491737C2 (pt)
SG (1) SG163590A1 (pt)
WO (1) WO2007115199A2 (pt)

Families Citing this family (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7724740B1 (en) * 2002-08-27 2010-05-25 3Com Corporation Computer system and network interface supporting class of service queues
US8630168B2 (en) * 2003-06-23 2014-01-14 Intel Corporation Adaptive use of a transmit opportunity
US7774374B1 (en) * 2004-03-02 2010-08-10 Qlogic Corporation Switching systems and methods using wildcard searching
US7904777B2 (en) * 2006-01-24 2011-03-08 Samsung Electronics Co., Ltd. Method and system for generating block acknowledgements in wireless communications
CN101379769B (zh) * 2006-02-01 2011-07-13 Lg电子株式会社 用于在无线局域网络系统中传输信息的方法
JP2009532954A (ja) 2006-03-31 2009-09-10 クゥアルコム・インコーポレイテッド 高速メディアアクセス制御に関するメモリ管理
GB0609426D0 (en) * 2006-05-12 2006-06-21 Univ Edinburgh A low power media access control protocol
KR101245856B1 (ko) * 2006-09-29 2013-03-20 삼성전자주식회사 이종 이상의 무선 통신 규격을 지원하는 멀티 무선 메쉬네트워크 시스템 및 그 제어방법
US8238278B2 (en) 2007-01-08 2012-08-07 Hellosoft, Inc. Hardware-based beacon processing
US9760146B2 (en) * 2007-01-08 2017-09-12 Imagination Technologies Limited Conditional activation and deactivation of a microprocessor
US8243638B2 (en) 2007-01-08 2012-08-14 Hellosoft, Inc. Passive listening in wireless communication
US7675911B2 (en) * 2007-03-01 2010-03-09 Samsung Electronics Co., Ltd. Method and system for acknowledgements in wireless communications
KR100930518B1 (ko) * 2007-03-21 2009-12-09 삼성전자주식회사 광대역 무선통신 시스템에서 다중 에프에이를 사용하는단말의 아이피 주소 획득 장치 및 방법
KR100965128B1 (ko) * 2007-03-21 2010-06-23 삼성전자주식회사 광대역 무선통신 시스템에서 초기 접속 수행 장치 및 방법
EP2140613A1 (en) * 2007-03-26 2010-01-06 Telefonaktiebolaget LM Ericsson (PUBL) Method and apparatus for performance monitoring in a communications network
JP2009049704A (ja) * 2007-08-20 2009-03-05 Toshiba Corp 無線通信装置
US7936753B1 (en) 2007-11-30 2011-05-03 Qlogic, Corporation Method and system for reliable multicast
GB2454597B (en) * 2008-01-03 2012-01-18 Ibm A method for checking the reliability of a memory for a receiving data packet in a data array within a data receiving logic circuit
US8555373B2 (en) * 2008-02-14 2013-10-08 Rockwell Automation Technologies, Inc. Network security module for Ethernet-receiving industrial control devices
US7908455B2 (en) * 2008-02-27 2011-03-15 Microchip Technology Incorporated Low overhead memory management system and method
US8473707B2 (en) * 2008-03-27 2013-06-25 Open Invention Network, Llc Method for achieving sequential I/O performance from a random workload
US8321651B2 (en) * 2008-04-02 2012-11-27 Qualcomm Incorporated System and method for memory allocation in embedded or wireless communication systems
US7948991B1 (en) * 2008-05-09 2011-05-24 Cisco Technology, Inc. Broadcast and multicast transmissions with acknowledgement scheduling
JP5091761B2 (ja) * 2008-05-13 2012-12-05 株式会社東芝 無線通信装置
US7957273B2 (en) * 2008-06-06 2011-06-07 Redpine Signals, Inc. Packet re-transmission controller for block acknowledgement in a communications system
JP4609547B2 (ja) * 2008-08-14 2011-01-12 ソニー株式会社 無線通信装置、通信システム、および通信制御方法、並びにプログラム
US7978607B1 (en) * 2008-08-29 2011-07-12 Brocade Communications Systems, Inc. Source-based congestion detection and control
US20100106874A1 (en) * 2008-10-28 2010-04-29 Charles Dominguez Packet Filter Optimization For Network Interfaces
US20100131679A1 (en) * 2008-11-24 2010-05-27 Jian-Bang Lin Apparatus for performing a downlink or uplink processing in a wireless communication system to maintain the efficiency of system bandwidth, and associated methods
TWI378688B (en) * 2009-02-10 2012-12-01 Ralink Technology Corp Method and apparatus for preloading packet headers and system using the same
US7826458B2 (en) * 2009-03-05 2010-11-02 Juniper Networks, Inc. Tracking fragmented data flows
US8547941B2 (en) * 2009-04-16 2013-10-01 Qualcomm Incorporated Apparatus and method for improving WLAN spectrum efficiency and reducing interference by flow control
JP5316208B2 (ja) * 2009-05-08 2013-10-16 ソニー株式会社 通信装置及び通信方法、コンピューター・プログラム、並びに通信システム
BRPI1013120A2 (pt) * 2009-06-13 2016-04-05 Nokia Corp uso de política de confirmação em bloco para redes sem fio.
EP2471193B1 (en) * 2009-08-26 2019-04-17 LG Electronics Inc. Method and apparatus for multiple frame transmission for supporting mu-mimo
US8576762B2 (en) * 2009-09-08 2013-11-05 Apple Inc. Power management of a radio data transceiver
JP5418097B2 (ja) * 2009-09-14 2014-02-19 株式会社リコー 情報処理装置、画像形成装置、動作モード切替方法
EP2493128A1 (en) * 2009-10-19 2012-08-29 Nec Corporation Communication system, flow control apparatus, flow table updating method and program
EP2498411B1 (en) 2009-11-04 2016-04-20 Electronics and Telecommunications Research Institute Methods for generating, transmitting, and receiving a data frame in a wireless communication system
CN101784082A (zh) * 2009-12-22 2010-07-21 中兴通讯股份有限公司 无线局域网内增强服务质量的方法及装置
CA2788320A1 (en) * 2010-01-29 2011-08-04 Elster Solutions Llc Mesh infrastructure utilizing alternative communication paths
US8855102B2 (en) * 2010-01-29 2014-10-07 Elster Solutions, Llc Wireless communications providing interoperability between devices capable of communicating at different data rates
US8493992B2 (en) * 2010-02-04 2013-07-23 Texas Instruments Incorporated Interrelated WiFi and USB protocols and other application framework processes, circuits and systems
KR101765923B1 (ko) * 2010-02-12 2017-08-07 한국전자통신연구원 무선 통신 시스템에서의 패킷 송/수신 방법 및 장치
AU2011224959B2 (en) 2010-03-11 2014-08-28 Electronics And Telecommunications Research Institute Method and apparatus for transceiving data in a MIMO system
KR101791985B1 (ko) 2010-03-12 2017-10-31 한국전자통신연구원 무선 통신 시스템에서의 패킷 송/수신 방법 및 장치
CN102209021A (zh) * 2010-03-31 2011-10-05 西门子公司 一种包聚合传输的方法和装置
US9170892B2 (en) 2010-04-19 2015-10-27 Microsoft Technology Licensing, Llc Server failure recovery
US9813529B2 (en) * 2011-04-28 2017-11-07 Microsoft Technology Licensing, Llc Effective circuits in packet-switched networks
US9454441B2 (en) 2010-04-19 2016-09-27 Microsoft Technology Licensing, Llc Data layout for recovery and durability
US8996611B2 (en) 2011-01-31 2015-03-31 Microsoft Technology Licensing, Llc Parallel serialization of request processing
US8881134B2 (en) * 2010-04-29 2014-11-04 International Business Machines Corporation Updating elements in data storage facility using predefined state machine over extended time period
US20110276747A1 (en) * 2010-05-07 2011-11-10 Qualcomm Incorporated Software management with hardware traversal of fragmented llr memory
US9055011B2 (en) * 2010-08-31 2015-06-09 Intel Corporation Methods and apparatus for linked-list circular buffer management
US9124460B2 (en) * 2010-08-31 2015-09-01 Qualcomm, Incorporated Rules for multiplexing data of different access categories in multi user MIMO wireless systems
US8855088B2 (en) * 2010-12-22 2014-10-07 Intel Corporation Reverse protocol for low latency wireless applications
CN102843220B (zh) * 2011-06-21 2014-12-24 华为技术有限公司 错误恢复方法、接入点设备、站点设备及其系统
US8473641B2 (en) * 2011-06-30 2013-06-25 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US9088520B2 (en) * 2011-09-15 2015-07-21 Ixia Network impairment unit for concurrent delay and packet queue impairments
TW201324168A (zh) * 2011-12-05 2013-06-16 Asix Electronics Corp 高效率傳輸機制之通用序列匯流排裝置
US9345045B2 (en) * 2012-04-24 2016-05-17 Intel Corporation Methods and arrangements for adaptive delay control
DK2891151T3 (en) 2012-08-31 2016-12-12 ERICSSON TELEFON AB L M (publ) Method and device for detection of voice activity
US9344974B2 (en) 2012-10-12 2016-05-17 Intel Corporation Methods and arrangements to coordinate communications of different types of devices on a wireless network
DE102012220784A1 (de) * 2012-11-14 2014-05-15 Robert Bosch Gmbh Verfahren zum Übertragen von Datenpaketen zwischen zwei Kommunikationsmodulen und Kommunikationsmodul zum Senden von Datenpaketen sowie Kommunikationsmodul zum Empfangen von Datenpaketen
CN102984089B (zh) * 2012-11-19 2018-09-28 中兴通讯股份有限公司 流量管理调度方法及装置
EP2768185A1 (en) 2013-02-13 2014-08-20 British Telecommunications public limited company Signalling congestion
US20140269690A1 (en) * 2013-03-13 2014-09-18 Qualcomm Incorporated Network element with distributed flow tables
US9306866B2 (en) * 2013-03-15 2016-04-05 Aruba Networks, Inc. Apparatus and method aggregation at one or more layers
US9510286B2 (en) * 2013-03-27 2016-11-29 Qualcomm Incorporated Systems and methods for synchronization within a neighborhood aware network
US9525739B2 (en) 2013-05-09 2016-12-20 Mitsubishi Electric Corporation FA network LSI and communication device
WO2014204276A1 (ko) * 2013-06-20 2014-12-24 삼성전자 주식회사 무선 랜에서 서비스 품질을 제어하는 방법 및 장치
JP2015012580A (ja) * 2013-07-02 2015-01-19 キヤノン株式会社 受信装置、受信方法及びプログラム
KR101476748B1 (ko) * 2013-08-07 2014-12-26 삼성에스디에스 주식회사 메시지 송수신 장치 및 방법
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US9860174B2 (en) 2013-08-28 2018-01-02 Qualcomm Incorporated Methods and apparatus for acknowledgment of multi-user uplink wireless transmissions
MX359123B (es) * 2013-09-05 2018-09-14 Intel Corp Técnicas para comunicación inalámbrica entre un dispositivo de cómputo de terminal y un dispositivo de cómputo utilizable.
US9681418B2 (en) 2013-09-27 2017-06-13 Apple Inc. Wireless multicast communication
US20150092540A1 (en) * 2013-09-30 2015-04-02 Broadcom Corporation System and Method for Traffic Offload
US9264374B2 (en) 2013-10-23 2016-02-16 Qualcomm Incorporated Media playout for VOIP applications
US9294413B2 (en) 2013-10-23 2016-03-22 Qualcomm Incorporated Media playout for VOIP applications
US9455915B2 (en) * 2013-12-12 2016-09-27 Broadcom Corporation Hierarchical congestion control with congested flow identification hardware
US9374201B2 (en) * 2013-12-17 2016-06-21 Qualcomm Incorporated Packet number determination mechanism
US9355262B2 (en) * 2013-12-27 2016-05-31 Intel Corporation Modifying memory permissions in a secure processing environment
US9898398B2 (en) 2013-12-30 2018-02-20 Microsoft Technology Licensing, Llc Re-use of invalidated data in buffers
US9723054B2 (en) 2013-12-30 2017-08-01 Microsoft Technology Licensing, Llc Hierarchical organization for scale-out cluster
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
US9798631B2 (en) 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
US10142884B2 (en) 2014-02-21 2018-11-27 Samsung Electronics Co., Ltd. System and method for processing of data in a wireless communication system
JP2015186233A (ja) * 2014-03-26 2015-10-22 富士通株式会社 パケット処理装置、及びパケット処理方法
US9521576B2 (en) * 2014-04-28 2016-12-13 Intel IP Corporation System and method of performance measurements for wireless local area network access points
US9699669B2 (en) * 2014-04-28 2017-07-04 Intel IP Corporation Storing a value of a counter for a wireless local area network
CN105099961B (zh) * 2014-05-12 2020-01-17 中兴通讯股份有限公司 一种快速同步介质访问控制地址表的方法和装置
EP3148251B1 (en) * 2014-06-17 2018-11-07 Huawei Technologies Co. Ltd. Data transmission method and device
US10045367B2 (en) * 2014-10-03 2018-08-07 Qualcomm Incorporated Uplink data fragmentation for multi-user networks
US9936516B2 (en) * 2014-10-08 2018-04-03 Qualcomm Incorporated Transmission coordination for collocated radios
US10015048B2 (en) 2014-12-27 2018-07-03 Intel Corporation Programmable protocol parser for NIC classification and queue assignments
KR102012261B1 (ko) * 2015-03-03 2019-10-21 한국전자통신연구원 메모리 할당의 부분 해제를 지원하는 메모리 관리 장치 및 방법
CN107534686B (zh) * 2015-05-08 2021-01-15 索尼公司 发送控制设备,发送控制方法,接收控制设备和接收控制方法
KR102316655B1 (ko) * 2015-06-02 2021-10-26 현대모비스 주식회사 차량 멀티미디어 시스템의 오디오 출력 장치 및 그 제어방법
US10104003B1 (en) * 2015-06-18 2018-10-16 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for packet processing
US10568025B2 (en) * 2015-07-13 2020-02-18 Advanced Micro Devices, Inc. Power management in wireless communications devices
US9825862B2 (en) 2015-08-26 2017-11-21 Barefoot Networks, Inc. Packet header field extraction
CN113890688A (zh) * 2015-10-09 2022-01-04 交互数字专利控股公司 针对高效应答传输的方法及装置
KR102208261B1 (ko) 2015-12-01 2021-01-27 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 예측적 확인응답 피드백 메커니즘
US9912774B2 (en) 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
US10178161B2 (en) * 2016-05-11 2019-01-08 Microsoft Technology Licensing, Llc Digital signal processing over data streams
US10504608B2 (en) * 2016-06-30 2019-12-10 Intel IP Corporation Linked-list interlineation of data
US10083127B2 (en) * 2016-08-22 2018-09-25 HGST Netherlands B.V. Self-ordering buffer
US10735331B1 (en) 2016-12-09 2020-08-04 Barefoot Networks, Inc. Buffer space availability for different packet classes
US10708189B1 (en) 2016-12-09 2020-07-07 Barefoot Networks, Inc. Priority-based flow control
US11245572B1 (en) 2017-01-31 2022-02-08 Barefoot Networks, Inc. Messaging between remote controller and forwarding element
US10642532B2 (en) 2017-02-28 2020-05-05 International Business Machines Corporation Storing data sequentially in zones in a dispersed storage network
CN106878318B (zh) * 2017-03-03 2020-01-07 上海唯链信息科技有限公司 一种区块链实时轮询云端系统
GB2560540B (en) * 2017-03-14 2019-05-01 Canon Kk Queues management for multi-user and single user edca transmission mode in wireless networks
US10848429B1 (en) 2017-03-21 2020-11-24 Barefoot Networks, Inc. Queue scheduler control via packet data
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10694006B1 (en) 2017-04-23 2020-06-23 Barefoot Networks, Inc. Generation of descriptive data for packet fields
US20180367585A1 (en) * 2017-06-19 2018-12-20 Wangsu Science & Technology Co., Ltd. Method, apparatus, and system for live streaming
US11503141B1 (en) 2017-07-23 2022-11-15 Barefoot Networks, Inc. Stateful processing unit with min/max capability
US10594630B1 (en) 2017-09-28 2020-03-17 Barefoot Networks, Inc. Expansion of packet data within processing pipeline
CN108462549B (zh) * 2017-11-22 2019-07-09 上海欣诺通信技术股份有限公司 保护组叠加倒换方法、控制装置及光通信设备
KR101950957B1 (ko) 2017-12-27 2019-02-25 (주)다나티앤씨 광커넥터 계측기용 보호커버
US10642536B2 (en) * 2018-03-06 2020-05-05 Western Digital Technologies, Inc. Non-volatile storage system with host side command injection
US10820371B1 (en) * 2018-05-25 2020-10-27 Marvell Asia Pte, Ltd. Hardware data transport in wireless data transceiver
CN108959500A (zh) * 2018-06-26 2018-12-07 郑州云海信息技术有限公司 一种对象存储方法、装置、设备及计算机可读存储介质
US11216432B2 (en) 2018-07-06 2022-01-04 Cfph, Llc Index data structures and graphical user interface
US10887221B2 (en) 2018-08-28 2021-01-05 Mediatek Inc. Methods of synchronization mode of flow table and apparatus using the same
US10701001B2 (en) * 2018-08-29 2020-06-30 REALTEK SINGAPORE Pte. Ltd. Wireless communication circuit with scheduling circuit in MAC layer
TWI694684B (zh) * 2018-08-29 2020-05-21 新加坡商瑞昱新加坡有限公司 具有位於媒體存取控制層電路的排程電路的無線通信電路
US10817413B2 (en) 2018-12-11 2020-10-27 Nxp Usa, Inc. Hardware-based memory management for system-on-chip (SoC) integrated circuits that identify blocks of continuous available tokens needed to store data
US11502932B2 (en) 2019-05-17 2022-11-15 Keysight Technologies, Inc. Indirect testing using impairment rules
CN110417514B (zh) * 2019-07-22 2022-02-01 北京地平线机器人技术研发有限公司 数据发送方法和装置、数据接收方法和装置
US20230353510A1 (en) * 2020-01-31 2023-11-02 Cyberstorm Pte. Ltd. Method of reducing latency in communication of data packets
US11314320B2 (en) * 2020-04-28 2022-04-26 Facebook Technologies, Llc Interface between host processor and wireless processor for artificial reality
US11405240B2 (en) * 2020-08-11 2022-08-02 University Of Manitoba Method for massive unsourced random access
TWI769111B (zh) * 2021-11-17 2022-06-21 瑞昱半導體股份有限公司 基本儲存單元管理電路以及基本儲存單元管理方法
CN115174488A (zh) * 2022-04-22 2022-10-11 西安交通大学 一种基于效用值的在线分组调度方法及系统及设备
CN115225592B (zh) * 2022-06-01 2024-01-12 裕太微(上海)电子有限公司 一种直接存储器访问数据传输方法及系统

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US745313A (en) * 1902-02-24 1903-12-01 John Walton Ventilator.
JPH04156030A (ja) 1990-10-19 1992-05-28 Nec Corp データの連結によるデータ転送の高速化方式
JP3112958B2 (ja) 1991-01-21 2000-11-27 株式会社東芝 受信バッファ管理方式
US5465331A (en) 1992-12-23 1995-11-07 International Business Machines Corporation Apparatus having three separated and decentralized processors for concurrently and independently processing packets in a communication network
WO1995014269A1 (en) * 1993-11-19 1995-05-26 The Trustees Of The University Of Pennsylvania A high-performance host interface for networks carrying connectionless traffic
DE69402955T2 (de) 1994-02-08 1997-08-14 Belle Gate Invest Bv Datenauswechselsystem mit tragbaren Datenverarbeitungseinheiten
SE515265C2 (sv) 1994-10-17 2001-07-09 Ericsson Telefon Ab L M System och förfarande för behandling av signaldata samt kommunikationssystem omfattande ett signaldatabehandlingssystem
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
DE19643774C1 (de) * 1996-10-23 1998-04-30 Siemens Ag Verfahren und Telekommunikationsschnittstelle zum Übertragen kontinuierlicher und/oder diskontinuierlicher Datenströme in einem hybriden Telekommunikationssystem, insbesondere einem "ISDN-DECT-spezifischen RLL/WLL"-System
US6493347B2 (en) 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US5954839A (en) 1997-01-14 1999-09-21 Samsung Electronics Co., Ltd. Error protection method for multimedia data
US6026093A (en) * 1997-10-02 2000-02-15 Sun Microsystems, Inc. Mechanism for dispatching data units via a telecommunications network
US6473425B1 (en) 1997-10-02 2002-10-29 Sun Microsystems, Inc. Mechanism for dispatching packets via a telecommunications network
US6426943B1 (en) * 1998-04-10 2002-07-30 Top Layer Networks, Inc. Application-level data communication switching system and process for automatic detection of and quality of service adjustment for bulk data transfers
KR100280642B1 (ko) 1998-11-18 2001-05-02 윤종용 이더넷 컨트롤러의 메모리 관리 장치 및 그 제어방법
US6606301B1 (en) * 1999-03-01 2003-08-12 Sun Microsystems, Inc. Method and apparatus for early random discard of packets
US7457313B2 (en) 2000-09-25 2008-11-25 General Instrument Corporation Hierarchical prioritized round robin (HPRR) scheduling
US6832261B1 (en) * 2001-02-04 2004-12-14 Cisco Technology, Inc. Method and apparatus for distributed resequencing and reassembly of subdivided packets
US6959002B2 (en) 2001-05-01 2005-10-25 Integrated Device Technology, Inc. Traffic manager for network switch port
KR100434465B1 (ko) 2001-05-14 2004-06-05 삼성전자주식회사 기지국 제어기와 기지국간의 패킷 데이터 전송 제어 방법및 장치
WO2003021443A1 (en) * 2001-08-31 2003-03-13 Adaptec, Inc. Systems and methods for implementing host-based security in a computer network
JP3600568B2 (ja) * 2001-09-28 2004-12-15 株式会社東芝 無線lanアクセスポイント
FR2832233B1 (fr) 2001-11-13 2004-01-02 France Telecom Reconfiguration de composants programmables dans un appareil electronique
JP2003174475A (ja) 2001-12-06 2003-06-20 Nippon Telegr & Teleph Corp <Ntt> 信号処理装置間の通信方法及びパケット交換システム
US6754795B2 (en) 2001-12-21 2004-06-22 Agere Systems Inc. Methods and apparatus for forming linked list queue using chunk-based structure
US7079486B2 (en) * 2002-02-13 2006-07-18 Agere Systems Inc. Adaptive threshold based jitter buffer management for packetized data
GB2396087B (en) 2002-12-06 2006-03-29 Qualcomm A method of and apparatus for adaptive control of data buffering in a data transmitter
US7310337B2 (en) 2002-12-31 2007-12-18 Intel Corporation Packet header alignment
JP3865748B2 (ja) 2003-01-20 2007-01-10 富士通株式会社 ネットワークスイッチ装置およびネットワークスイッチ方法
US20040246956A1 (en) * 2003-06-06 2004-12-09 Meng David Qiang Parallel packet receiving, routing and forwarding
US7701915B2 (en) 2003-06-27 2010-04-20 Nokia Corporation Method in a communication system, a communication system and a communication device
US7580355B2 (en) * 2003-08-25 2009-08-25 Integrated Device Technology, Inc. Method of performing weighted round-robin queue scheduling using a dynamic link list and structure for implementing same
US7707320B2 (en) 2003-09-05 2010-04-27 Qualcomm Incorporated Communication buffer manager and method therefor
WO2005034434A1 (ja) * 2003-10-03 2005-04-14 Sharp Kabushiki Kaisha 通信装置、その装置の動作モード起動方法、通信方法、通信システム、プログラム、および、そのプログラムを記録した記録媒体
US20050114473A1 (en) 2003-10-30 2005-05-26 Ravid Guy FPGA boot-up over a network
US20050129020A1 (en) * 2003-12-11 2005-06-16 Stephen Doyle Method and system for providing data communications over a multi-link channel
JP2005348084A (ja) 2004-06-03 2005-12-15 Hitachi Ltd ストリーム送信装置、ストリーム受信装置、ストリーム送受信装置およびネットワークシステム制御方法
TW200708125A (en) * 2005-08-08 2007-02-16 Giga Byte Tech Co Ltd Communication apparatus
JP2009532954A (ja) 2006-03-31 2009-09-10 クゥアルコム・インコーポレイテッド 高速メディアアクセス制御に関するメモリ管理

Also Published As

Publication number Publication date
RU2010112982A (ru) 2011-10-10
CA2644139A1 (en) 2007-11-10
KR20090006157A (ko) 2009-01-14
JP5313310B2 (ja) 2013-10-09
KR101027356B1 (ko) 2011-04-11
JP2009532954A (ja) 2009-09-10
BRPI0709704A2 (pt) 2011-05-10
RU2491737C2 (ru) 2013-08-27
ATE543304T1 (de) 2012-02-15
CN102347901A (zh) 2012-02-08
US20120236789A1 (en) 2012-09-20
US8594112B2 (en) 2013-11-26
EP2002617A2 (en) 2008-12-17
US8139593B2 (en) 2012-03-20
RU2008143200A (ru) 2010-05-10
EP2326049A1 (en) 2011-05-25
EP2002617B1 (en) 2012-01-25
CN101411134A (zh) 2009-04-15
SG163590A1 (en) 2010-08-30
US20070230493A1 (en) 2007-10-04
WO2007115199A2 (en) 2007-10-11
RU2419226C2 (ru) 2011-05-20
JP2012054932A (ja) 2012-03-15
WO2007115199A3 (en) 2007-12-06
CN101411134B (zh) 2013-08-21

Similar Documents

Publication Publication Date Title
BRPI0722378A2 (pt) gerencimento de memória para controle de acesso à mìdia de alta velocidade
Fragouli et al. Controlled multimedia wireless link sharing via enhanced class-based queuing with channel-state-dependent packet scheduling
US8717885B2 (en) Link aggregation methods and devices
JP4047836B2 (ja) 通信装置、通信システム、通信方法、および通信制御プログラム
JP4847541B2 (ja) データパケットトラフィック輻輳を解決する方法及び装置
KR20140100529A (ko) 하이브리드 네트워킹 경로 선택 및 로드 밴런싱
BRPI0407568B1 (pt) Método e equipamento para controlar taxa de dados de um link reverso em um sistema de comunicação
US20150003466A1 (en) Enhanced Link Aggregation in a Communications System
WO2013126859A2 (en) Opportunistic radio access technology selection and aggregation
US10439940B2 (en) Latency correction between transport layer host and deterministic interface circuit
CN110944358B (zh) 数据传输方法和设备
US11513985B2 (en) RoCE over wireless
JP4314294B2 (ja) 通信装置、通信システム、通信方法、および通信制御プログラム
TW202312702A (zh) 用於在無線網路中接收訊務的方法
Garroppo et al. The wireless hierarchical token bucket: a channel aware scheduler for 802.11 networks
WO2021026740A1 (zh) 流量均衡方法、网络设备及电子设备
US7450512B1 (en) Recirculating retransmission queuing system and method
WO2008085635A1 (en) Communication device and methods thereof
CN116261170A (zh) 一种通信方法、装置及系统

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE AS ANUIDADES EM DEBITO

B15K Others concerning applications: alteration of classification

Ipc: H04L 12/879 (2013.01), H04L 12/801 (2013.01), H04L

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO PUBLICADO NA RPI 2464 DE 27/03/2018.