BRPI0709704A2 - gerenciamento de memària para controle de acesso À mÍdia de alta velocidade - Google Patents

gerenciamento de memària para controle de acesso À mÍdia de alta velocidade Download PDF

Info

Publication number
BRPI0709704A2
BRPI0709704A2 BRPI0709704-2A BRPI0709704A BRPI0709704A2 BR PI0709704 A2 BRPI0709704 A2 BR PI0709704A2 BR PI0709704 A BRPI0709704 A BR PI0709704A BR PI0709704 A2 BRPI0709704 A2 BR PI0709704A2
Authority
BR
Brazil
Prior art keywords
packet
memory
packets
pointer
store
Prior art date
Application number
BRPI0709704-2A
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 BRPI0709704A2 publication Critical patent/BRPI0709704A2/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 seqúê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 flexível é 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 MID1ADE ALTA VELOCIDADE"
Campo da Invenção
A presente invenção está de um modo geralrelacionada a rádio comunicações e a controle de acesso amídia de alta velocidade.
Descrição da Tfinnica Anterior
Sistemas de comunicação sem fio estão amplamenteimplantados para prover vários tipos de comunicação, taiscomo de voz e dados. Um tipico sistema, ou rede, de dadossem fio prove a múltiplos usuários o acesso a um ou maisrecursos compartilhados. Um sistema pode usar umadiversidade de técnicas de múltiplo acesso, tais como a demuitiplexação por divisão de freqüência (FDM)multiplexação por divisão de tempo (TDM), multiplexação pordivisão de código (CDM), multiplexação por divisão defrequencia ortogonal (OFDM) e outras.
Os exemplos de redes sem fio incluem os sistemasde dados de base celular. 0 que se segue constitui váriosexemplos de tais: (1) a TIA/EIA/IS-95B, Mobile Station -Base Station Compatibility Standard for Dual Mode WidebandSpread Spectrum Cellular System (a norma IS-95) (2) anorma proposta por um consórcio denominado "3rd GenerationPartnership Project" (3GPP) e incorporada em um conjunto dedocumentos incluindo os documentos N^ 3G TS 25 211 3G TS25.212, 3G TS 25.213 e 3G TS 25.214 (a norma W-CDMA)', (3) anorma proposta por um consórcio denominado "3rd GenerationPartnership Project 2" (3GPP2) e incorporada na "TR-45 5Physical Layer Standard for CDMA 2000 Spread SpectrumSystems" (a norma IS-2000) e (4) o sistema alta taxa dedados (HDR) que está de acordo com a norma TIA/EIA/IS-856(a norma IS-856.
Outros exemplos de sistemas sem fio incluem asredes de área local sem fio (WLANs) , tais como as dasnormas IEEE 802.11 (isto é, 802.11a, b ou g) . Podem serobtidas melhorias em tais redes através da implementação deuma WLAN de múltiplas-entradas e múltiplas-saidas (MIMO),incluindo técnicas de modulação por multiplexação pordivisão de freqüência ortogonal (OFDM). A IEEE 802.Ile foiintroduzida para reduzir as deficiências de qualidade deserviço (QoS) das normas 802.11 anteriores.
Estão sendo agora introduzidas especificações802.11 que definem redes sem fio de alta velocidade eprotocolos MAC para operação com as mesmas. As normas802.11 anteriores diziam respeito principalmente aaplicativos do tipo de transferência de dados, navegação ecorreio eletrônico. A 802.11(n) se destina a servir aaplicativos de distribuição multimídia que demandam elevadacapacidade de transmissão, robustez de desempenho equalidade de serviço. Acompanha tais demandas a necessidadede implementações e técnicas eficientes para o provimentode qualidade de serviço e capacidade operacional em altavelocidade. Existe, portanto, uma demanda na área por umeficiente controle de acesso a mídia de alta velocidade.
US6,832,261 descreve um método e um aparelho paradistribuir re-sequênciamento e remontagem de pacotessubdivididos.
W096/12235 descreve um sistema e um método paraprocessamento de sinal de dados e um sistema de comunicaçãocompreendendo um sistema de processamento de dados desinal.
W095/142 69 descreve uma interface de altodesempenho de hospedeiro para redes portando tráfego semconexão.
GB 2 429 080 descreve um adaptador sem fiocombinato de inicialização (boot) dual.
W003/043303 descreve reconfiguração de componenteprogrmáveis em um equipamento eletrônico.W02005/043275 descreve uma inicialização de FPGAsobre uma rede.
US 2003/016686 descerve um gerenciador de tráfegopara porta de comutação de rede.
US 2005/147034 descreve um método de realizarprogramação de lista de rodízio (round Robin) ponderadautilizando uma lista interligada dinâmica e estrutura paraimplantar a mesma.
US 2005/175014 descreve uma programação derodízion (round Robin) (HPRR) priorizada hierarquicamente.
Resumo da Invenção
Aspectos aqui descritos como mostrado nasreivindicações em anexo atendem à demanda na área por umeficiente controle de acesso a mídia de alta velocidade.
De acordo com um aspecto, é descrito umequipamento que inclui uma primeira estrutura de dadosassociada a um pacote, uma segunda estrutura de dadoscompreendendo dados provenientes do pacote associado, e emque a primeira estrutura de dados compreende um campo decomprimento indicando o comprimento do pacote associado, umcampo de número de seqüência indicando o número deseqüência do pacote associado, um campo de ponteiro desegunda estrutura de dados indicando a localização, em umarmazenador (buffer) de pacotes da segunda estrutura dedados.
De acordo com outro aspecto, é descrita umaprimeira estrutura de dados que pode ser operada com umasegunda estrutura de dados compreendendo dados provenientesde um pacote associado e que inclui um campo de comprimentoindicando o comprimento do pacote associado, e um campo deponteiro armazenando uma localização na memória da segundaestrutura de dados.
De acordo com outro aspecto, é descrito um métodopara armazenar, em uma primeira estrutura de dados em umarmazenador de pacotes, o comprimento de um primeiropacote, o número de seqüência do pacote e uma segundalocalização no armazenador de pacotes de uma segundaestrutura de dados no armazenador de pacotes, e armazenardados provenientes do primeiro pacote na segunda estruturade dados identificada pela localização no armazenador dosegundo pacote armazenado.
De acordo com outro aspecto, é descrito um métodopara armazenar uma pluralidade de pacotes em um armazenadorde pacotes, cada pacote sendo armazenado com uma primeiraestrutura de dados associada e uma ou mais segundasestruturas de dados associadas, as uma ou mais segundasestruturas de dados sendo formadas em uma listainterligada, em que cada primeira estrutura de dadoscompreende um campo de comprimento indicando o comprimentodo pacote associado, um campo de número de seqüênciaindicando o número de seqüência do pacote associado, e umcampo de ponteiro de uma segunda estrutura de dadosindicando a localização em um armazenador de pacotes daprimeira dentre as uma ou mais segundas estruturas dedados, e em que cada segunda estrutura de dados compreendedados provenientes do pacote associado, e um campo deponteiro de próxima segunda estrutura de dados indicando apróxima segunda estrutura na respectiva lista interligada,caso alguma existir.
De acordo com outro aspecto, é descrito umequipamento que inclui dispositivos para armazenar, em umaprimeira estrutura de dados em um armazenador de pacotes, ocomprimento de um primeiro pacote, o número de seqüência dopacote e uma segunda localização no armazenador de pacotesde uma segunda estrutura de dados no armazenador depacotes, e dispositivos para armazenar dados provenientesdo primeiro pacote na segunda estrutura de dadosidentificada pela localização no armazenador do segundopacote armazenado.De acordo com outro aspecto, é descrito umequipamento que inclui uma primeira estrutura de dadosassociada a um pacote, e uma ou mais segundas estruturas dedados compreendendo dados provenientes do pacote associado;
e em que a primeira estrutura de dados compreende um campode comprimento que indica o comprimento do pacoteassociado, um campo de número de seqüência indicando onúmero de seqüência do pacote associado, e um campo deponteiro de segunda estrutura de dados indicando alocalização, em um armazenador de pacotes, de uma dentre assegundas estruturas de dados; e dispositivos para armazenaro pacote em uma ou mais das segundas estruturas de dados.
De acordo com outro aspecto, é descrito umequipamento que inclui uma primeira memória, configurada emum primeiro modo para armazenar um ou mais parâmetros paracada um dentre uma pluralidade de fluxos de comunicação; econfigurada em um segundo modo para armazenar um ponteiropara cada um dentre a pluralidade de fluxos de comunicação,cada ponteiro indicando uma localização associada aorespectivo fluxo de comunicação; uma segunda memória,configurada no primeiro modo para armazenar pacotes paracada um dentre a pluralidade de fluxos de comunicação, econfigurada no segundo modo para armazenar uma pluralidadede conjuntos de um ou mais parâmetros para cada um dentre apluralidade de fluxos de comunicação, cada conjunto de umou mais parâmetros armazenado na localização indicada peloponteiro associado ao respectivo fluxo de comunicação; umainterface de memória que opera com uma terceira memória,configurada no segundo modo para operar para oarmazenamento de pacotes para cada um dentre a pluralidadede fluxos de comunicação; e um processador que seleciona ummodo selecionado como o primeiro modo ou o segundo modo,configurando a primeira memória de acordo com o modoselecionado, configurando a segunda memória de acordo com omodo selecionado, e configurando a interface de memória deacordo com o modo selecionado.
De acordo com outro aspecto, é descrito umdispositivo de comunicação sem fio, compreendendo umprimeiro circuito integrado, compreendendo uma primeiramemória, configurada em um primeiro modo para armazenar umou mais parâmetros para cada um dentre uma pluralidade defluxos de comunicação, e configurada em um segundo modopara armazenar um ponteiro para cada um dentre apluralidade de fluxos de comunicação, cada ponteiroindicando uma localização associada ao respectivo fluxo decomunicação; uma segunda memória, configurada no primeiromodo para armazenar pacotes para cada um dentre apluralidade de fluxos de comunicação, e configurada nosegundo modo para armazenar uma pluralidade de conjuntos deum ou mais parâmetros para cada um dentre a pluralidade defluxos de comunicação, cada conjunto de um ou maisparâmetros armazenado na localização indicada pelo ponteiroassociado ao respectivo fluxo de comunicação; uma interfacede memória que opera com uma terceira memória, configuradano segundo modo para operar para o armazenamento de pacotespara cada um dentre a pluralidade de fluxos de comunicação;e um processador que seleciona um modo selecionado como oprimeiro modo ou o segundo modo, configurando a primeiramemória de acordo com o modo selecionado, configurando asegunda memória de acordo com o modo selecionado, econfigurando a interface de memória de acordo com o modoselecionado; e um segundo circuito integrado compreendendouma terceira memória armazenando pacotes para cada umdentre a pluralidade de fluxos de comunicação, acoplada àinterface de memória do primeiro circuito integrado.
De acordo com outro aspecto, é descrito umdispositivo de comunicação sem fio que inclui uma primeiramemória armazenando um ou mais parâmetros para cada umdentre uma pluralidade de fluxos de comunicação; e umasegunda memória armazenando pacotes para cada um dentre apluralidade de fluxos de comunicação, compreendendo umaprimeira estrutura de dados associada a um pacote; e umasegunda estrutura de dados compreendendo dados provenientesdo pacote associado; e em que a primeira estrutura de dadoscompreende um campo de comprimento indicando o comprimentodo pacote associado, um campo de número de seqüênciaindicando o número de seqüência do pacote associado, e umcampo de ponteiro de segunda estrutura de dados indicando alocalização na segunda memória da segunda estrutura dedados.
De acordo com outro aspecto, é descrito umdispositivo de comunicação sem fio que inclui uma primeiramemória armazenando um ponteiro para cada- um dentre umapluralidade de fluxos de comunicação, cada ponteiroindicando uma localização associada ao respectivo fluxo decomunicação; e uma segunda memória armazenando umapluralidade de conjuntos de um ou mais parâmetros para cadaum dentre a pluralidade de fluxos de comunicação, cadaconjunto de um ou mais parâmetros estando armazenado nalocalização indicada pelo ponteiro associado ao respectivofluxo de comunicação; e uma terceira memória armazenandopacotes para cada um dentre a pluralidade de fluxos decomunicação.
De acordo com outro aspecto, é descrito umequipamento que inclui dispositivos para selecionar umprimeiro ou segundo modos, dispositivos para configurar umaprimeira memória em um primeiro modo para armazenar um oumais parâmetros para cada um dentre uma pluralidade defluxos de comunicação, dispositivos para configurar aprimeira memória em um segundo modo para armazenar umponteiro para cada um dentre a pluralidade de fluxos decomunicação, cada ponteiro indicando uma localizaçãoassociada ao respectivo fluxo de comunicação, dispositivospara configurar uma segunda memória no primeiro modo paraarmazenar pacotes para cada um dentre a pluralidade defluxos de comunicação, dispositivos para configurar asegunda memória no segundo modo para armazenar umapluralidade de conjuntos de um ou mais parâmetros para cadaum dentre a pluralidade de fluxos de comunicação, cadaconjunto de um ou mais parâmetros armazenado na localizaçãoindicada pelo ponteiro associado ao respectivo fluxo decomunicação; e dispositivos para configurar uma interfacede memória que opera com uma terceira memória no segundomodo que opera para armazenar pacotes para cada um dentre apluralidade de fluxos de comunicação.
De acordo com outro aspecto, é descrita uma midiapara leitura por computador que opera para selecionar umprimeiro ou um segundo modos, configurar uma primeiramemória em um primeiro modo para armazenar um ou maisparâmetros para cada um dentre uma pluralidade de fluxos decomunicação, configurar a primeira memória em um segundomodo para armazenar um ponteiro para cada um dentre apluralidade de fluxos de comunicação, cada ponteiroindicando uma localização associada ao respectivo fluxo decomunicação, configurar uma segunda memória no primeiromodo para armazenar pacotes para cada um dentre apluralidade de fluxos de comunicação, configurar a segundamemória no segundo modo para armazenar uma pluralidade deconjuntos de um ou mais parâmetros para cada um dentre apluralidade de fluxos de comunicação, cada conjunto de umou mais parâmetros armazenado na localização indicada peloponteiro associado ao respectivo fluxo de comunicação, econfigurar uma interface de memória que opera uma terceiramemória no segundo modo para operar para o armazenamento depacotes para cada um dentre a pluralidade de fluxos decomunicação.
Breve Descrição das FigurasA Figura 1 é um diagrama de blocos geral dè umsistema de comunicação sem fio capaz de suportar váriosusuários.
A Figura 2 apresenta aspectos de um dispositivode comunicação sem fio, que podem ser configurados como umponto de acesso ou terminal de usuário.
A Figura 3 apresenta uma modalidade de umprocessador MAC configurado para um terminal de usuário.
A Figura 4 apresenta uma modalidade de umprocessador MAC configurado para um ponto de acesso.
A Figura 5 apresenta uma modalidade exemplar maisdetalhada de um dispositivo de comunicação sem fio.
A Figura 6 apresenta uma modalidade exemplar deum armazenador de pacotes.
A Figura 7 também ilustra um armazenador depacotes exemplar.
A Figura 8 apresenta componentes adicionais quepodem ser implementados no interior de um processador MAC.
A Figura 9 apresenta uma modalidade exemplar deum método para gravar pacotes em um armazenador de pacotese criar filas.
A Figura 10 ilustra uma modalidade exemplar de umhospedeiro ou hospedeiro para um subsistema de WLAN.
A Figura 11 apresenta uma modalidade exemplar doconteúdo de uma tabela de estado de fluxo TX.
A Figura 12 apresenta uma modalidade exemplar deum método para efetuar policiamento de entrada.
A Figura 13 apresenta uma modalidade exemplar deum método para policiamento de entrada.
A Figura 14 apresenta uma modalidade exemplar deum FIFO.
A Figura 15 ilustra um processo exemplar paradividir uma MSDU em um ou mais fragmentos.A Figura 16 apresenta uma configuração conceituaide um árbitro em conjunto com uma ou mais gravações dememória.
A Figura 17 apresenta uma modalidade exemplar deuma parte de um dispositivo de comunicação sem fioconfigurado para suportar uma pluralidade relativamentegrande de filas EDCA usando um conjunto fixo menor de filasEDCA padrão.
A Figura 18 apresenta uma modalidade exemplarilustrando vários componentes de um núcleo MAC inferior.
A Figura 19 apresenta uma modalidade exemplardetalhada de uma seção de um processador de núcleo MACinferior.
A Figura 20 ilustra um intertravamento exemplar.
A Figura 21 apresenta uma modalidade exemplar deuma ID de enlace.
A Figura 22 apresenta componentes adicionais deuma modalidade exemplar de um núcleo MAC inferior.
A Figura 23 apresenta uma modalidade exemplar deFSM de taxa.
A Figura 24 apresenta um exemplo de mecanismo deprotocolo de legado.
A Figura 25 apresenta um exemplo de mecanismo deprotocolo de legado conectado por enlaces conceituais a umaPHY.
A Figura 26 apresenta uma modalidade exemplar quedetalha adicionalmente o processamento MAC de pacotes detransmissão.
A Figura 27 apresenta um formato exemplar de umaa-MPDU.
A Figura 28 apresenta uma modalidade exemplarilustrando componente de recepção de um núcleo MACinferior.A Figura 29 apresenta uma modalidade exemplar deuma tabela de hardware configurada para um terminal deusuário.
A Figura 30 apresenta uma modalidade exemplar deuma tabela de hardware configurada para uso em um ponto deacesso ou super estação.
A Figura 31 apresenta uma modalidade exemplar deuma tabela de estado de fluxo RX.
A Figura 32 apresenta uma modalidade exemplar deum método para configurar tabelas de hardware e memória emvárias configurações.
A Figura 33 apresenta uma configuraçãoalternativa para uma parte de um armazenador de pacotesconfigurado para suportar arranjos de pacotes RX.
A Figura 34 ilustra um exemplo de um esquema deprioridade de ponta a ponta para redes sem fio, incluindopoliciamento de entrada e handoff com base em prioridade.
A Figura 35 apresenta uma modalidade exemplar deum método que ilustra a operação de um bloco de decisão dehandoff e um mecanismo de handoff.
A Figura 36 ilustra uma modalidade exemplar de ummétodo para efetuar uma decisão de handoff.
A Figura 37 ilustra uma modalidade exemplar de ummétodo para processamento de um pacote recebido.
A Figura 38 ilustra uma modalidade exemplar de ummétodo para processamento de uma ,ou mais filas de handoff.
A Figura 39 apresenta uma modalidade exemplar deum método para determinação de fluxos disponíveis parahandoff.
A Figura 40 ilustra um exemplo de tabela deestado de decisão.
A Figura 41 ilustra uma modalidade exemplar deuma fila de handoff.
A Figura 42 ilustra uma modalidade exemplar de ummétodo para efetuar handoff.A Figura 43 ilustra variáveis exemplares usadaspara indexar um armazenador de pacotes em uma tabela deestado de handoff.
A Figura 44 apresenta uma modalidade exemplar deum método para responder a uma requisição de confirmação debloco imediata.
A Figura 45 ilustra uma modalidade exemplar dométodo para responder a uma confirmação de bloco.
A Figura 46 ilustra uma modalidade exemplar de ummétodo para utilizar uma cache de arranjo de nó pingue-pongue em um processo de retransmissão.
A Figura 47 ilustra uma modalidade exemplar de ummétodo para efetuar transporte de economia de energiaautomático não programado.
A Figura 48 ilustra uma modalidade alternativaempregando mais de um processador MAC.
A Figura 49 apresenta uma modalidade exemplar deum dispositivo de comunicação sem fio incluindo doisprocessadores MAC, incluindo um primeiro processador MAC eum segundo processador MAC incorporados em ummicroprocessador.
A Figura 50 ilustra aspectos de armazenamento emarmazenador e enfileiramento de pacotes de múltiplosfluxos.
A Figura 51 ilustra aspectos de armazenamento emarmazenador e enfileiramento de pacotes de múltiplosfluxos.
A Figura 52 ilustra aspectos de gerenciamento dememória para controle de acesso a midia de alta velocidade.
A Figura 53 ilustra aspectos de controle deacesso a midia de múltiplos fluxos.
A Figura 54 ilustra aspectos de controle deacesso a midia de múltiplos fluxos.A Figura 55 ilustra aspectos de multiplexação demúltiplos fluxos para controle de acesso a midia de altavelocidade.
A Figura 56 ilustra aspectos de agregação em umsistema de comunicação de alta velocidade.
A Figura 57 ilustra aspectos de caches ocultosque 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 deacesso a mídia para resposta de baixa latêficia.
Descrição Detalhada da Invenção
Serão agora descritos vários aspectos, um ou maisdentre os quais podem ser combinados em qualquermodalidade. Os aspectos aqui descritos suportam umaoperação altamente eficiente com camadas físicas WLAN detaxa de dados muito elevada (ou aplicações similares usandotecnologias de transmissão recém desenvolvidas). A WLANexemplar pode operar em dois modos de bandas defreqüências, 20 MHz e 40 MHz. Ela suporta taxas de bitsacima de 100 Mbps (milhões de bits por segundo), incluindoaté 300 Mbps em largura de banda de canal de 20 MHz e até600 Mbps em largura de banda de canal de 40 MHz. São tambémsuportadas várias WLANs alternativas, incluindo aquelas commais de dois modos de bandas de freqüências e qualquernúmero de taxas de bits suportadas.
Vários aspectos preservam a simplicidade erobustez da operação de coordenação distribuída de sistemasWLAN de legado, exemplos de tais sistemas podendo serencontrados nas 802.11a a g. As vantagens das diversasmodalidades podem ser obtidas, mantendo-seconcomitantemente a retro compatibilidade com tais sistemasde legado. Note-se que na descrição que se segue, ossistemas 802.11 podem estar descritos como sistemas delegado exemplares. Os técnicos na área notarão que osaperfeiçoamentos podem também ser compatíveis com sistemase normas alternativos.
Um ou mais aspectos exemplares aqui descritos sãoapresentados no contexto de um sistema de comunicação semfio de dados. Apesar de o uso em tal contexto servantajoso, diferentes modalidades da invenção podem serincorporadas em diferentes ambientes ou configurações. Deum modo geral, os diversos sistemas aqui descritos podemser formados usando-se processadores controlados porsoftware, circuitos integrados, ou lógica individual. Osdados, instruções, comandos, informações, sinais, símbolose chips que possam vir a ser mencionados por todo opresente documento são vantajosamente representados portensões, correntes, ondas eletromagnéticas, campos oupartículas magnéticos, campos ou partículas ópticos, ou umacombinação de tais. Além disso, os blocos apresentados emcada diagrama de blocos podem representar hardware ouetapas de um método. As etapas dos métodos podem serintercambiadas sem constituir um afastamento do escopo dapresente invenção. 0 termo "exemplar" é aqui usadoexclusivamente com o significado de "servindo como exemplo,caso, ou ilustração". Qualquer modalidade aqui descritacomo "exemplar" não deve ser necessariamente consideradacomo preferida ou vantajosa em relação a outrasmodalidades.
A Figura 1 ilustra modalidades exemplares de umsistema 100, compreendendo um ponto de acesso (AP) 104conectado a um ou mais terminais de usuário (UT) 106a a n.De acordo com a terminologia 802.11, no presente documentoos pontos de acesso e os terminais de usuário são tambémdesignados como estações ou STAs. As técnicas e aspectosaqui descritos podem também ser aplicados a outros tipos desistemas (exemplos dos quais incluem as normas celularesacima mencionadas). Tal como é aqui utilizado, o termoestação base pode ser usado de forma intercambiável com otermo ponto de acesso; o termo terminal de usuário pode serusado de forma intercambiável com os termos equipamento deusuário (UE), unidade de assinante, estação de assinante,terminal de acesso, terminal remoto, estação móvel, ououtros termos correspondentes conhecidos pelos técnicos naárea; o termo estação móvel inclui aplicações sem fiofixas.
Note-se também que os terminais de usuário 106podem se comunicar diretamente uns com os outros. Oprotocolo de enlace direto (DLP), introduzido pela 802.lie,permite a uma STA realizar handoff quadros diretamente paraoutra STA de destino dentro de um conjunto de serviçobásico (BSS) controlado pelo mesmo ponto de acesso. Emvá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 qualquercombinação de STAs. Podem ser formadas redes ad-hoc determinais de usuário que se comunicam umas com as outrasatravés da rede sem fio 120 usando qualquer um dentre amiriade de formatos de comunicação conhecidos pelostécnicos na área.
O ponto de acesso e os terminais de usuário secomunicam através da rede de área local sem fio (WLAN) 120.Nas modalidades detalhadas mais adiante, a WLAN 120 é umsistema MIMO OFDM de alta velocidade. No entanto, a WLAN120 pode ser qualquer LAN sem fio. Opcionalmente, o pontode acesso 104 se comunica com qualquer número de processosou dispositivos externos através da rede 120. A rede 120pode ser a Internet, uma intranet, ou qualquer outra redecabeada, sem fio, ou óptica. A conexão 110 porta os sinaisde camada física da rede para o ponto de acesso 104. Osdispositivos ou processos podem estar conectados à rede102, ou ser terminais de usuário (ou através de conexõescom os mesmos) na WLAN 120. Os exemplos de dispositivos quepodem estar conectados à rede 102 ou à WLAN 120 incluemtelefones, assistentes de dados pessoais (PDAs),computadores de vários tipos (laptops, computadorespessoais, "estações de trabalho", terminais de quaisquertipos), dispositivos de video, tais como câmeras,gravadores de video, "webcams" e virtualmente quaisqueroutros tipos de dispositivos de dados. Os processos podemincluir voz, video, dados, comunicações, etc. Váriascorrentes de dados podem apresentar exigências variáveis detransmissão, as quais podem ser acomodadas pelo uso detécnicas de qualidade de serviço (QoS) variável.
0 sistema 100 pode estar implementado com umponto de acesso 104 centralizado. Todos os terminais deusuário 106 se comunicam com o ponto de acesso em umamodalidade. Em uma modalidade alternativa, pode seracomodada a comunicação direta par-a-par (p2p) entre doisterminais de usuário, com modificações no sistema, comoficará claro para os técnicos na área, exemplos das quaisestão ilustrados mais adiante. Qualquer estação pode serestabelecida como um ponto de acesso designado emmodalidades que suportam pontos de acesso designados. 0acesso pode ser gerenciado por um ponto de acesso, ou serad-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 serimplementado em adição ao ponto de acesso para proverconexão à rede 102 (os detalhes não são mostrados) . Osquadros Ethernet podem ser transferidos entre o roteador eos terminais de usuário 106 através da sub-rede WLAN(detalhado mais adiante). A adaptação e conectividade aEthernet são bem conhecidas pelos técnicos na área.Em uma modalidade alternativa, o ponto de acesso104 provê adaptação ao IP. Em tal caso o ponto de acessoatua como um roteador de gateway para o conjunto determinais de usuário conectados (não é mostrado). Em talcaso, os datagramas IP podem ser roteados pelo ponto deacesso 104 dos e para os terminais de usuário 106. Aadaptação e conectividade ao IP são bem conhecidas pelostécnicos na área.
A Figura 2 apresenta aspectos de um dispositivode comunicação sem fio que pode ser configurado como umponto de acesso 104 ou terminal de usuário 106. Umdispositivo de comunicação sem fio constitui um exemplo deuma STA, adequada para implementação no sistema 100.
0 processador 210 é implementado para efetuar umavariedade de tarefas para o dispositivo de comunicação semfio, incluindo tarefas para efetuar a comunicação. Comoexemplo, o processador 210 efetua tarefas que são aquidescritas como tarefas de "firmware". Para maiorsimplicidade, nas modalidades detalhadas a seguir, umareferência a firmware inclui tais tarefas efetuadas peloprocessador 210, bem como tarefas efetuadas em conjunto comvários outros componentes ou blocos. O processador 210 podeser um microprocessador de uso geral, um processador desinais digitais (DSP), ou um processador de uso especial. 0processador 210 pode estar conectado a hardware de usoespecial para auxiliar em várias tarefas (não sãomostradas). Vários aplicativos podem rodar em processadoresconectados externamente, tais como um computador conectadoexternamente ou através de uma conexão por rede; podemrodar em um processador adicional no interior dodispositivo de comunicação sem fio 104 ou 106 (não émostrado), ou podem rodar no próprio processador 210.
0 processador 210 é apresentado conectado com amemória 220, a qual pode ser usada para armazenamento dedados, bem como de instruções para efetuar váriosprocedimentos e métodos aqui descritos e vários outros. Ostécnicos na área notarão que a memória 220 pode serconstituída por um ou mais componentes de memória de váriostipos, que podem estar, no todo ou em parte, embutidos noprocessador 210. A 1/0 230 é apresentada como conectada aoprocessador 210, o qual pode compreender uma ou maisfunções de entrada e/ou saída, exemplos das quais são bemconhecidos pelos técnicos na área.
0 processador de controle de acesso a mídia (MAC)240 está conectado ao processador 210. Em muitas dasmodalidades detalhadas a seguir, o processador MAC 240efetua o processamento de pacotes em alta velocidade, istoé, na velocidade de linha. De um modo geral, oprocessamento de taxa inferior, ou tarefas de "firmware",será efetuado pelo processador 210 em conjunto com oprocessamento em "velocidade de linha", tipicamenteefetuado pelo processador MAC 240. 0 processador MAC 240leva os dados para transmissão para a camada física (PHY)260 para transmissão através da WLAN 120 e processa dadosprovenientes da PHY 260, recebidos através da WLAN 120. 0processador 210 pode. também receber dados de camada físicae 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). 0 formato dos dadosentregues e recebidos da PHY 260 estará de acordo com aespecificação do sistema ou sistemas de comunicaçãosuportados pelo dispositivo de comunicação sem fio 104 ou 106.
O processador MAC 240 recebe e transmite dadosatravés da conexão 110 de acordo com as exigências decamada física da rede 102. Um processador de rede opcional280 pode ser implementado para receber e transmitir deacordo com a camada física da rede 102 através da conexãode rede opcional 110. O processador de rede pode receber elevar dados ao processador MAC 240 usando qualquer tipo deformato de dados. Os pacotes de dados exemplares serãodetalhados mais adiante (estes e formatos de dadosalternativos serão bem conhecidos pelos técnicos na área).Tais dados podem ser aqui designados como fluxos. Os fluxospodem possuir diferentes características e podem requererprocessamento diferente com base no tipo de aplicaçãoassociada ao fluxo. Como exemplo, vídeo ou voz podem sercaracterizados como fluxos de baixa latência (o vídeo de ummodo geral possuindo exigências de capacidade detransmissão mais elevada do que a voz) . Várias aplicaçõesde voz são menos sensíveis à latência, porém podem terexigências mais elevadas quanto à integridade dos dados(isto é, a voz pode tolerar a perda de alguns pacotes, atransferência de arquivos é de um modo geral intolerantequanto à perda de pacotes).
0 processador MAC 240 recebe dados de fluxo,processo este que é designado como entrada ou ingresso, earmazena os pacotes de fluxo de dados no armazenador depacotes 250. 0 processador MAC 240 recupera os pacotes paratransmissão através da WLAN 120, o que é designado comotransmissão ou TX, e os entrega à PHY 2 60. Os pacotesrecebidos na WLAN 120, o que é designado como recepção ouRX, são levados da PHY 260 para o processador MAC 240, queos armazena no armazenador de pacotes 250. O processadorMAC 240 recupera pacotes RX do armazenador de pacotes 250para transporte a uma conexão de rede 110 (ou aoprocessador de rede opcional 280), um processo designadocomo saída. Serão detalhadas a seguir modalidadesexemplares do armazenador de pacotes 250. Váriasmodalidades detalhadas a seguir identificam aspectos paraefetuar o processamento de pacotes de alta velocidade paraentrada, transmissão, recepção e saída.
Apesar de a entrada e a saída estaremidentificadas com a rede 102, enquanto a RX e TX estãoidentificadas com a WLAN 120 no exemplo apresentado, oprocessador MAC 240 pode ser adequadamente implementadopara operação com qualquer função de entrada ou saída, bemcomo qualquer tipo de função de recepção ou transmissão. Aclassificação do fluxo pode ser efetuada por um acionador,o qual pode estar incluído no processador 210 ou noprocessador de rede 280, ou em qualquer componenteadequado, como é do conhecimento dos técnicos na área.Vários acionadores podem ser implementados para permitir oprocessamento 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 sercomunicados entre o ponto de acesso e vários terminais deusuário. As unidades de dados de protocolo MAC (MPDUs)encapsuladas em unidades de dados de protocolo de camadafísica (PHY) (PPDUs) são levadas e recebidas à/da PHY 260.Uma MPDU pode também ser designada como um quadro. Quandouma única MPDU está encapsulada em uma única PPDU, algumasvezes a PPDU pode ser designada como um quadro. Modalidadesalternativas podem empregar qualquer técnica de conversão ea terminologia pode variar em modalidades alternativas. Ofeedback correspondente a várias MAC IDs pode ser retornadoa partir da PHY 260 para várias finalidades. O feedback ouretroalimentação pode compreender quaisquer informações decamada física, incluindo as taxas que podem ser suportadaspara os canais (incluindo tráfego/pacotes multidifusão eunidifusão (uni.cast) ) , formato de modulação e vários outrosparâmetros.
A PHY 260 pode ser qualquer tipo de transceptor(e pode incluir tanto um receptor comõ um transmissor,porém qualquer um pode ser implementado em uma modalidadealternativa). Em uma modalidade, a PHY 260 inclui umtransceptor de multiplexação por divisão de freqüênciaortogonal (OFDM), que pode ser operado com uma interface demúltiplas-entradas e múltiplas-saidas (MIMO) ou múltiplas-entradas e única-saída (MISO).
O MIMO e MISO são conhecidos pelos técnicos naárea. Vários exemplos de transceptores OFDM, MIMO e MISOestão detalhados no Pedido Co-pendente de Patente U.S. N2de Série 10/650 295, intitulado "FREQUENCY - INDEPENDENTSPATIAL - PROCESSING FOR WIDEBAND MISO AND MIMO SYSTEMS",depositado em 27 de agosto de 2003, em nome da Requerentedo presente. As modalidades alternativas podem incluirsistemas de única-entrada e múltiplas-saidas (SIMO) ouúnica-entrada e única-saida (SISO).
A PHY 260 é apresentada conectada com as antenas270a a n. Pode ser suportado qualquer número de antenas emvárias modalidades. As antenas 270 podem ser usadas paratransmissão e recepção através da WLAN 120.
A PHY 260 pode compreender um processadorespacial em comunicação com cada uma dentre as uma ou maisantenas 270. O processador espacial pode processar os dadospara transmissão de forma independente para cada antena, ouprocessar em conjunto os sinais recebidos através de todasas antenas. Os exemplos do processamento independente podemestar baseados em estimativas de canal, retroalimentaçãoproveniente do terminal de usuário, inversão de canal, ouuma variedade de outras técnicas conhecidas pelos técnicosna área. O processamento é efetuado usando-se qualquer umadentre uma variedade de técnicas de processamento espacial.Vários transceptores deste tipo podem transmitir utilizandoformação de feixes, direcionamento de feixes,direcionamento Eigen, ou outras técnicas espaciais paraaumentar a capacidade de transmissão de e para um dadoterminal de usuário. Em algumas modalidades, nas quais sãotransmitidos símbolos OFDM, o processador espacial podecompreender processadores sub-espaciais para processamentode cada uma das sub-portadoras OFDM (também designadas comotons), ou faixas.Em um sistema exemplar, o ponto de acesso (ouqualquer STA, tal como um terminal de usuário) pode possuirN antenas e um terminal de usuário exemplar pode possuir Mantenas. Existem, portanto, MxN trajetórias entre asantenas do ponto de acesso e do terminal de usuário. Éconhecida uma variedade de técnicas espaciais para melhorara capacidade de transmissão usando tais múltiplastrajetórias. Em um sistema de diversidade de transmissãoespaço tempo (STTD) (também aqui designado como de"diversidade"), a transmissão de dados é formatada ecodificada, e enviada através de todas as antenas na formade um único fluxo de dados. Com M antenas de transmissão eN antenas de recepção podem ser formados MIN(Μ, N) canaisindependentes. A multiplexação espacial explora tais viasindependentes e pode transmitir diferentes dados através decada uma das trajetórias independentes para aumentar a taxade transmissão.
São conhecidas várias técnicas para aprendizadoou adaptação às características do canal entre o ponto deacesso e um terminal de usuário. Pilotos exclusivos podemser transmitidos a partir de cada antena de transmissão. Emtal caso, os pilotos são recebidos em cada antena derecepção e medidos. A retroalimentação de informações deestado de canal pode então ser retornada ao dispositivotransmissor para uso na transmissão. A auto-decomposição damatriz de canal medida pode ser efetuada para determinar osauto-modos do canal. Uma técnica alternativa para evitar aauto-decomposição da matriz de canal no receptor consisteem usar o direcionamento Eigen do piloto e dados parasimplificar o processamento espacial no receptor.
Dessa forma, dependendo das condições de canalcorrentes, taxas de dados variáveis podem estar disponíveispara transmissão para vários terminais de usuário por todoo sistema. A PHY 260 pode determinar a taxa suportável combase em qualquer processamento espacial que esteja sendousado para o enlace físico entre o ponto de acesso e oterminal de usuário. Tais informações podem serretroalimentadas para uso no processamento MAC.
Em um aspecto, um único circuito integrado deaplicação específica (ASIC) é provido para suportarprocessamento MAC nos dispositivos de comunicação sem fioincluindo tanto pontos de acesso e terminais de usuário. AsFiguras 3 e 4 ilustram de forma conceituai tal ASIC 310configurado para uso em um terminal de usuário 106 e em umponto de acesso 104, respectivamente.
Na Figura 3, o ASIC de processador MAC 310 éapresentado em uma configuração exemplar para um terminalde usuário 106. Em tal configuração, o processador MAC 240acima 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. Dessaforma, durante várias funções de processamento MAC,exemplos das quais serão detalhados mais adiante, oprocessador MAC 240 acessa a tabela de hardware 320 pararecuperar parâmetros 325 por fluxo. O processador MAC 240está também conectado à SRAM 330. Em tal configuração, aSRAM 330 está adaptada para efetuar a função do armazenadorde pacotes 250. O ASIC 310 do processador MAC podecompreender vários outros componentes, exemplos dos quaisserão detalhados mais adiante. Note-se, nesta modalidade,que o armazenador de pacotes 250 reside no interior doprocessador MAC 310. Note-se que a tabela de hardware 320 éapresentada como um bloco separado apenas com o propósitode esclarecimento. Em várias modalidades, a tabela dehardware 320 e a SRAM 330 podem, ambas, estar incluídas nointerior do processador MAC 240.
A Figura 4 apresenta um ASIC de processador MAC310 configurado para uso como um ponto de acesso. Talconfiguração pode também ser usada para uma estação capazde suportar um maior número de fluxos e/ou capacidade detransmissão mais elevada, uma chamada super estação. Nosexemplos descritos a seguir, a configuração de ponto deacesso e super estação pode ser simplesmente designada comoum ponto de acesso ou uma configuração de ponto de acesso.
Nesta modalidade, o ASIC de processador MAC 310 compreendeo processador MAC 240, a tabela de hardware 320 e a SRAM330 como na Figura 3. Novamente, tais componentes sãoapresentados separadamente apenas com o propósito deilustração e um ou mais deles pode estar incluído em umprocessador MAC 240. Em tal configuração, a tabela dehardware 320 não mais contém todos os parâmetros por fluxousados para o processamento MAC. Em tal caso, ponteiros ouponteiros por fluxo 335 estão contidos na tabela dehardware 320, cada um deles apontando para os respectivosparâmetros de fluxo 325 associados, que estão armazenadosna SRAM 330. Note-se que o mesmo ASIC de processador 310,compreendendo os mesmos componentes de hardwareapresentados, pode ser adaptado para qualquer dasconfigurações para suportar diferentes exigências. Nopresente exemplo, a SRAM 330 é redirecionada da função deum armazenador de pacotes 250, no modo STA, para umrepositório de parâmetros por fluxo 325 no modo de ponto deacesso. Dessa forma, o processador MAC 240 acessa a tabelade hardware 320 para parâmetro e, dependendo daconfiguração, irá recuperar tais parâmetros ou seguir umnível indireto para recuperá-los a partir da SRAM 330.Firmware (efetuado pelo processador 210, por exemplo) podeconfigurar os vários componentes do ASIC de processador MAC310 para trabalhar em um primeiro modo (modo de estação) ouem um segundo modo (modo de ponto de acesso) . Váriastécnicas para selecionar modos são bem conhecidas pelostécnicos na área. Como exemplo, ajustes de registrados,sinais de seleção de modo e similares podem ser usados paraindicar para um ou mais componentes o estado deconfiguração corrente. Além disso, o firmware pode populara tabela de hardware 320 e a SRAM 330 de forma diferente,dependendo da configuração selecionada.
Fazendo ainda referência à Figura 4, pode servisto que uma memória externa, a SDRAM 340 neste exemplo, éincluída para efetuar a função do armazenador de pacotes250. Dessa forma, no modo de ponto de acesso, um maiornúmero de fluxo pode ser suportado pelo uso da SRAM 330para armazenamento de parâmetros por fluxo do que poderiamser suportados pelo uso da tabela de hardware 320isoladamente (presumindo-se que a tabela de hardware 320seja menor do que a SDRAM 330). O tamanho da SRAM 330 podeser selecionado para acomodar as exigências do armazenadorde pacotes para um dispositivo de comunicação sem fio nomodo de estação. Em uma modalidade, tal tamanho é tambémadequado para armazenamento de todos os parâmetros porfluxo necessários para o número de fluxos suportado por umponto de acesso. Em uma modalidade alternativa, a SRAM 330pode estar dimensionada para suportar um maior número defluxos, o que pode demandar um tamanho maior de SRAM do queseria de outra forma necessário para o armazenador depacotes. A SDRAM 340 pode ser selecionada para acomodar onúmero de fluxos suportados pelo ponto de acesso. Ostécnicos na área saberão como selecionar tamanhos adequadospara a tabela de hardware 320, a SRAM 330 e a SDRAM 340.
Dessa forma, um único ASIC 310 de processador MACpode ser projetado para suportar múltiplos modos. Oscomponentes de hardware podem ser reutilizados em cada modopara prover diferentes funções. Exemplos mais detalhados douso de tabelas de hardware e armazenadors de pacotes estãoilustrados mais adiante. A implementação de um único ASICde processador MAC 310 com a capacidade de ser configuradotal como apresentado na Figura 3 permite um menor porte ecusto mais baixo. O mesmo ASIC de processador MAC 310 podetambém ser usado em dispositivos de maior desempenho, taiscomo um ponto de acesso ou super estação, pela adição deuma SDRAM externa 340 e reconf iguração do ASIC deprocessador MAC 310. Podem ser selecionados vários tamanhosdiferentes de SDRAM 340, dependendo das necessidades dedesempenho da configuração em questão.
A Figura 5 apresenta uma modalidade exemplar maisdetalhada de um dispositivo de comunicação sem fio, talcomo uma STA 104 ou UT 106. Neste exemplo, será descrito oprocessamento MAC para uma ampla variedade decaracterísticas de pacotes exemplares usando-se umprocessador MAC (descrito de um modo geral). Em umamodalidade alternativa, as funções de processamento MACpara diferentes tipos de pacotes podem ser divididas emdois ou mais processadores MAC (modalidades alternativasexemplares serão detalhadas mais adiante com referência àsFiguras 48 e 49).
Como antes, o processador 210 é implementado paraefetuar tarefas de firmware. É ilustrado um conjuntoexemplar de funções de suporte que podem ser típicas em talimplementação. Várias modalidades alternativas ficarãoclaras para os técnicos na área. O processador 210 secomunica com uma instrução SRAM 502 e uma inicialização deROM 504 através do barramento de instruções 506. Taismemórias podem ser usadas para efetuar o armazenamento erecuperação bem conhecidos de instruções para uso noprocessamento firmware no processador 210. Exemplos defunções I/O e funções de suporte estão ilustrados peloscomponentes conectados ao barramento 514. Neste exemplo, ostemporizadores 508 podem ser implementados para efetuarvárias funções de temporização. Pode ser implementado umtransmissor receptor universal assíncrono (UART) 510. Outroexemplo de I/O é a interface 12C 512. Neste exemplo, osvários componentes auxiliares se conectam através dobarramento 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 processamentocorrelacionado podem ser efetuados pelo processador 210 deacordo com as funções correlacionadas implementadas. Váriasfunções alternativas são bem conhecidas pelos técnicos naárea para conexão com processadores de vários tipos. Aponte 518 conecta os componentes ligados ao barramento 514com outros componentes conectados ao barramento 520. Dessaforma, vários componentes conectados ao barramento 520,incluindo o processador 210, podem comunicar dados para obarramento 514 para transporte ou recepção aos/dosrespectivos componentes. Neste exemplo, um árbitro debarramento 522 é implementado para controlar o acesso aocontrolador DMA do barramento 520; componentes adicionaisligados ao barramento 520 incluem um controlador de acessodireto à memória (DMA) 524, a SRAM de dados 526 e uma servointerface de barramento 528. A servo interface debarramento 528 provê um conduite entre o barramento 520 e alógica de formatação e os multiplexadores 570, o que serádescrito em maiores detalhes mais adiante. Os componentesaqui descritos podem ser conceitualmente identificados comvários componentes, tais como o processador 210, a memória220 e a I/O 230, acima descritos com referência à Figura 2.
Os componentes da Figura 5, exceto pela SDRAM340, formam partes de uma modalidade exemplar de um ASIC deprocessador MAC 310, tal como acima descrito nas Figuras 3e 4. Tais componentes podem ser configurados para uso comouma configuração STA 106, detalhada na Figura 3, ou comouma configuração de ponto de acesso ou super estação,detalhada na Figura 4. À luz da descrição acima, pode serconstatado que os vários componentes detalhados na Figura 5podem formar partes do processador MAC 240 e da tabela dehardware 320. Vários componentes descritos podem serconfigurados em diferentes modos para perfazer diferentesfunções. Vários componentes, tais como o processador 210 eos componentes auxiliares 502 a 528 exemplares, podem ounão ser incorporados em uma modalidade exemplar de um ASICde processador MAC 310.
Note-se que o processador 210, e os vários outroscomponentes apresentados, podem se comunicar com oscomponentes do processador MAC através do barramento 520.
Neste exemplo, o processador MAC compreende duas funçõesprincipais, incluindo o núcleo MAC inferior 540 e umsubsistema hospedeiro para WLAN, apresentado como oprocessador H2W 530. Modalidades exemplares de taiscomponentes serão detalhadas mais adiante. Tal segregaçãode componentes em várias partes constitui apenas uraexemplo; os técnicos na área irão implementar facilmente osvários processos e funções descritos em configuraçõesalternativas, como ficará claro à luz dos presentesensinamentos.
A SRAM 560 pode ser acessada através da interfaceSRAM 558, que está conectada ao MUX 554. O multiplexador554 seleciona como uma alimentação à interface SRAM 558 aconexão ao árbitro de memória 556, ou a conexão ao árbitrode memória 552. O árbitro de memória 552 recebe requisiçõese arbitra o acesso à SRAM 560 a partir de uma variedade defontes ou origens, incluindo os componentes no barramento520, bem como no barramento 550. Neste exemplo, obarramento 550 provê um acoplamento direto entre o núcleoMAC inferior 540 e a memória (SRAM) 560. Note-se que tambémexiste uma via entre tais componentes através do barramento520. Neste exemplo, um barramento 550 adicional é providopara garantir o desempenho de acesso com a SRAM 560 pararecuperação e armazenamento de dados temporalmentesensíveis do e no núcleo MAC inferior 540. Note-se que, talcomo descrito nas Figuras 3 e 4, a SRAM 560 pode servircomo um armazenador de pacotes em uma configuração e comoum repositório de parâmetros por fluxo em outraconfiguração.O núcleo MAC inferior 540 está conectado àinterface MAC/PHY 545, que pode ser usada para levarpacotes para transmissão à PHY 260 e para processar pacotesrecebidos a partir da PHY 260. Modalidades exemplares decomponentes no interior do núcleo MAC inferior 540 serãodetalhadas mais adiante.
0 processador H2W 530 processa pacotes deentrada; modalidades exemplares serão descritas em maioresdetalhes mais adiante. Em uma modalidade, a entrada podeser desacoplada do processamento dos pacotes que sãorecebidos. Em tal caso, os pacotes de entrada podem sergravados no armazenador de pacotes na velocidade de linha(isto é, na taxa de entrada) . O processamento de taispacotes pode ocorrer posteriormente, lendo-os a partir doarmazenador de pacotes. Tal desacoplamento permite que ataxa de processamento seja diferente da taxa de entrada navelocidade de linha. A desvantagem de tal estratégia é a deque ocorre uma leitura e gravação extra no armazenador depacotes, uma vez que os pacotes devem ser lidos,processados e recolocados no armazenador de pacotes paraaguardar a transmissão. Tal penalidade em termos deamplitude de banda de memória pode ser aceitável em certasmodalidades. Uma modalidade alternativa, ilustrada nosexemplos a seguir, propicia o processamento em linha depacotes de entrada. Em tais modalidades exemplares, oprocessamento MAC é projetado para permitir que cada pacotede entrada seja formatado para transmissão na velocidade delinha, com uma única gravação no armazenador de pacotes(seguida por uma leitura quando chegar o momento detransmissão do pacote). No segundo caso, a carga sobre aamplitude de banda de memória é reduzida em comparação como primeiro caso. Os técnicos na área adaptarão facilmentequalquer das estratégias a vários aspectos aqui descritosem várias modalidades.A SDRAM 340 é apresentada como um componenteexterno ao ASIC de processador MAC 310 nesta modalidade.Isto está de acordo com a descrição das Figuras 3 e 4acima, em que dispositivos de comunicação sem fio que devemsuportar um maior número de fluxos (com a maior necessidaderesultante para maior espaço no armazenador de pacotes, talcomo um ponto de acesso ou super estação) podem seracomodados com um único ASIC de processador MAC 310 decusto mais baixo e uma memória externa opcional tal como aSDRAM 340. A SDRAM 340 pode ser acessada através dainterface SDRAM 562, que está acoplada ao árbitro dememória 556. Em uma modalidade alternativa, a SDRAM 340pode também ser incorporada em um ASIC de processador MAC310. A alocação de componentes apresentada na Figura 5constitui apenas um exemplo. Qualquer dos componentesapresentados pode ser incorporado em um único ASIC, ou podeser incorporado em um ou mais dispositivos externos,dependendo das exigências de área de cada ASIC e dodesempenho desejado.
Neste exemplo, as entrada e saida de pacotes sãoefetuadas através de uma de duas interfaces externasexemplares. Os técnicos na área notarão que interfacesalternativas podem ser implementadas além, ou em lugar, detais interfaces. Neste exemplo, a interface SDIO 582 e ainterface PCI 584 são implementadas para recepção e handoffde pacotes para dispositivos externos (ou internos) emcomunicação com uma ou mais de tais interfaces. A interfaceSDIO 582 e a interface PCI 584 são selecionadas através doMUX 580.
A fim de acomodar interfaces de velocidadesvariáveis, bem como para atender a demandas variáveis paraarmazenamento e processamento de pacotes recebidos eemitidos, FIFO, multiplexadores e lógica de formataçãopodem ser implementados para efetuar a combinação de taxasfilas para aliviar o congestionamento no acesso a
ememórias tais como a SRAM 560 e a SDRAM 340, e funções deprocessamento MAC tais como o processador H2W 530 e onúcleo MAC inferior 540. Como exemplo, as interfaces deentrada e saida podem operar em velocidades mais altas comrelação à capacidade de transmissão da WLAN. Os fluxosrecebidos podem ser em rajadas e alta velocidade. Asinformações recebidas a partir do processador 210, ou dequalquer outro componente conectado ao barramento 520,podem chegar em qualquer outra taxa. O processador H2W 530e o núcleo MAC inferior 540 irão gerar requisições deacesso e recuperar ou armazenar dados resultantes de taisrequisições a medida que o processamento para váriastarefas for concluído, tal como descrito mais adiante.
Dessa forma, neste exemplo, podem ser implementados FIFO572 entre a lógica de formatação e os multiplexadores 570 ea lógica de formatação e os multiplexadores 574. Comoexemplo, um conjunto de FIFO 572, um para acumular dadosprovenientes da lógica de formatação e multiplexadores 570para a lógica de formatação e multiplexadores 574, e outropara acumular dados na direção oposta, pode serimplementado 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 serimplementado para suportar dados de e para o processadorH2W 530. Outro conjunto similar pode ser implementado parainteração entre os componentes no barramento 520, acessadoatravé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, asquais estarão claras para os técnicos na área à vista dospresentes ensinamentos. Dessa forma, a modalidade exemplardo dispositivo de comunicação sem fio 104 ou 106apresentados na Figura 5, serve para ilustrar uma possívelinterconexão de vários componentes, detalhes da qual serãodescritos mais adiante. Várias configurações alternativas,usando subconjuntos de tais componentes e/ou componentesadicionais (não são mostrados) podem ser implementadasdentro do mesmo escopo.
ARMAZENADOR DE PACOTES E GERENCIAMENTO DE MEMÓRIA
A Figura 6 apresenta uma modalidade exemplar deum armazenador de pacotes 250. Em várias modalidadesexemplares aqui descritas, um armazenador de pacotes 250,tal como ilustrado na Figura 6, exemplifica estruturas dedados e listas interligadas associadas que são úteis paraefetuar várias funções para processamento de pacotes dentrode um processador MAC 24 0. Apesar de várias modalidadesaqui descritas não demandarem tal estrutura, e armazenadorsde pacotes alternativos poderem ser implementados emmodalidades alternativas, as modalidades detalhadas portodo o presente relatório descritivo irão utilizar taislistas interligadas e estruturas de dados para ilustrar seuuso nestas várias funções. Além disso, um armazenador depacotes, tal como descrito na Figura 6, pode serimplementado para uso em várias funções alternativas, alémdaquelas aqui descritas. Os técnicos na área poderãofacilmente adaptar tal armazenador de pacotes e seuscomponentes e subcomponentes em várias modalidades,incluindo aquelas para as quais seja desejado processamentode pacotes de alta velocidade. 0 armazenador de pacotes 250exemplar pode incluir estruturas de dados adicionais nãomostradas na Figura 6, as quais serão adicionalmentedetalhadas na Figura 7, descrita a seguir.
Neste exemplo, cada pacote é armazenado noarmazenador de pacotes 250 usando-se dois tipos deestruturas de dados; uma primeira estrutura de dados, aquidesignada como um nó 610, e uma segunda estrutura de dados,aqui designada como bloco 620. Cada pacote, ou fragmento depacote (caso seja implementada a fragmentação tal comodescrito nas 802. Ilg - e) , inclui um nó 610 e um ou maisblocos 620. O número de blocos necessário paraarmazenamento dos dados de pacote irá variar dependendo dotamanho do pacote ou fragmento. Dessa forma, um pacotereside no armazenador de pacotes 250 na forma de umaestrutura de lista interligada compreendendo um nóapontando para um primeiro grupo e, quando foremnecessários blocos adicionais, a lista interligadacompreende os blocos adicionais, cada grupo apontando paraum grupo subseqüente (exceto o grupo final).
Uma vantagem de tal segmentação entre nós eblocos é a de que informações cruciais para decisões decontrole podem ser mantidas em um nó, enquanto os dados emsi são mantidos em blocos relativamente maiores. Istopermite que os nós, que são representativos de seusrespectivos pacotes, sejam usados no processamento decontrole 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 modogeral associados a um ou mais fluxos. A estrutura de nós eblocos apresentada também facilita a formação eficiente defilas de pacotes dentro do armazenador de pacotes, sendocada fila associada a seu respectivo fluxo. Tal estruturageral está ilustrada na Figura 6 com um exemplo de umaúnica fila compreendendo vários nós e blocos. Nesteexemplo, os nós 610a a η formam uma lista interligadaassociada a uma fila para um fluxo. A fila possui umacabeça identificada por um ponteiro de cabeça de fila 630 eum ponteiro de cauda de fila 640 identifica o último nó nafila. Neste exemplo, existem η pacotes na fila, cada um comum nó 610 a ele associado. Cada nó 610 compreende uma sériede blocos 620a a m, tal como ilustrado. Qualquer número deblocos pode ser associado a um único nó. Os blocosremanescentes ilustrados nesta figura estão simplesmentedenotados por 620. Os técnicos na área notarão que podemser implementados nós de vários tamanhos, bem como blocosde vários tamanhos. Na modalidade exemplar, um grupo possui512 bytes. Dessa forma, uma vez que os pacotes exemplarespossuem usualmente menos do que 2 Kbytes, serão necessáriosno máximo 4 blocos para cada pacote (tipicamente menos),incluindo o cabeçalho de pacote e outras informaçõesassociadas ao mesmo. Em modalidades alternativas, pode serimplementado qualquer tamanho de grupo acomodando qualquertamanho de pacote.
Nesta modalidade exemplar, o controle e os dadossão separados na memória. Para finalidades de transmissão erecepção podem ser necessárias várias manipulações dasestruturas de controle. No entanto, para cargas úteis dedados, é efetuada somente uma gravação na memória (sejaquando da entrada ou recepção a partir da WLAN) e umaleitura de tal memória (quando da transmissão através daWLAN ou saida através da interface externa). Dessa forma,as demandas de amplitude de banda de memória podem serreduzidas, uma vez que as transferências de entrada e saidada 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ídosum campo de comprimento 614 e um número de seqüência. Taiscampos são úteis quando do processamento de pacotes, comoserá descrito mais adiante, e permitem que o processamentoMAC seja efetuado sem acessar ou movimentar os dadoscontidos nos blocos 620. Como exemplo, o campo decomprimento é útil para agregação, quando da agregação depacotes em um TXOP. 0 número de seqüência é útil quando doenvio de uma requisição de ACK de bloco. De um modo geral,quaisquer informações de pacotes úteis para o processamentopodem ser adicionadas a modalidades alternativas de nós. 0nó 610 também inclui o ponteiro de grupo 618, que apontapara o primeiro grupo contendo os dados de pacote.
Tal estrutura permite flexibilidade para ageração de filas de qualquer comprimento, limitadas apenaspelo tamanho total do armazenador de pacote da memória.Dessa forma, vários tipos diferentes de fluxos podem sersuportados e o número suportado de fluxos não necessita serfixo. Como exemplo, vários fluxos, requerendo um baixonúmero de pacotes, podem receber armazenamento com fluxosrequerendo maior número de pacotes e, portanto, pode serimplementado um tamanho menor de armazenador de pacotespara suportar um dado número de fluxos. Alternativamente,um número variável de fluxos pode ser acomodado paraqualquer dado tamanho de memória. Como pode ser visto, asfilas podem crescer e encolher de forma independente e,dado que os nós e blocos podem ser reutilizados porquaisquer fluxos e pacotes, respectivamente, a estruturapossibilita maior flexibilidade, com gerenciamento dememória muito eficiente.
Também é ilustrado um exemplo de grupo 620. Osdados de grupo 622 constituem o pacote, incluindo quaisquercampos de cabeçalho, seqüências de conferência de quadros esimilares. Um ponteiro de próximo grupo 624 é incluído nogrupo para apontar para o próximo grupo na listainterligada, caso exista.
Em uma modalidade, os blocos são de tamanho fixo.Isto permite que uma memória de armazenador de pacotescompreenda uma parte fixa de memória alocada para blocos. Aestrutura de lista interligada permite que qualquer gruposeja usado em qualquer lista interligada de pacotes. Amedida que os pacotes chegam e saem, os blocos podem serreutilizados com facilidade, sem a exigência de overhead degerenciamento de memória adicional (tal como a re-alocaçãode 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 sergravados uma vez no armazenador de pacotes, onde elespermanecem até que estejam prontos para transmissão atravésda WLAN ou para handoff para um destino de saída. Ospacotes podem também ser movimentados dentro das filas, oumovidos para novas filas simplesmente pela modificação dosponteiros (isto é, modificação da lista de interligação).Isto é útil quando do processamento de pacotes pararetransmissão. 0 uso de tais estruturas propicia eficiênciaadicional, como será detalhado mais adiante. Cada listainterligada pode usar qualquer um dentre uma variedade definalizadores de lista para o último nó em uma fila, oupara o último grupo em um pacote. Na modalidade exemplar,os primeiro e último nós em uma lista interligada sãoindicados por ponteiros de cabeçalho e término/cauda,enquanto os ponteiros de blocos são entrelaçados paraindicar o último grupo em um pacote. Em uma modalidadealternativa, pode ser desejável adicionar o número deblocos no cabeçalho de nó juntamente com o comprimento dopacote e o número de seqüência do pacote. São tambémcontempladas modalidades alternativas incluindo tamanhos deblocos variáveis.
A Figura 7 ilustra também um exemplo dearmazenador de pacotes 250. Blocos contíguos de memóriapodem ser alocados para vários tipos de estruturas dedados, apesar de tal não constituir uma exigência. Como foiacima descrito, uma parte de um segmento 730 pode seralocada para nós e um segmento 740 pode ser alocado parablocos. Na modalidade exemplar, cada um de tais segmentosconstitui um espaço contíguo de memória, incluindo blocos enós de tamanho fixo, reutilizáveis para qualquer pacotee/ou fluxo, tal como acima descrito. Além disso, sãomantidas uma lista de ponteiros de nós livres 710 e umalista de ponteiros de blocos livres 720. Uma variedade deestruturas de dados pode ser implementada para listas deponteiros livres, como ficará claro para os técnicos naárea. Como exemplo, ponteiros de nós e ponteiros de blocospodem ser empurrados e aplicados a suas respectivas listasde ponteiros 710 ou 720. Tais listas podem ser, porexemplo, armazenadors circulares. Uma vez que um ponteiroseja aplicado para formar um novo nó ou grupo, tal ponteiroirá permanecer em uso até que o nó ou grupo seja liberado,o ponteiro podendo a seguir ser empurrado de volta para usofuturo.
A Figura 8 apresenta componentes adicionais quepodem ser implementados no interior de um processador MAC,tal como nas modalidades exemplares aqui descritas. Taiscomponentes não são necessários, porém proporcionamvantagens em certas situações devido a propriedadesparticulares 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 efetuarpequenas transferências (isto é, ao recuperar ou armazenarum único ponteiro de grupo ou nó). Quando do uso de certostipos de SDRAM, na fatorização de acesso a fileira, acessoa coluna, etc., os ciclos de overhead podem superar osciclos reais de transferência de dados. Para impedirgrandes retardos, podem ser implementadas várias cachespara recuperação de vários ponteiros de uma só vez para usono processamento MAC. A Figura 8 apresenta exemplos devárias destas caches. Algumas ou todas dentre tais cachespodem ser implementadas em várias modalidades alternativas.
Os exemplos de caches usados nas modalidades aqui descritasincluem o cache de ponteiro de nó livre TX 810, uma cachede ponteiro de grupo livre TX 820, uma cache de ponteiro denó livre RX 830 e uma cache de ponteiro de grupo livre RX840. A estrutura de dados ilustrada acima para os pacotespode ser simplificada para uso com pacotes de recepção, umamodalidade da qual está detalhada mais adiante comreferência à Figura 33. De um modo geral, cada uma de taiscaches 810 a 840 recebe um ou mais ponteiros a partir desuas respectivas listas de ponteiros de nós no armazenadorde pacotes 250 de modo a criar eficiências. Uma pluralidadede cada tipo de ponteiro pode ser recuperada de uma só veza partir do armazenador de pacotes. Neste exemplo, umapluralidade de ponteiros pode ser extraída a partir darespectiva lista. Tais ponteiros a seguir preenchem arespectiva cache, e ponteiros isolados podem ser extraídosa partir da respectiva cache para uso em vários componentesde processamento MAC. O uso de ponteiros e suas respectivascaches será adicionalmente ilustrado através de váriasmodalidades exemplares detalhadas mais adiante.
A Figura 9 apresenta uma modalidade exemplar deum método 900 para gravação de pacotes em um armazenador depacotes e para criação de filas. Uma fila pode ser formadausando-se uma estrutura de dados, neste exemplo uma listainterligada. As filas podem também ser formadas na forma dearranjos (um exemplo é apresentado como o arranjo de nó3330, detalhado mais adiante). Tal método é adequado paraimplementação em conjunto com um armazenador de pacotes talcomo aquele descrito nas Figuras 6 e 7 acima. O método 900ilustra exemplos de técnicas que podem ser usadas paragravação de pacotes de entrada em um armazenador depacotes. Técnicas similares podem ser usadas para gravaçãode pacotes recebidos no armazenador de pacotes paraaguardar o processamento de handoff para saída. Asmodalidades exemplares de handoff serão detalhadas maisadiante. Opcionalmente, caches de ponteiros (isto é, 810 a840, tal como descrito na Figura 8) podem também serimplementadas com ou sem caches e tal método pode ser usadocom qualquer de tais configurações, como ficará claro paraos técnicos na área.
Em 910, é recebido um pacote. No bloco 912 surgeum nó para associação com o pacote. No bloco de decisão914, caso tal pacote seja o primeiro pacote na respectivafila, prosseguir para 916 e atualizar o ponteiro de cabeçade fila para apontar para o nó associado ao novo pacote(por exemplo, o ponteiro de cabeça de fila 630 ilustrado naFigura 6). A seguir, passar para 918. No bloco de decisão914, caso tal pacote não seja o primeiro pacote narespectiva fila, prosseguir para 918.
Em 918, extrair um ponteiro de grupo. Novamente,a extração de nós e blocos (abreviação para a extração dorespectivo ponteiro).pode ser efetuada diretamente a partirdo armazenador de pacotes e em particular a partir da listade ponteiros de nós livres ou da lista de ponteiros deblocos livres, respectivamente. Na modalidade exemplar, osponteiros são extraídos a partir da cache de ponteiros denós livres de transmissão 810 e da cache de ponteiros deblocos livres de transmissão 820 (os quais podem necessitarreposição a medição que são exauridos). Em 920, preencher onó com o número de seqüência e comprimento do pacote einserir o ponteiro de grupo recuperado em 918 no campo deponteiro de grupo do nó (isto é, usando um formato de nótal como o nó 610 ilustrado na Figura 6). Em 922, preenchero grupo com dados de pacote. Como exemplo, pode serimplementado um grupo 620 tal como ilustrado na Figura 6.
No bloco de decisão 924, caso seja necessáriooutro grupo devido ao pacote ser maior do que caberia noprimeiro grupo, passar para 926. Caso contrário, passarpara 932. Em 926 extrair um novo ponteiro de grupo. Em 928gravar o novo ponteiro de grupo no campo de ponteiro depróximo grupo do grupo anterior. Em 930, preencher o novogrupo com dados de pacote. Na modalidade exemplar, os dadosde pacote serão gravados seqüencialmente na série deblocos.. A seguir, retornar ao bloco de decisão 924 paradeterminar se outro grupo será necessário. Tal "loop" oucircuito pode ser repetido até que o pacote tenha sidocompletamente gravado em um ou mais blocos.
Em 932, o processo para gravação do pacote éfinalizado. Levar o nó associado ao pacote para a filaapropriada. Como exemplo, tal pode ser efetuado porgravação do endereço do nó, isto é, o ponteiro recuperadoem 912, no ponteiro de próximo nó do nó final. Nesteexemplo, o nó final é identificado pelo ponteiro de finalde fila (tal como o ponteiro de final de fila 640 ilustradona Figura 6). Em 934, atualizar o ponteiro de final paraapontar 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 outropacote não esteja pronto para gravação no armazenador depacotes, o processo pode parar. Para maior clareza, sãoomitidos os detalhes da associação do pacote ao seu fluxoassociado, a partir do qual serão derivados a filaapropriada e seus ponteiros de inicio e final associados.As modalidades exemplares associando pacotes com fluxosserão ilustradas em maiores detalhes mais adiante.
PROCESSADOR H2W E POLÍTICA DE ENTRADA
A Figura 10 ilustra uma modalidade exemplar desubsistema hospedeiro para WLAN, tal como o processador H2W530. Um pacote pode ser recebido a partir de uma variedadede fontes. Neste exemplo são apresentadas duas fontes comoilus tração. A presente modalidade exemplar ilustra umsubconjunto de componentes que podem estar contidos em umprocessador H2W 530. Alguns dos componentes apresentados naFigura 10 podem corresponder aos componentes da Figura 5não incluídos no processador H2W 530 e são apresentadospara clareza da descrição. Os técnicos na área notarão queos componentes apresentados e sua divisão são meramenteilustrativos. Os típicos pacotes de entrada, neste exemplo,provêem de uma interface externa, tal como a interface SDIO582, ou a interface PCI 584 ilustrada na Figura 5. Outroexemplo de alimentação de pacotes pode ser proveniente doprocessador 210, ou qualquer outro componente conectado aobarramento 520, tal como mostrado na Figura 5. Os pacotesda interface externa chegam ao processador H2W 530 atravésda interface externa 1006. Os pacotes provenientes dobarramento 520, por exemplo, podem chegar através dainterface de processador 1002. Podem ser implementados FIFOpara reter um ou mais pacotes para processamento. Comoexemplo, os FIFO 1004 e 1008 podem ser implementados parareter pacotes recebidos a partir da interface deprocessador 1002 ou da interface externa 1006respectivamente. 0 bloco 1004 pode ser implementado parireter pacotes de gerenciamento e controle provenientes doprocessador, que devem ser transmitidos através da WLAN. Emuma modalidade alternativa, detalhada mais adiante comreferência à Figura 48, a interface de processador 1002 ecomponentes correlacionados podem ser omitidos, uma vez quepacotes de sistemas legados ou de legado e outros pacotesde baxxa capacidade de transmissão, por exemplo, sãoprocessados no processador 210 (ou outro processador MACalternativo) e, portanto, tal interface pode não sernecessária.
No presente exemplo, o endereço MAC de destinoem conjunto com o identificador de corrente de tráfego(tsid), é usado para identificar um fluxo de formaexclusiva. Em modalidades alternativas, podem serimplementados outros mecanismos para mapeamento de fluxoscomo for acima mencionado, tipicamente existirá umacionador para efetuar a classificação de fluxos, o qualpode estar rodando em firmware ou em algum outroprocessador externo. O acionador pode produzir o endereçoMAC com um endereço de destino (DA), TSID e um endereço deorigem. Neste exemplo, o DA e o TSID podem ser usados paraidentificar o fluxo. O DMAC-TSID é levado ao bloco demapeamento de fluxo 1020, a partir do qual é retornada umaID de fluxo correspondente ao DMAC-TSID.
As modalidades exemplares do bloco de mapeamentode fluxo 1020 podem usar qualquer tipo de consulta ou outrafunção para determinar uma ID de fluxo a partir dainformações de identificação dadas. Um exemploapresentado na Figura 10b. Na modalidade exemplar,desejável desacoplar a interação de firmwaredoprocessamento de velocidade de linha, tal como foi acimadescrito. No entanto, pode ocorrer que o firmware seja bemadequado para a criação de tabelas para mapeamento defluxos. Para desacoplar a interação de firmware, sãoimplementadas duas tabelas de fluxo "ocultas", a tabela 11092 e a tabela 2 1096. 0 processador H2W 530 utiliza umatabela oculta, selecionada pelo comutador 1090, enquanto ofirmware pode atualizar a outra tabela oculta, selecionadapelo comutador 1099. Dessa forma, pode ser implementada umatécnica "pingue-pongue" através da qual o firmware atualizauma tabela enquanto a outra é usada para o processamentoMAC. Cada tabela de fluxos oculta 1092 ou 1096 compreendeuma lista de entradas dmac-tsid, com IDs de fluxocorrespondentes. A tabela de fluxos oculta 1 1092compreende as DMAC-TSID 1093a a η associadas às IDs defluxo 1094a a n; a tabela de fluxos oculta 2 1096compreende as DMAC-TSID 1097a a η associadas às IDs defluxo 1098a a n. Dessa forma, o bloco de mapeamento defluxos 1020 leva uma DMAC-TSID para a tabela de fluxosoculta selecionada como ativa e é retornada uma ID defluxo. Na modalidade exemplar, para efetuar uma buscarápida da ID de fluxo, é efetuada uma busca binária. 0firmware é bem adequado para colocar os campos DMAC-TSID emordem, para facilitar uma busca binária. Os técnicos naárea notarão que procedimentos alternativos de mapeamentode fluxos podem ser utilizados em modalidades alternativas.
Fazendo novamente referência à Figura 10a, a IDde fluxo é levada à tabela de estado de fluxo TX 1030, umamodalidade exempla^ da mesma estando detalhada mais adiantecom referência à Figura 11. A tabela de estado de fluxo TX1030 compreende uma variedade de parâmetros para cadafluxo. A localização física da tabela de estado de fluxo TX1030 pode variar, tal como foi acima descrito comreferência às Figuras 3 e 4. Como exemplo, em umaconfiguração, a tabela de estado de fluxo TX 1030 pode sermantida em uma tabela de hardware, no processador H2W 530.
Em uma modalidade alternativa, a tabela de hardware poderesidir no núcleo MAC inferior 540 (não é mostrado) e ambosos blocos 530 e 540 podem compartilhar a mesma tabela dehardware. Alternativamente, cada bloco 530 e 540 podemanter partes da tabela de hardware, tal como ilustrado deforma conceituai nas Figuras 3 e 4. A partir da ID de fluxopode ser selecionada uma parte da tabela de estado de fluxoTX 1030 correspondente à ID de fluxo e vários parâmetrosrecuperados. Exemplos dos parâmetros serão descritos nasdiversas modalidades.
Alguns parâmetros podem ser levados à unidade depolítica ou policiamento 1010. As modalidades exemplares daunidade de policiamento serão descritas mais adiante. Casoa 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çãoMIC a partir das chaves fornecidas e dos dados na parte decarga útil do pacote. Nesta modalidade, é usado umcomponente separado para efetuar a codificação da cargaútil (ver o mecanismo de protocolo legado 2210, detalhadomais adiante). Podem ser usadas técnicas de codificaçãoalternativas bem conhecidas pelos técnicos na área.
Outros parâmetros podem ser levados para anexaçãoao cabeçalho 1035 para produzir um cabeçalho. 0 cabeçalhogerado pode incluir campos para uso no próprio cabeçalho,bem como valores de controle para uso enquanto o pacotepassa pelas funções de processamento MAC. Tais valores decontrole podem Ser removidos antes que o pacote seja levadoà transmissão. Está constitui uma técnica exemplar paramanutenção de informações de estado para um pacote enquantoé efetuado o processamento MAC. Os técnicos na área notarãoque técnicas alternativas podem ser usadas para amanutenção do estado de pacotes ao se efetuar as váriasfunções MAC sobre os mesmos.
A unidade de política 1010, em associação com osparâmetros transferidos a partir da tabela de estado defluxo 1030, pode rejeitar o pacote, caso este em que asfunções de codificação, tais como a computação MIC, nãoserão efetuadas, e o pacote pode ser removido do FIFOModalidades exemplares de políticas de entrada serãodetalhadas mais adiante. Caso a unidade de política 1010permitir o pacote, então a carga útil juntamente com aparte MIC gerada na MIC 1025, caso habilitada, e ocabeçalho apropriado são levados ao armazenamento no FIFO1050.
A Figura 11 apresenta uma modalidade exemplar doconteúdo da tabela de estado de fluxo TX 1030. são mantidosconjuntos de parâmetros para cada fluxo. Estão ilustradosos parâmetros de um único fluxo. O tipo de pacote 1102especifica qual tipo de pacote está sendo recebido. Comoexemplo, o pacote pode ser um pacote 802.llg, e ou n. Podemser suportados outros tipos de pacotes, que podem serindicados no campo de tipo de pacote 1102.
A política de segurança 1104 indica se serãousadas técnicas de segurança (tais como codificação). Amodalidade exemplar suporta AES-CCMP (norma de codificaçãoavançada - protocolo MAC de autenticação de mensagem porencadeamento de bloco de cifra em contra modo) e RC4-TKIP(protocolo de integração de chave temporal - cifra 4 deRivest). O endereço de receptor 1106 indica o endereço MACdo receptor - para o qual se destina o pacote. 0 número deseqüência 1108 indica o número de seqüência do pacote Achave MIC 1110 identifica a chave MIC caso tkip estejahabilitado. O controle de quadro 1112 inclui informaçõespara montagem do cabeçalho apropriado.
O controle de qualidade de serviço (QoS) 1114pode ser usado para indicar o nível de QoS. Na modalidadeexemplar são mantidos quatro níveis de QoS. Exemplos degerenciamento de filas para diferentes valores de QoS serãoilustrados mais adiante.
O campo de vida útil ou validade 1116 pode serusado para indicar por quanto tempo um pacote podepermanecer no armazenador. Uma vez expirado o tempo devida, por exemplo, o pacote pode ser descartado. A ocupaçãomaxima de armazenador 1118, máximo de pacotes por fluxo1120 e pacotes acumulados por fluxo 1122 são usados, namodalidade exemplar, na política de entrada, tal como naunidade de política/policiamento 1010, exemplos dos quaisserão detalhados mais adiante com referência às Figuras 12e 13. Note-se que pode ser usada uma variável global deocupação corrente de armazenador em conjunto com estes trêsparâmetros para efetuar uma variedade de técnicas depolrciamento de entrada. 0 ponteiro de término de fila 1124e usado para identificar o nó terminal, tal como foi acimadescrito com referência às Figuras 6 e 9.
Tais variáveis ou parâmetros da tabela de estadode fluxo TX são meramente ilustrativos. Os técnicos na áreanotarão que variáveis ou parâmetros adicionais podem serúteis para a manutenção por fluxo e que podem também serincluídos. Além disso, nem todosrecursos/características necessitam ser suportados em todasas modalidades e, portanto, pode ser implementado umsubconjunto de tais parâmetros.
A Figura 12 apresenta uma modalidade exemplar demétodo 1200 para efetuar policiamento de entrada. Umadescrição mais generalizada das vantagens do policiamentode entrada será provida mais adiante com referência àFigura 34, no contexto de handoff de saída e QoS geral daWLAN. Como foi acima descrito com relação à tabela deestado de fluxo TX 1030 exemplar na Figura 11, pode sermantida uma variedade de parâmetros para cada fluxo. Taisparâmetros podem ser adequados, com base no nível de QoS,para admissão ou rejeição de pacotes mais rapidamente pelafunção de policiamento.
Apesar de estar relacionada à QoS da WLAN, estaconstitui uma técnica adicional que reconhece que, aointeragir com o ingresso de alta velocidade (o qual podeser em rajadas e compreender uma mistura de fluxos de altae baixa QoS), pode ser formado um "gargalo" na unidade deprocessamento MAC em separado do congestionamento naprópria WLAN. Como exemplo, é possivel que as funções deprocessamento MAC possam estar preenchidas com pacotes deQOS mais baixa. Sem uma politica apropriada, os pacotes deQOS mais baixa podem ser introduzidos na linha duranteépocas de congestionamento relativamente baixo, um gargalopodendo se formar caso as condições na WLAN se degradem e acapacidade de transmissão seja reduzida. Dessa forma, aunidade de policiamento 1010 pode ser configurada parapermitir que pacotes de QoS mais elevada mantenham suaprioridade durante os momentos de congestionamento relativoe pode permitir com maior liberdade que pacotes de QoS maisbaixa sejam processados quando o congestionamento forreduzido. As normas 802.11 (b, g, e, n, por exemplo) dãoatenção ao controle de QoS na WLAN, todavia sem atençãosuficiente à entrada. Portanto, caso um aplicativo de baixaQOS ocupe todos os armazenadors em uma estação, então umpacote de maior prioridade não poderá obter acesso aosistema. A politica de entrada, tal como aqui descritapode impedir tais situações e prover QoS de ponta a ponta'e nao apenas na QoS da WLAN. Os técnicos na área notarão apossibilidade de várias modalidades alternativas para asfunções de policiamento à luz dos presentes ensinamentos.
Fazendo novamente referência à Figura 12, em 1210um pacote é recebido para transmissão. Como exemplo, opacote pode ser introduzido em um processador H2W 530 e umaunidade de policiamento 1010 pode determinar se deveaceitar ou rejeitar o pacote para processamento MACadicional. Em 1220, determina-se a ID d0 pacote recebidoComo exemplo, pode ser usado o bloco de mapeamento de fluxo020. Em 1230, acessar parâmetros de policiamento e/ou umafunção de policiamento associada à ID de fluxo. Em Umamodalidade exemplar, tais parâmetros podem estararmazenados na tabela de estado de fluxo TX 1030 e podemincluir a ocupação máxima do armazenador 1118, o máximo depacotes por fluxo 1120 e os pacotes acumulados por fluxo1122. Na tabela de estado de fluxo TX 1030 exemplar daFigura 11 nâo e mostrada a possibilidade de que umaPluralidade de funções de policiamento pode serespecificada (e talvez parâmetros alternativos associados àmesma), com diferentes funções de policiamento usadas paradiferentes fluxos. No bloco de decisão 1240, caso aaceitação do pacote recebido atenda à função depoliciamento apropriada especificada para o fluxo, deacordo com os parâmetros específicos do fluxo e quaisquervariáveis globais relacionadas ao congestionamento correnteou a outras condições do sistema, passar a 1250 e admitir opacote. Caso contrário, Dassar a iocn passar a 1260 e rejeitar o pacote.
A seguir, o processo pode parar.
A Figura 13 ilustra uma modalidade exemplar de ummétodo 1300 de uma função de policiamento, adequado paraimplementação como a etapa 1240 na Figura 12. Como foiacima descrito, os parâmetros de ocupação raixi„a dearmazenador e máximo de pacotes por fluxo podem serajustados para cada fluxo individual. Eles podem estarassociados aos níveis de QoS do fluxo. Note-se, namodalidade exemplar, que são implementados quatro níveis deQos. No entanto, tais parâmetros podem ser dimensionados demodo a acomodar uma variação maior do que os níveis de QoSpredefinidos. Dessa forma, em algumas modalidades, a funçãode policiamento pode ser implementada com uma "granulação"mais fina do que em uma situação exemplar de QoS. Nopresente exemplo, o bloco de decisão 1240, ao pode sechegar a partir do 1230 quando implementado tal comomostrado na Figura 12, determina se deve ou não seradmitido um pacote (passando ao bloco 1250 ou 1260respectivamente, quando implementados tal como mostrado nlFigura 12).
O teste exemplar no bloco de decisão 1240compreende dois termos. O atendimento a um dos termospermite que o pacote seja aceito. Caso ambos não sejamatendidos, o pacote é rejeitado.
O primeiro termo pode ser considerado como umindicador de congestionamento no interior da unidade deprocessamento MAC. Quando a unidade de processamento MACestiver relativamente nào congestionada, o primeiro termosera verdadeiro com maior probabilidade, mesmo para pacotesde menor prioridade e, portanto, os pacotes maisprovavelmente serão admitidos. No exemplo apresentado, oprimeiro termo é verdadeiro quando a ocupação corrente doarmazenador for menor do que a ocupação máxima doarmazenador. Neste caso a ocupação corrente do armazenadorconstitui uma variável global disponível para o processo, aqual indica a ocupação total do armazenador de pacotes
Note-se que a ocupação máxima de armazenador pode serajustada de forma diferente para diferentes fluxos, levandoassim o primeiro termo da declaração OU a ser mais ou menosrestringente, conforme desejado. Como exemplo, um fluxo dealta Q0S pode possuir um ajuste de ocupação máxima dearmazenador mais elevado, portanto a admissão será maisprovável. Em contraste, um ajuste mais baixo de ocupaçãomáxima de armazenador irá reduzir a probabilidade deadmissão. Dito de outra forma, a ocupação máxima dearmazenador pode ser especificada por fluxo, o que permitenoções diferentes do significado de congestionamento combase no tipo de fluxo.
O segundo termo irá de um modo geral governarquando ocorre congestionamento relativo. Neste casopredominam as informações por fluxo. No exemploapresentado, o segundo termo é verdadeiro caso os pacotescorrentes por fluxo para o fluxo em questão sejam menos doque o número máximo de pacotes por fluxo especificado.
Especificamente, o máximo de pacotes por fluxo pode serajustado para o fluxo de tal forma que fluxos de maiorprioridade recebam um valor mais elevado e fluxos de menorprioridade recebam um valor mais baixo. Dessa forma, quandoa ocupação corrente de armazenador esteja relativamentecongestionada (portanto o primeiro termo não sendoverdadeiro), pacotes de prioridade mais elevada, possuindoum numero máximo de pacotes por fluxo mais elevado, serãomais provavelmente admitidos. O máximo de pacotes por fluxopara menor prioridade pode ser tornado mais baixo. Dessaforma, em lugar de restringi-los completamente,relativamente poucos dos pacotes de menor prioridade serãoadmitidos. Em uma modalidade alternativa, os pacotesacumulados por fluxo podem ser computados com um valor detempo (o valor de tempo pode variar entre fluxos) paragerar uma taxa de pacotes para um fluxo. O máximo depacotes por fluxo pode então ser ajustado de forma similarpara uma taxa de pacotes por fluxo. São contemplados váriosparâmetros alternativos e condições correlacionadas para aadmissão ou rejeição de pacotes, o que ficará claro para ostécnicos na área à luz dos presentes ensinamentos.
Note-se que tais parâmetros não necessitampermanecer estáticos e podem ser atualizados com base emoutras condições do sistema (por exemplo, qualidade deenlace e taxas associadas, tal como indicado no feedback detaxa proveniente da PHY). Os técnicos na área notarão apossibilidade de vários ajustes para cada uma das variáveise notarão que tais ajustes podem ser modificados dediversas formas em resposta a condições mutáveis nosistema.O resultado final é o de que uma função depoliciamento eficaz pode ser implementada de formaeficiente na velocidade de Iinha pela mera recuperação deparâmetros por fluxo a partir da tabela de estado de fluxoTX 1030, e uma decisão pode ser tomada rapidamente paraoada pacote recebido. Note-se que a admissão ou rejeição depacotes de acordo com uma função de policiamento de entradapodem ser combinadas com qualquer técnica de controle defluxo, exemplos da qual são bem conhecidos pelos técnicosna area, de tal forma que taxas variáveis de processamentode pacotes podem ser efetuadas sem perda de pacotes. Em umamodalidade, pode ser recebido um identificador de fluxoantes da recepção de um pacote inteiro em uma interfaceexterna para permitir que seja efetuada a decisão depolítica de entrada, evitando-se o uso de amplitude debanda da interface para receber um pacote quando o pacotefor receitado.
Em suma, este exemplo ressalta varias opções parao policiamento. Sob carga elevada, um único fluxo ,mesmoque se3a um fluxo de alta prioridade, pode ser impedido dedominar os recursos, permitindo concomitantemente maioracesso a fluxos de maior prioridade. Sob carga levedecisões menos restritivas podem permitir que fluxos dlbaixa prioridade utilizem os recursos, uma vez que eles nãoestão sendo usados no momento. Λ política de entrada podeser qualquer função das quatro variáveis descritas ,emodalidades alternativas podem utilizar outras variáveis ouparâmetros,. o policiamento pode ser usado paraigualdade/justiça, para permitir pelo menos algum acessopara todos os tipos de fluxos, mesmo que outros sejampreferidos em qualquer grau que seja desejado. As políticaspodem também ser usadas para gerenciar uma baixa qualidadedo enlace. Independentemente de ser desejado qualidade deenlace ou ajuste de congestionamento, ou uma combinação deambos, os mesmos (ou similares) parâmetros podem serusados.
Fazendo novamente referência à Figura 10a asaida do FIFO 1050 é levada ao bloco de fragmentação 1060note-se que o FIFO 1050 pode incluir um ou mais pacotes queforam aceitos, juntamente com seus respectivos headers euma computação MIC, caso se aplique. Λ fragmentação podeser efetuada dependendo do tipo de pacote. Como exemplo, afragmentação pode ser habilitada para a 802. Ile ou g ouqualquer outro tipo de pacote,
Fue pacote para o qual seja desejada afragmentação. Na modalidade exemplar, uma variável globalo limite de fragmentação (FT), é ajustada através da funçãode gerenciamento do ponto de acesso ,ela é um elemento decapacidade ajustado no quadro de sinalizador. Ela de umgeral "â° SS durante periodos de tempocurtos. 0 firmware pode ajustar o Ximite de fragmentação emCaso um pacote supere o Iimite defragmentação, se particiona o pacote em fragmentos dentrodo porte do ft com um possível fragmento parcial residual
Note-se que a fragmentação não é necessária. Emuma modalidade alternativa, o fragmento !060 e todas asfunções relacionadas podem ser omitidos. Em outramodalidade alternativa, detalhada mais adiante comreferência à Figura 48, pode ser implementado mais de umbloco de processamento MAC. Em tal modalidade, um bloco deprocessamento MAC pode estar equipado para efetuar afragmentação, enquanto outro bloco de processamento MAC nãoestaria equipado para tal. Em um caso, os pacotes de altavelocidade podem não demandar ou suportar a fragmentação epodem ser processado em um processador H2W 530 sem o blocode fragmentação 1060, enquanto o suporte para outros tiposde pacotes incluindo fragmentação (tais como pacotes 802 11legados) pode ser provido em um processador MAC adicionaltal como o processador MAC 4810 detalhado mais adiante Ostécnicos na área notarão prontamente as vantagens edesvantagens ao implementar uma modalidade incluindo umúnico processador capaz de processar todas as funções devários tipos de pacotes, e outra modalidade compreendendodois ou mais processadores MAC, cada um capaz de proverqualquer subconjunto de funcionalidades. Naturalmente, podetambém ser implementado um único processador MAC capaz deprocessar pacotes requerendo um único conjunto defuncionalidades.
O bloco de fragmentação 1060 determina o númerode fragmentos com base no limite de fragmentação e nocomprimento do pacote. 0 número de fragmentos é levado aobloco de listar funções 1065, que retorna ponteiros para obloco de fragmentação 1060. Quando a fragmentação não estáhabilitada, ou caso o limite de fragmentação não sejasuperado, o número de fragmentos será um e um únicoponteiro de nó e seus associados um ou mais ponteiros serãoretornados. O bloco de listar funções 1065 efetua váriosprocedimentos de lista interligada, aplicáveis para aestrutura de memória implementada (tal como acima descritona Figura 6). Note-se que, como mostrado, a cache deponteiros de nós 810 e a cache de ponteiros de blocos 820residem no bloco de listar função, por exemplo. Dessaforma, um grupo de ponteiros disponíveis pode ser tomado apartir do grupo disponível em cada cache. Os detalhes cecomo atualizar e preencher tais caches não sãoapresentados, porém ficarão claros para os técnicos na áreaa luz dos presentes ensinamentos. Conceitualmente, tal comomostrado na Figura 10a, um certo número de fragmentos podeser enviado para a lista de funções 1065 e um grupo deponteiros 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 ouponteiros de grupo associados podem ser retornados. Em umamodalidade alternativa, pode ser efetuada uma funçãosimilar pelo bloco de fragmentação 1060, em que chamadasrepetidas à função de lista 1065 são efetuadas para cadafragmento até que todo o pacote tenha sido fragmentado. Amedida que cada ponteiro é retornado, a ocupação dearmazenador total variavel e incrementada de acordo com onumero de blocos ou pacotes. A ocupação de armazenadorpoderia ser ou medida na modalidade exemplar e modalidadesalternativas podem usar medidas alternativas.
A Figura 14 apresenta uma modalidade exemplar deFIFO 1050. O FIFO 1050 inclui uma ou mais unidades de dadosde serviço MAC (MSDU, 14Z0a a n. Cada MSDU compreende umcabeçalho 1430, uma carga útil 1440 e uma computação MIC(Caso seja usado tkiP)' tal como acima descrito Emuma modalidade, dados de controle podem ser adicionados acada MSD0 no FIFO 1050, que pode ser retroaümentado apartir do bloco de fragmentação !060, tal como acimadescrito. Em uma modalidade alternativa, informações decontrole não são mantidas no FIFO 1050. Note-se que asinformações de controle adicionadas para uso no processadorH2W 530 serão extraídas antes de gravar o pacote na memóriade armazenador de pacotes.
Caso não seja necessária qualquer fragmentaçãoentão a MSOU pode ser armazenada diretamente no armazenador1062. Ela pode ser armazenada com o ponteiro de nóponteiros de blocos recuperados a partir da listafunções 1065. A lista de funções fornece o número eendereços de blocos para cada pacote, a carga útil dopacote (e portanto as cargas úteis do grupo) é gravada namemória nos endereços correspondentes. Caso seja desejada afragmentação então cada fragmento que é criado é tambémarmazenado no armazenador 1062.
O conteúdo do armazenador 1062 é levado àgravação de memória 1070. A gravação de memória 1070interage com o árbitro de memória 1080, que compete poracesso memÓrÍa de armazenac^or de pacotes para realmentealimentar o pacote e/ou fragmentos no armazenador depacotes. Note-se que o árbitro de memória 1080 pode serimplementado na forma de um dos árbitros de memória 556 ou552, tal como mostrado na Figura 5, dependendo daconfiguração do ASIC de processador MAC 310.
O árbitro de memória 1080 recebe uma requisiçãoproveniente da gravação de memória 1070 e pode receberoutras requisições provenientes de outros componentescompetindo por acesso à memória de armazenador de pacotes.
Quando o acesso é concedido, uma concessão será retornadapara a gravação de memória 1070 e o pacote e/ou fragmentossao gravados na memória de armazenador de pacotes. Ummétodo similar àquele descrito na Figura 9 pode ser usadopara efetuar a gravação na memória. Como exemplo, o nó écriado e preenchido com os dados correntes, incluindo ocomprimento e ponteiros de blocos, etc., tal como descrito.
Os blocos são a seguir gravados em acessos de 64 bytes, namodalidade exemplar, até que cada grupo de 512 bytes estejapreenchido. A gravação de memória 1070 continua a efetuarrequisições até que todo o pacote, incluindo todos osfragmentos, se algum existir, sejam gravados na RAM Osponteiros usados para entrelaçar o pacote na filaapropriada são recuperados conforme o ponteiro de nó para opacote (ou ponteiros de nós para cada fragmento), bem comoo ponteiro de término de fila para identificar o último nóna fria (a posição em que novos pacotes subseqüentes e/oufragmentos serão anexados).
Em uma modalidade, um árbitro de memória receberequisições provenientes de uma máquina de estado deentrada, uma máquina de estado WLAN TX, uma máquina deestado WLAN RX e uma máquina de estado de saida. Ele podearbitrar entre tais requisições por meio de prioridades -um exemplo consistindo na seguinte ordem de prioridades·WLAN RX, WLAN TX, entrada e saida. As máquinas de estadopodem necessitar todo o pacote a ser lido/recuperado ougravado. Em outras ocasiões, as máquinas de estado podemapenas estar procurando por um ponteiro de nó, um ponteiroOe grupo e/ou outras informações de controle, de modo aefetuar a programação e outras funções. Pode serestabelecido um sistema de prioridades cobrindo leituras egravacoes de pacotes e controle para finalidades de WLANRX/TX e entrada/saida.
OS fluxos são estabelecidos quando umaespecificação do fluxo, isto é, uma T-SPEC) for efetuadapor uma estação, «este momento, o firmware pode estabeleceruma entrada em todas as tabelas relacionadas ao fluxo. Elepode também popular/preencher um ponteiro de cabeça (eportanto, um primeiro pacote) para tal fluxo. Os técnicosna area conhecerão vários outros métodos para manter ocontrole de novas filas e nan, mas e para atualizar ponteiros demicro de fila associados.
Na modalidade exemplar, o árbitro de memóriarestringe o acesso à memória a um número limitado de bytes(por exemplo, de modo a permitir a outros componentesigualdade de acesso à memória de armazenador de pacotes. Emuma modalidade expmnlarexemplar, um acesso Round Robin é concedidoa memória entre requisições de gravação de engravações WLAN RX e saida WLAN TX (isto é, handoff,detalhado mais adiante). Como exemplo, uma MPDU de 1500ita latência para outros queaguardam acesso, caso toda a HPDU fosse gravada em umacorrente sem interrupção. Um programa, tal como um aRound Robin, impede a parada em outros processos.
A Figura 15 ilustra o processo de dividir umaMSDU 1410 °U maÍS bentos (cada um dimensionado deacordo com o limite de fragmentacãoldymenraçao), mais um possivelfragmento residual. Neste exemnlo Le exemplo, o controle 1420 éomitido. Em uma modalidade alternai
Alternativa, o controle 1420poderia ser simplesmente pré-anexado ao primeiro CabegaIho1510, tal como mostrado. As informações de controle podemincluir ponteiros, ou quaisquer outras informações decontrole, que podem ser pré-anexadas a cada cabeçalho 1510,podendo ser extraídas antes de completar uma gravação dlmemó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 umaparte da carga útil 1440 proveniente da MSDU. Cadacabeçalho 1510 inclui o número de seqüência 1540, que é onúmero de seqüência do pacote, e um número de fragmento1550, que é o número associado a cada fragmento individual.
Na modalidade exemplar, após ser efetuada afragmentação, cada fragmento é subseqüentemente tratadocomo um pacote. Isto permite o processamento eficiente depacotes e fragmentos através das várias técnicas deprocessamento MAC aqui descritas. Modalidades alternativasnão necessitam compartilhar tal exigência. 0 fragmentofinal 1530n inclui o MIC 1450, caso seja usado tkip. Note-se que, na modalidade exemplar, o MIC foi computado sobre opacote antes da fragmentação pelo MIC 1025.
A Figura 16 apresenta uma configuração conceituaido árbitro 556 em conjunto com duas ou mais gravações dememória 1610a a 1610n. Uma gravação de memória 1610 poderiaser a gravação de memória 1070 acima descrita, ou uma dasvárias outras detalhadas mais adiante. Cada bloco degravação de memória envia uma requisição 1630 para oárbitro 556. O árbitro 556 envia uma linha de concessão1640 para cada bloco de gravação de memória indicandoquando se inicia a gravação de memória. O árbitro 556 podetambém controlar o MUX 1620 para selecionar a saida docomponente de gravação de memória concedido para entrega aocontrolador SDRAM 1650. Como exemplo, o controlador SDRAM1650 pode ser a interface SDRAM 562 no exemplo apresentadona Figura 5, ou pode incluir quaisquer outros componentesacoplados à SDRAM 340. Note-se que um esquema de arbitragemsimilar pode ser implementado para um árbitro de memória552 de modo a gravar pacotes na memória de pacotes deum
acordo com os modos de configuração selecionados. Váriosesquemas de arbitragem de memória são conhecidos pelostécnicos na área, qualquer um dos quais pode serimplementado em várias das presentes modalidades. Em umamodalidade exemplar, o controlador é de um modo geralseguido por uma interface. 0 controlador pode controlar alógica de leituras e gravações na memória, enquantointerface provê a conexão física. A Figura 16 serve comoexemplo ilustrativo.
PROCESSAMENTO DE TRANSMISSÃO
Na seção anterior, foram descritas váriasmodalidades ilustrando aspectos para o processamento MACeficiente de pacotes de entrada, utilizando váriasestruturas de dados, para aguardar a transmissão. Napresente seção de processamento de transmissão, ficarãoclaras outras eficiências obtidas pelo uso das estruturasde dados acima descritas. Além disso, serão introduzidosoutros aspectos que aumentam a eficiência para oprocessamento MAC de alta velocidade.
De um modo geral, um ponto de acesso capaz desuportar vários fluxos para múltiplas STAs propicia umaanálise mais complexa do que uma STA relativamente simplessuportando 16 fluxos. Dessa forma, em muitas dasmodalidades detalhadas a seguir, o ponto de acesso maiscomplexo será usado como uma referência. Quando necessário,serão ressaltadas as diferenças entre uma STA e um ponto deacesso. É de um modo geral desejável no processamento detransmissão a capacidade de acomodar um alto número defluxos e ainda responder rapidamente quando oportunidadesde transmissão se tornam disponíveis. Além disso, pode serimportante o suporte a especificações de transmissãoherdadas. Alguns aspectos são ressaltados devido à reduçãona área de circuitos, uso mais eficiente dos circuitos,simplicidade de projeto e/ou a capacidade de interação comprotocolo e componentes legados.Um exemplo que ilustra a necessidade pararesposta pronta quando surge uma oportunidade detransmissão inclui o protocolo de transporte de economia deenergia automática não programada (UAPSD). Outro exemplo éo de ACK imediata de bloco. As modalidades detalhadas aseguir propiciam suporte eficiente para múltiplos fluxospara manter um subconjunto de pacotes pronto para respostarapida. Isto permite o suporte para UAPSD, ACK imediata deblocos e transporte imediato quando é obtida uma TXOP. Istoirá, na maioria dos casos, impedir a necessidade detécnicas usadas anteriormente para reserva de amplitude debanda, tal como no auto envio de CTS, etc. Como exemplocaso o congestionamento no acesso à memória impede apreparação de um grande agregado, um pequeno conjunto depacotes pode ser rapidamente transmitido durante uma TXOP
Uma vez recebida uma ACK para tal conjunto de pacotes, casoexista capacidade remanescente na TXOP, podem sertransmitidos pacotes adicionais. Como foi acima mencionadoa remoção de firmware das partes de alta velocidade doprocessamento de pacotes aumenta a eficiência. Emmodalidades exemplares, podem ser implementados váriascaches e filas para desacoplar o processamento de firmware(e sua velocidade relativamente menor) do processamentoMAC. Estes e outros aspectos serão ilustrados em váriasmodalidades a seguir.
Nas modalidades exemplares detalhadas a seguirestão ilustrados vários aspectos. Em um aspecto, Iimplementada uma pluralidade de caches, cada um deles usadopara armazenar elementos associados a pacotes de um fluxoTais caches (ilustrados pelas caches de nós 1810, a seguir)permite tempos de resposta de baixa latência em umavariedade de aplicações. A resposta de baixa latênciapermite a uma estação ou ponto de acesso fazer usoeficiente de oportunidades de transmissão de vários tipos,tais como concessões de direção inversa/reversa, UAPSD 1requisições similares, e ser capaz de captar umaoportunidade de transmissão remanescente após umatransmissão. A resposta de baixa latência facilita o escapede colisões ou conflitos (por exemplo, uma resposta bemsucedida a um alerta (prompt) em uma oportunidade detransmissão precoce pode evitar uma colisão causada pelacompetição que iria ocorrer em uma tentativa de respostatardia). A resposta de baixa latência pode facilitareconomias de energia.
Em °Utr° asPecto, filas ocultas (designadas maisadiante como filas "pingpong" e definidas por uma fila emespera e uma fila em serviço) permitem o enfileiramento deelementos de um fluxo em antecipação a uma oportunidade detransmissão (mesmo quando outro fluxo estiver sendoprocessado para transmissão). Dessa, forma, o fluxo ficaaguardando, pronto para ser processado. Isto facilita opostergar o processamento para tão tarde quanto possível Apostergação é amiúde desejável para permitir postergar umadecisão de taxa para um fluxo, pois então a decisão sobre ataxa será tão recente e atualizada quanto possívelpermitindo que a taxa apropriada seja selecionada paramaximizar 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, facilitaa rápida determinação de comprimento para formação de umpacote (útil para a determinação postergada de taxa), bemcomo a pronta agregação de pacotes. Além da agregação emgeral, os aspectos ilustrados facilitam a retransmissão(isto é, em resposta a uma confirmação de bloco recebida).
Tais aspectos são separadamente desejados em várioscontextos, podendo também ser combinados.
Em sistemas 802.11 herdados, é tipicamenteprovido o suporte a quatro filas EDCA. Note-se que as filasEDCA competem por acesso durante períodos não programadosno 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 backoff/recuo para impedir tentativas contínuas
e simultâneas de obtenção de uma TXOP por filas EDCA emcompetição. Dessa forma, cada fila EDCA pode ser associadaa um canal, para o qual são mantidos vários temporizadores,e efetuada a avaliação ou confirmação de canal limpo (cca)e efetuados outros procedimentos para obtenção de acessoAlgumas dessas funções podem ser compartilhadas por canaisou frias, e algumas podem ser diferentes. Em um dispositivode comunicação sem fio, tal como um ponto de acesso, quedeseja suportar vários fluxos simultaneamente (por exemplo256 fluxos em uma modalidade exemplar), pode não serdesejável a manutenção de temporizadores de backoff eefetuar os vários overheads associados à obtenção de TXOPspara cada um de um grande número de fluxos. Diferentesajustes para os vários parâmetros de um tipo de canal podemresultar no provimento de diferentes níveis de qualidade deserviço.
A Figura 17 apresenta uma modalidade exemplar deuma parte de um dispositivo de comunicação sem fioconfigurado para suportar uma pluralidade relativamentegrande de filas EDCA 1710 usando um conjunto fixo, menorde filas EDCA padrão 1730. Em uma aplicação, pode serimplementada uma pluralidade de filas EDCA, cada umaprovendo um diferente nível de qualidade de serviço. Nesteexemplo é mantida uma pluralidade de N filas EDCA 1710a a ηpor estação. Na modalidade exemplar, podem ser mantidas 256de tais filas para cada um dos 256 fluxos suportados. 0seletor Round Robin 1720 arbitra entre as filas EDCA porestação e seleciona dados a serem enfileirados em uma de 4filas EDCA padrão 1730a a d. Em uma modalidade alternativa,um algoritmo de programação alternativo, além do RoundRobin, pode ser efetuado por um seletor 1720. Um seletorpode ser implementado de várias formas, um exemplo dasquais será detalhado a seguir na Figura 18. Na modalidadeexemplar, o firmware inclui uma função de programação queprovê os critérios de seleção por fila de estação EDCA paratransporte usando uma das filas EDCA padrão. Em modalidadesalternativas, naturalmente, pode ser suportado qualquernúmero de filas EDCA. Quatro filas são implementadas em umamodalidade devido à disponibilidade de componentes deprocessamento herdados existentes, com os temporizadores ecomponentes de avaliação de canal necessários para competirpor e obter acesso ao canal compartilhado. Os técnicos naárea conhecerão vários núcleos e componentes 802.11 legadosque podem ser incluídos em várias das presentesmodalidades, ou modificados para suportar recursosadicionais desejados. Modalidades exemplares utilizandocomponentes e/ou núcleos legados de acordo com osprincípios aqui descritos serão detalhadas mais adiante.
Os pacotes programados nas filas EDCA 1730a a dpodem ser transmitidos usando-se procedimentos EDCA padrão.Um programador de firmware pode efetuar programaçãoadicional além da EDCA, tal como TXOPs agrupadas (umexemplo das quais é conhecido no protocolo HCCA). Váriosoutros protocolos podem ser desenvolvidos, para os quaispode ser adaptado um programador, como será do conhecimentodos técnicos na área.
Além da seleção rotativa das filas EDCA 1710 paratransmissão com filas padrão, é de um modo geral maiseficiente agregar pacotes para cada STA e efetuar odirecionamento Eigen (ou outro processamento espacial) paratodos os pacotes provenientes de tal estação. 0direcionamento Eigen propicia o maior benefício quando astransmissõ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 pacotesdestinados a uma dada estação em um armazenador, de modo aque eles possam ser agregados e transmitidos para talestação. É possível, em uma modalidade alternativa, se terum único armazenador para todos os pacotes EDCA. Noentanto, em tal caso, quando os pacotes estiveremintercalados com aqueles de outras estações (com outrosvalores de direcionamento Eigen) então a agregação pode serdifícil ou impossível.
O uso de filas EDCA é meramente ilustrativo. Deum modo geral, pode ser implementada uma seleção de filas,associada a canais de vários tipos. Os tipos de canal podemvariar com base no nível de qualidade de serviço e/ou tipode transmissão, tal como, por exemplo, acesso programado oucom base em conflito.
A Figura 18 apresenta uma modalidade exemplarilustrando vários componentes de um núcleo MAC inferior540. No exemplo a seguir serão ilustrados vários aspectospropiciando eficiências para o uso de nós paraprocessamento de pacotes, filas e caches para desacoplar ofirmware da velocidade de processamento de pacotes. Ostécnicos na área notarão que podem ser implementadoscomponentes adicionais (não são mostrados) e que nem todosos aspectos ou recursos ilustrados são necessários emqualquer modalidade específica para obtenção das vantagensde outros aspectos e recursos. Os detalhes da Figura 18ilustram a programação de fluxos e a identificação devários pacotes finalmente programados para transmissão. 0resultado final consiste do transporte dos identificadoresassociados aos pacotes programados, parâmetros associados eum sinal de "pronto" para cada tipo de canal para imecanismo de transmissão (TX) 1880. Na presente modalidade,a identificação de pacotes é efetuada usando-se nós, talcomo foi acima descrito. Neste exemplo, são usados canaisdo tipo 802.11 legados com o propósito de ilustração. Ostécnicos na área notarão que qualquer tipo de canal podeser acomodado usando-se componentes similares detalhados naFigura 18. Neste exemplo, são mantidas quatro filas EDCA,as EDCA 0 a 3 1850a a d. Uma fila EDCA 1855 é tambémimplementada juntamente com um canal de controle de difusão(broadcast) 1860. A estrutura da EDCA 0 está ilustrada emmaiores detalhes, com alguns detalhes sendo omitidos paraos outros canais, uma vez que eles podem ser iguais ousimilares em várias modalidades.
A programação da transmissão se inicia com ofirmware preenchendo uma ou mais listas de comandos 1815associadas a cada canal (1850 ou 1855, por exemplo). Aslistas de comando são preenchidas com IDs de fluxos a seremprogramados. A lista de comandos pode conter uma ID defluxo juntamente com uma TXOP. Para as filas EDCA, a TXOPserá disputada e, portanto, o instante/tempo de transmissãopode não ser conhecido antecipadamente. No entanto, umtamanho máximo de TXOP pode ser incluído juntamente com aID de fluxo. Para a programação HCCA, o tamanho da TXOPpode ser conhecido, bem como o instante de entregaprogramado, tais informações TXOP podem ser incluídas com aID de fluxo em uma lista de comandos 1815 associada. Paracada canal, um controlador de arranjo 1840 pode controlar aprogramação de pacotes para o canal o controlador dearranjo extrai uma ID de fluxo a partir da lista decomandos 1815 para determinar o próximo fluxo programadopara transmissão. A manutenção de várias dessas listas decomando permite ao programador de firmware efetuar um grupode decisões de uma só vez e coloca-las nas respectivaslistas, que podem ser efetuadas ao longo do tempo. Istopermite aos vários controladores de arranjo 1840 processaras IDs de fluxo provenientes das listas, reduzindo anecessidade de interação com o firmware. Isto permite umaredução ou eliminação de interrupções ao firmware edesacopla a programação do firmware do processamento MAC,tal como foi acima descrito. Os técnicos na área poderãofacilmente adaptar técnicas alternativas para programaçãodos fluxos para serviço em um conjunto de canaissuportados, incluindo canais com base na competição tipoEDCA 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 fluxossuportados. Os caches de nós TX 1810 servem como exemplo decaches gerais por fluxo e são adequados para implementaçãocomo as filas 1710 acima ilustradas. Na modalidadeexemplar, serão mantidos 256 de tais fluxos. Cada cache defluxos compreende espaço para uma pluralidade de nós (querepresentam os respectivos pacotes para o fluxo). Namodalidade exemplar, são mantidos quatro nós para cadafluxo em cada cache de nós TX 1810. Dessa forma, pelo menosquatro pacotes são identificados como os próximos a seremtransmitidos para cada um dos 256 fluxos. Qualquertransmissão imediata necessária para tais fluxos pode seratendida por pelo menos tais quatro nós. Em modalidadesalternativas, podem ser suportados nós adicionais, casodesejado.
Apesar de serem usados nós nesta modalidadeexemplar para ilustrar um aspecto, existem várias técnicasequivalentes que podem ser implementadas. Como exemplo,poderiam ser colocadas em cache estruturas de dadosalternativas. Como outro exemplo, o próprio pacote poderiaser colocado em cache. De um modo geral, as cachesilustrados como a pluralidade de caches 1810, serão usadospara armazenar um ou mais elementos a partir dos quais umou mais respectivos pacotes podem ser identificados erecuperados após o processamento dos elementos em cache.
A atualização de cache de nós TX 1835 interagecom as caches 1810 para mantê-los preenchidos eatualizados. A atualização de cache de nós TX 1835 podeinteragir com um árbitro de memória, tal como o árbitro dememória 1080 acima descrito. Em uma modalidade, é efetuadauma requisição para recuperação de um ou mais nós parafluxos e, quando o acesso é concedido ao armazenador depacotes, os nós recuperados podem ser colocados narespectiva cache de nós TX 1810. A atualização de cache denós TX pode ser operada de forma relativamente autônoma dorestante do processamento apresentado na Figura 18.
Os controladores de arranjo 1840 para cada canaldeterminam a próxima ID de fluxo para transmissão a partirda lista de comandos 1815. A partir da ID de fluxo, ocontrolador de arranjo 1840 acessa uma tabela de estado dearranjo TX 1830 para recuperar vários parâmetros e/ouarmazenar o estado associado a tal ID de fluxo. Dessaforma, o estado de arranjo TX 1830 mantém informações deestado por fluxo para os fluxos suportados. Note-se que, emuma modalidade alternativa, a tabela de estado de arranjoTX 1830 pode ser combinada com qualquer outra tabela deestado por fluxo, tal como a tabela de estado de fluxo TX1030, acima descrita). Note-se também que a atualização decache de nós TX 1835 também interage com a tabela de estadode arranjo TX 1830 para atualizar certos parâmetrosassociados à atualização de cache, ilustrado mais adiante.
Como exemplo, a atualização de cache de nós TX 1835recupera nós para o fluxo com base na respectiva fila detransmissão do nó.
O controlador de arranjo 1840 utiliza o estadopor fluxo para o fluxo programado para preencher seurespectivo arranjo de nó TX 1842 (uma ilustração de umafila). O arranjo de nó TX 1842 é um arranjo de nós para ofluxo seqüenciado em ordem de transmissão para transporteao mecanismo TX 1880. Como mostrado, o conjunto de nósarmazenado na cache de nós TX 1810 para o fluxo programadocorrente, identificado pela lista de comandos 1815, élevado ao arranjo de nó TX 1842 para o canal através doqual o fluxo está programado para transmissão. Isto permitea programação de um conjunto de nós conhecidosimediatamente quando a transmissão se torna disponível. Namodalidade exemplar, quatro nós estão disponíveis para cadafluxo a ser colocado no arranjo de nó TX 1842. 0 resto doarranjo de nó TX 1842 pode ser preenchido com nósadicionais para um fluxo. Em uma modalidade exemplar, osarranjos de nó TX 1842 mantêm 64 identificadores depacotes, isto é, nós, de cada vez para entrega programadaatravés do mecanismo TX 1880. Os primeiros quatro sãorecuperados a partir da cache de nó TX do fluxo e ospacotes remanescentes são recuperados a partir da memóriade armazenador de pacotes. De forma similar a outrosacessos à memória de armazenador de pacotes, podem serefetuadas requisições para recuperação de nós para o fluxoa partir da memória de armazenador de pacotes (os detalhes-não são mostrados). Em uma modalidade alternativa, umarranjo de nós pode ser preenchido diretamente a partir doarmazenador de pacotes sem primeiramente se recuperarelementos a partir de uma cachetal como o cache 1810 Emmais outra modalidade, as caches 1810 não necessitam sernem mesmo implementados, e os aspectos ilustrados pelosarranjos de nós 1842 podem ainda ser utilizados.
0 controle de arranjo 1840, as listas de comandos1815 e componentes relacionados constituem exemplos decomponentes que podem ser incluídos em um seletor (tal comoacima descrito com referência à Figura 17) para selecionarelementos dentre uma pluralidade de caches (isto é, 1810) earmazena-los em uma dentre uma pluralidade de filas (talcomo ilustrado pela fila 1842 e filas EDCA e HCCA 1850 e1855 respectivamente). De um modo geral, pode serselecionado qualquer número de caches por fluxo ou filaspor fluxo (isto é, uma fila de transmissão em umarmazenador de pacotes) por um seletor para armazenarelementos em uma fila tal como o arranjo de nó 1842, ou emuma dentre uma pluralidade de tais filas, com base emquaisquer fatores desejados (tais como qualidade deserviço, tipo de canal e similares).Na modalidade exemplar, como foi acimamencionado, é desejada a operação autônoma da atualizaçãode cache de nós TX 1835, separada dos vários controladoresde arranjo 1840 preenchendo os arranjos de nó TX 1842 paraentrega ao mecanismo TX 1880. No entanto, de tempos emtempos pode ser possível que a cache de nós TX para orespectivo fluxo possa necessitar atualizaçãoaproximadamente ao mesmo tempo em que um controlador dearranjo 1840 esteja acessando pacotes provenientes da filapara tal fluxo a partir da memória de armazenador depacotes. Dessa forma, pode ser definida uma função deintertravamento para impedir que o controlador de arranjo1840 ou a atualização de cache de nós TX 1835 corrompam afila de transmissão, impedindo ou a duplicação ou odescarte de pacotes provenientes de tal fila. Váriastécnicas de intertravamento serão conhecidas pelos técnicosna área e uma modalidade exemplar será detalhada maisadiante com referência à Figura 20.
Um aspecto adicional pode ser incorporado aosvários canais, tais como os canais EDCA 1850, o canal HCCA1855, ou o canal de controle de difusão 1860. Na modalidadeexemplar, o arranjo de nós TX 1842 é implementado na formade dois arranjos de nós ocultos. Dessa forma, um primeiroarranjo de nós TX oculto pode ser preenchido com nós paraum fluxo programado e um sinal de "pronto" pode ser enviadoao mecanismo TX 1880. o controlador de arranjo 1840 pode aseguir extrair a próxima ID de fluxo a partir de sua listade comandos 1815 e efetuar o processamento necessário paracarregar um segundo arranjo de nós TX oculto com pacotespara o próximo fluxo. Dessa forma, um arranjo de nós TXpode ser processado para transmissão enquanto o outroestiver sendo preenchido, reduzindo uma possível latênciaassociada à espera para que uma transmissão se completeantes de iniciar um novo processo de preenchimento dearranjo de nós. Uma ID de enlace 1844 é associada aoarranjo de nós TX 1842 de forma a que o mecanismo TX 1880possa recuperar os parâmetros de enlace e estadoapropriados para uso na transmissão do fluxo através doenlace físico real entre duas estações. Quando forimplementada uma cache oculta ou pingpong como acimadescrito, a ID de enlace 1844 armazena uma ID de enlace Apara o fluxo contido em um arranjo de nó TX oculto e a IDde enlace B contém a ID de enlace para o fluxo em umsegundo arranjo de nó TX oculto. Em uma modalidadealternativa, outros parâmetros podem também ser armazenadosjuntamente com a ID de enlace em 1844, associados a cadafluxo respectivo.
Os dois arranjos de nós ocultos constituemilustrações de um aspecto geral de filas ocultas oupingpong. De um modo geral, uma fila pode corresponder a umtipo particular de canal, tal como um canal EDCA ou HCCA.Cada canal pode possuir um nível de qualidade de serviçoassociado, selecionado dentre uma pluralidade de níveis dequalidade de serviço. A fila neste exemplo compreende duasfilas ocultas. A fila pode também ser descrita comocompreendendo uma fila em serviço e uma fila em espera. Asfilas ocultas físicas se alternam como sendo designadascomo a fila em serviço e a fila em espera. Dessa forma,como foi acima descrito, a fila em espera pode serpreenchida sem interferir com o processamento da fila emserviço. Quando terminar o processamento da fila emserviço, sua fila oculta correspondente pode ser re-selecionada como sendo a fila em espera e pode começar aser preenchida com outro fluxo a qualquer momento. A filaoculta que era a fila em espera é então re-selecionada comoa fila em serviço, podendo começar o processamento para atransmissão. Dessa forma, um número relativamente elevadode fluxos, os quais podem estar associados com umavariedade de níveis de qualidade de serviço, pode serselecionado para armazenamento na fila apropriada (deacordo com o nível de qualidade de serviço, bem como oacesso programado ou com base em conflito, etc.). A seleçãopode ser com base rotativa, tal como foi acima descrito, oude acordo com quaisquer outros tipos de critérios deseleção.
Como foi acima mencionado com relação aas caches1810, apesar de nós serem usados nesta modalidade exemplarpara ilustrar um aspecto, existem várias técnicasequivalente que podem ser implementadas. Como exemplo,estruturas de dados alternativas poderiam ser armazenadasem filas tais como a 1842 (ou 1850 e 1855) . Como outroexemplo, o próprio pacote poderia ser armazenado. De ummodo geral, as filas, ilustradas como a fila 1842, serãousadas para armazenar um ou mais elementos a partir dosquais um ou mais respectivos pacotes podem seridentificados e recuperados após o processamento doselementos enfileirados.
Enquanto se preenche um lado do armazenador"pingpong" 1842, por exemplo com os quatro nós provenientesda cache de arranjos de nós 1810, pode haver tempo durantea 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. NoU-APSD, um indicador, tal como um bit "mais". Pode serenviado com os quatro primeiros pacotes. Após a transmissãodos pacotes e espera por uma confirmação dos primeirosquatro pacotes (com qualquer espaçamento necessário entrequadros), o transmissor deve estar pronto para transmissãoadicional. Durante este tempo, nós adicionais do fluxopodem ser acessados a partir da cache de nós TX ou doarmazenador de pacotes, conforme apropriado de acordo com amodalidade implementada. Para outros tipos de transmissão,podem ocorrer oportunidades similares para manter o arranjode nós TX completo para transmissão de todos os pacotespermitidos pela oportunidade de transmissão disponível.O controle de difusão 1860 pode ser implementadocom funcionalidade similar ao controlador de arranjo 1840em qualquer das modalidades. No entanto, ele pode requererum conjunto reduzido ou alternativo de funcionalidades.Neste exemplo, é implementado um bloco de sinalizador 1862que compreende um ponteiro 18 63 apontando para um pacote desinalizador. 0 firmware pode gerar o pacote de sinalizador,incluindo quaisquer informações de cabeçalho, parâmetrosdesejados, etc., como é bem conhecido pelos técnicos naárea. 0 sinalizador 1862 pode recuperar o pacote criadopara transmissão no momento apropriado. Como exemplo, oprogramador de firmware pode gerar um valor de marca detempo para o sinalizador sendo criado e levar aquele aobloco de sinalizador 1862. Dessa forma, o sinalizador podeser transmitido no, ou próximo ao, período apropriado (istoé, TBTT nas modalidades 802.11). Em tal exemplo, osinalizador 1862 gera, através do controle de difusão 1860,um sinal de pronto para o mecanismo TX 1880. É efetuada adisputa pelo meio e o sinalizador será transmitido nomomento apropriado, ajustado para qualquer retardoassociado à espera da abertura do canal. Os técnicos naárea adaptarão facilmente a Figura 18 para acomodar beaconsou outras mensagens de sinalização do sistema à luz dospresentes ensinamentos. Em uma modalidade alternativa, osinalizador 1862 pode na realidade armazenar diretamente opacote de sinalizador em lugar de usar um ponteiro 1863.
De modo similar, pode também ser gerado um canalde difusão ou multidifusão (multicast). Os canais dedifusão e/ou multidifusão são essencialmente IDs de fluxode propósito especial. Um canal de difusão não necessitaser programado com múltiplas IDs, como as listas decomandos 1815 acima descritas. No entanto, caso canais dedifusão e/ou uma variedade de canais multidifusão sejamdesejados, procedimentos de programação similares tambémpodem ser implementados (não são mostrados) . Um pacote dedifusão OU multidifusão pode ser identificado porponteiro 1865 no bloco de multidifusão difusão 1864 paratransmissão através do mecanismo TX 1880 (através docontrole de difusão 1860). Alternativamente, o própriopacote pode ser armazenado em 1864. Note-se que, tal comousado na descrição da Figura 18, ficará claro que umareferência a um pacote pode substituir uma referência a umno, quando for implementado um esquema de memória dearmazenador de pacotes, tal como acima descrito comreferência à Figura 6. Dessa forma, como pode serconstatado, quando nós e blocos são usados para armazenarpacotes, a manutenção das filas é eficiente e fácil dentroda própria memória de armazenador de pacotes. Além disso,caches para programação de uma variedade de fluxos talcomo ilustrado na Figura 18, podem ser mantidos ' pelasimples recuperação e armazenamento de nós (em lugar demovimentar os pacotes juntamente com os nós). Como serádetalhado mais adiante, o único momento em que os dadosreais do pacote são removidos do armazenador de pacotesocorre no ponto de transmissão do pacote. Enquanto isto oprocessamento e programação do pacote são efetuadossimplesmente pelo uso do nó. Aspectos adicionais ilustrandoos benefícios dos nós serão detalhados mais adiante nadescrição do mecanismo TX 1880. Benefícios similares sãotambém obtidos na ponta de processamento de recepção.
Note-se que, tal como detalhado mais adiante comreferência às Figuras 48 e 49, em uma modalidadealternativa podem existir pacotes para transporte nomecanismo TX que provêem de outras fontes que não oarmazenador de pacotes. Como exemplo, os pacotes legados oude baixa capacidade de transmissão podem ser formatados noprocessador usando-se um processador MAC do firmware, etais pacotes podem ser providos para transmissão. Note-seque as estruturas acima descritas podem ser adaptadas paratal modalidade. Como exemplo, as listas de comandos 1815podem também ser usadas para programar a transmissão apartir das fontes alternativas. Como exemplo, uma ID defluxo, o número de pacotes a enviar e um indicador sobre seo pacote é de baixa ou alta capacidade de transmissão (ou,de um modo mais geral, proveniente do armazenador depacotes ou de fontes externas de pacotes) . Caso estejaprogramado um pacote de baixa capacidade de transmissão,ele pode ser recuperado a partir de um FIFO de memória deprocessador de transmissão (isto é, 4950) ou,alternativamente, a partir da memória do processador (porexemplo, através de dma), tal como descrito mais adiante.
Note-se que, em tal modalidade, as mensagens geradas para ocontrole de difusão 1860, por exemplo o sinalizador equaisquer mensagens de difusão ou multidifusão, podem seralternativamente formadas também no firmware. Dessa forma,os componentes 1862, 1864 e 1860 podem ser omitidos.
A Figura 19 apresenta uma modalidade exemplardetalhada de uma seção do processador de núcleo MACinferior 540. Tal como mostrado na Figura 19, um seletor1930 envia IDs de fluxo recuperadas a partir de listas decomandos 1815. Esta é uma ilustração conceituai pelo fatode que é arbitrário o tipo de canal que está sendoacessado. Qualquer número de listas de comandos pode serselecionado e acoplado ao estado de arranjo TX 1830. Quandoa ID de fluxo proveniente do canal selecionado éapresentada para o estado de arranjo TX 1830, o estado dearranjo por fluxo associado 1902 é recuperado e enviadopara um ou mais componentes que necessitam de várioscomponentes de tal estado. O seletor 1930 constitui umexemplo ilustrando um seletor recuperando seletivamenteparâmetros por fluxos (isto é, armazenados em um estado dearranjo 1902) com base em um identificador de fluxo. De ummodo geral, podem ser recuperadas tabelas de estado defluxo (ou qualquer outro conjunto de parâmetros por fluxo)por um identificador de fluxo, ou podem ser recuperadosindiretamente pela seleção de um índice de fluxo de acordocom um identificador de fluxo e uso do índice de fluxo paralocalizar parâmetros por fluxo (talvez armazenados em umaou mais memórias. Os exemplos aqui ilustrados apresentamuma variedade de parâmetros por fluxo de recepção etransmissão, que podem ser armazenados e/ou acessadosusando-se quaisquer de tais técnicas. Tal como ilustrado deum modo geral nas Figura 3 e 4, um circuito integrado (porexemplo) pode ser implementado para usar qualquer dos tiposde armazenamento de parâmetros por fluxo, dependendo de emqual modo está configurado o circuito integrado. Istofacilita a capacidade de suportar eficientemente um númerovariável de fluxos, seja grandes ou pequenos, nas memóriasdisponíveis.
É ilustrado um exemplo de estado de arranjo porfluxo 1902. Ao recuperar nós a partir do armazenador depacotes para um fluxo associado, o número de nós arecuperar é o mínimo entre o tamanho de janela e os pacotesdisponíveis. Dessa forma, para o número total de pacotesdisponíveis ou o tamanho da janela de trânsito 1910, podeser preenchida uma série de até 64 nós (na modalidadeexemplar) 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 cadanó, recuperação do próximo nó, colocação do nó no arranjoTX e assim por diante, até que os pacotes disponíveis parao fluxo se esgotem ou a janela seja preenchida.
0 ponteiro de cabeça de fila 1912 indica oponteiro para o nó no início da fila para a respectiva filade transmissão do fluxo (por exemplo, uma estrutura dedados de lista interligada). 0 ponteiro de cabeça de fila éo primeiro nó a ser recuperado em seqüência quando ospacotes provenientes do fluxo devem ser transmitidos. 0número de pacotes na fila é armazenado no campo 1914. Talnúmero será incrementado quando forem recebidos pacotes deentrada para o fluxo, sendo reduzido a medida que eles sãotransmitidos. 0 número de pacotes na cache, tal comoarmazenado no campo 1916, que podem ser usados emassociação à atualização de cache de nós TX 1835 parapreencher a cache de nó TX 1810 e para popular o arranjo denó TX 1842 com nós provenientes do mesmo. A ID de enlace1918 é recuperada para o fluxo em questão e pode serarmazenada na ID de enlace 1844 para uso no transmissorpara recuperar o estado e/ou parâmetros específicos doenlace. Em algumas modalidades, a lista interligada de nóspode consistir de um grande número de pacotes. O tamanho dejanela pode ser usado para assegurar que apenas os pacotesdentro da janela são processados para transmissão. Oponteiro de final de janela 1920 pode ser usado paragerenciamento da janela. Modalidades alternativas podemincluir campos adicionais e podem omitir alguns daquelesdescritos. Campos adicionais exemplares incluem um campo dedensidade AMPDU e um ponteiro de término de fila detransmissão.
A Figura 20 ilustra um intertravamento exemplarque pode ser implementado para uso tal como mostrado naFigura 18. Neste exemplo, a atualização de cache de nós TX1835 gera um sinal de ocupado quando ela está no processode recuperação de informações a partir da memória dearmazenador de pacotes. Durante este tempo ela tambémindica a ID de fluxo da cache de nó TX que ela estáatualizando. O controlador de arranjo 1840 sabe então seuma ID de fluxo que ele pode estar processando tem seus nóssendo acessados a partir do armazenador de pacotes (note-seque podem existir vários controladores de arranjos 1840,cada um recebendo tais sinais, um para cada canal). Dessaforma, o controlador de arranjo 1840 pode postergar oacesso à RAM de armazenador de pacotes para tal ID defluxo, uma vez que alguns pacotes provenientes de tal ID defluxo podem estar em trânsito para o cache de arranjo denó. Isto impede o controlador de arranjo 1840 de interferircom a operação de atualização de cache de nó TX para umfluxo.
Além disso, um certo número de blocos decomparação 2010 é implementado para receber a ID de fluxoproveniente da atualização de cache de nó TX. Cada bloco decomparação recebe uma ID de fluxo proveniente de um canal(isto é, EDCA 0 a 3 1850a a d, os detalhes não sãomostrados) indicando que o controlador de arranjo 1840 dorespectivo canal está acessando o armazenador de pacotespara recuperar nós para preencher espaços adicionais nosrespectivos arranjos de nó TX 1842. Caso qualquer destasIDs de fluxo estejam de acordo, a respectiva linha seráconfirmada. A porta OR 2020 propicia o OR lógico de todasas saldas de comparação que geram um sinal de ocupado. Aatualização de cache de nós TX 1835 pode aguardar paracontinuar a atualização até que o sinal de ocupado cesse,ou ela pode mudar a ID de fluxo para tentar atualizar ocache de um fluxo diferente. Caso a mudança da ID de fluxodesative o sinal de ocupado, a atualização de cache de nósTX 1835 sabe que ela não estará interferindo com a operaçãode qualquer dos controladores de arranjo 1840. Os técnicosna área conhecerão várias modificações para tal esquema deintertravamento, bem como outros esquemas deintertravamento que podem ser implementados dentro doescopo dos presentes ensinamentos.
Em uma modalidade alternativa (não é mostrada), émantido uma cache de nó de quatro pacotes (FPNC) 1810 paracada fluxo, tal como acima descrito. Cada cache contémponteiros de nó (12 bytes). Como foi acima mencionado,estes são os primeiros quatro pacotes que serãotransmitidos através da WLAN quando o respectivo fluxoobtém uma oportunidade de transmissão. Nesta modalidade,quando um pacote é recebido na entrada, ele é colocado naSDRAM e é sinalizada uma máquina de estado finito (FSM) decache de nós (que pode ser similar à, ou implementada emlugar da, atualização de cache de nós TX 1835). Caso existaespaço na cache de pacotes de quatro nós correspondente aopacote recebido, informações de nós são adicionadas àrespectiva memória de cache. Quando as informações de nóssão enviadas para a SDRAM para serem colocadas na listainterligada, elas são também enviadas para o FPNC. Casohaja espaço no FPNC e caso o FPNC não esteja em uso(durante uma WLAN TX op para o respectivo fluxo) , então asinformações de nó são colocadas no FPNC. Um bit "emserviço" pode ser ajustado pelo controlador de arranjo 1840para indicar ao FSM que o fluxo está em serviço. Tal temefeito similar ao intertravamento acima descrito.
A máquina de estado FPNC opera de forma "primeiroa chegar, primeiro a ser servido" para atualizar o FPNC. 0FPNC é particularmente útil para servir pacotes paraestações habilitadas para U-APSD, o que será detalhado maisadiante. Quando é recebido um acionador, o núcleo MACinferior 540 confirma o acionador e pode responder com umagregado de até 4 pacotes imediatamente, tal como foi acimadescrito. A máquina de estado FPNC deve repor o FPNC apósele ser esgotado devido a uma TX op. A máquina de estadoFPNC pode operar utilizando uma fila identificando fluxosque devem ser repostos. A fila pode consistir de fluxos emordem de prioridade para serviço pelo FPNC - sendo aprioridade decidida por considerações tais como se aestação está no modo U-APSD, se o fluxo é um fluxo com baseem HCCA ou EDCA e outros.
O efeito de tal modalidade alternativa pode sersimilar ao do bloco de atualização de cache de nós TX 1835usando o intertravamento acima descrito. De um modo geral,pode haver necessidade de atualizar as caches de arranjo denó com base em um acionador proveniente da entrada e/ou umaatualização periódica. Um acionador instantâneo (ou quaseinstantâneo) proveniente da entrada pode ser desejável paraapl ícações temporalmente críticas, tais como o caso de voz.A atualização periódica pode ser usada para repor as cachesde nós TX com pacotes que estão no armazenador de pacotes(isto é, após um ou mais dos pacotes para o fluxo teremsido enviados para a transmissão e não estiverem mais nacache de nós 1810. Como exemplo, caso um pacote chegue naentrada e a cache de nós estiver cheia, indo o pacotesimplesmente para o armazenador de pacotes, o resultadofinal de um modo geral desejado será o de manter as cachescompletas. A atualização periódica pode ser um processosecundário, operando de forma autônoma, na modalidadeexemplar. Os técnicos na área notarão que as mecanismos deestado, os bits em serviço, os intertravamentos e váriasoutras técnicas podem ser usados para manter as caches denós completamente preenchidos e para preenche-los emresposta às demandas geradas por pacotes de entradarecebidos, bem como pacotes de transmissão enviados.
A Figura 21 apresenta uma modalidade exemplar deID de enlace 1844, acima descrita com referência à Figura18. Como mostrado, a IS de enlace A 2110 é armazenadaidentificando a ID de enlace com o fluxo em um dos arranjosde nós TX ocultos incorporados no arranjo de nó TX 1842. 0campo 2120 identifica o número de pacotes (isto é, nós) queestão incluídos com tal ID de enlace. Note-se que, nestamodalidade, a agregação é ainda baseada na ID de fluxo,dado que a ID de enlace é usada para identificar parâmetrosde camada física (tais como taxas PHY) e chaves desegurança. 0 í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 nooutro arranjo de nó TX oculto incorporado no interior doarranjo de nó TX 1842. 0 número de pacotes associados a talID de enlace é armazenado no campo 2140. Note-se que váriosoutros parâmetros e/ou variáveis de estado podem serarmazenados juntamente com aquele, associados aosrespectivos fluxos, para uso em modalidades alternativas,quando desejado.
A Figura 22 apresenta componentes adicionais deuma modalidade exemplar de um núcleo MAC inferior 540. comofoi acima descrito com referência à Figura 18, umapluralidade de canais pode estar conectada ao mecanismo TX1880, cada um dos quais envia um indicador de pronto parainformar ao mecanismo TX 1880 que um ou mais pacotes estãoprontos para serem enviados. Os nós identificando ospacotes estarão aguardando em arranjos de nós TX 1842 e umaID de enlace associada para tais pacotes estará armazenadana ID de enlace 1844. Um conjunto de cada um de taiscomponentes pode estar presente para cada canal. A Figura22 ilustra o processamento adicional de tais pacotes amedida que eles se movimentam ao longo da cadeia detransmissão.
0 mecanismo TX 1880 recebe os vários sinais depronto e arbitra entre eles para efetuar uma variedade deprocessos e tarefas. Quando o mecanismo TX 1880 está prontopara preparar pacotes para transmissão, ele conhece otamanho da TXOP, que indica a duração de tempo disponívelpara uso do meio compartilhado. No entanto, dado que astaxas de dados variam com base nas condições do enlace, onúmero de pacotes a enviar dentro da TXOP também varia. Namodalidade exemplar, a máquina de estado finito (FSM) detaxa 2210 é implementada para uso na determinação do númerode símbolos OFDM que um pacote específico irá utilizar. 0mecanismo TX 1880 leva à FSM de taxa 2210 uma duração de TXindicando 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) eum sinal de início indica que a FSM de taxa 2210 deveiniciar seu processo. A FSM de taxa 2210 responde com onúmero de símbolos que o pacote irá usar. Tal informaçãopode ser usada para determinar o número de símbolos paracada pacote que pode ser acumulado ao efetuar a agregação,o que será detalhado mais adiante. Note-se que pode serimplementada uma variedade de técnicas alternativas para adeterminação do número de símbolos, das taxas e similares.
0 uso de uma FSM externa, que efetua a computação desímbolos por pacote constitui apenas um dentre váriosexemplos adequados para implementação. Uma modalidadeexemplar de uma FSM de taxa 2210 será detalhada maisadiante.
0 mecanismo TX 1880 está também acoplado a umárbitro de memória, tal como o árbitro de memória 1080acima descrito. Para cada um dos pacotes que estão prontospara transmissão, o mecanismo TX 1880 recupera os blocos apartir do armazenador de pacotes de acordo com asinformações no respectivo nó e quaisquer blocos ligadosidentificados pelo ponteiro de próximo grupo. Os dados degrupo são retornados ao mecanismo TX 1880 onde eles sãolevados a um ou mais FIFO 2220. Neste exemplo, os FIFO 2220estão contidos em um mecanismo de protocolo legado 2210.
Note-se que a gravação de dados em um ou mais FIFO pode serregulada por um sinal de FIFO pronto, ou qualquer outromecanismo de controle de fluxo. Como foi acima descrito eserá detalhado mais adiante com relação às Figuras 48 e 49,em uma modalidade alternativa podem existir alimentaçõesadicionais ao mecanismo TX 1880 para interação com mais deum processador MAC. Em uma modalidade alternativa exemplar,o processador 210 e o firmware implementam um processadorMAC para processamento de pacotes de baixa capacidade detransmissão. Tais pacotes podem ser levados ao mecanismo TX1880, a partir dos FIFO de memória de processador 4950 (oudiretamente a partir da memória de processador, em outramodalidade alternativa).
Como foi acima descrito, pode ser convenienteusar componentes de protocolo legado existentes paraefetuar uma variedade de funções para suportaroprocessamento MAC 802.11. Também podem ser implementadosoutros motores de protocolo padronizados, e um mecanismo deprotocolo legado 2210 pode ser modificado para provervários recursos desejados. Na modalidade exemplar de ummecanismo de protocolo legado, existem quatro FIFO 2220 Epara o canal HCCA e os FIFO 2220f a g são implementadospara 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 desinalizador). Podem ser implementados quaisquer números deFIFO, ou outros tipos de armazenador, para recepção depacotes para transmissão.
Ao receber uma comunicação de "pronto", omecanismo TX 1880 coloca o primeiro grupo de pacotes noFIFO de núcleo apropriado tal como especificado no primeironó. Como foi acima descrito, isto pode continuar com blocosadicionais, caso existam, até que o primeiro pacote sejacompletamdo. Simultaneamente, o número total de pacotes quepodem ser transmitidos pode ser determinado usando-se a FSMde taxa 2210. Enquanto monitora o FIFO pronto, o mecanismoTX 1880 pode continuar o procedimento colocando o restantedos pacotes no respectivo FIFO. Na modalidade exemplar, acolocação de pacotes no FIFO aciona o mecanismo deprotocolo legado 2210 a competir por acesso (para acessosdo tipo EDCA) e iniciar a transmissão (quando o acesso forobtido, ou durante uma TXOP programada).
A Figura 23 apresenta uma modalidade exemplar deuma FSM de taxa 2210. a ID de enlace recebida é usada comoum índice para a tabela de taxas 2310. A tabela 2310 estáarmazenada com base em ID de enlace e compreende uma oumais taxas associadas ao enlace, bem como um valor de marcade tempo (tsv) 2311. A tabela de taxas 2310 pode seratualizada de diversas formas. 0 firmware pode prover taxasatualizadas. Um pacote de retroalimentação de vetor de taxade dados recebido pode incluir informações de taxa e podeser usado para atualizar uma variedade de taxas. 0 tsv 2311pode ser usado para indicar a marca de tempo de quando umpacote contendo retroalimentação de taxa for recebido,provendo dessa forma uma indicação de se as informações detaxa são recentes ou antigas. Como exemplo, caso uma taxanão tenha sido atualizada há algum tempo, uma estratégiaconservadora seria a de reduzir a taxa caso o canal tenhase deteriorado no quadro de tempo interveniente. 0 firmwarepode determinar se houve envelhecimento e se deve ou nãoreduzir as taxas e atualizar a tabela de taxas. Namodalidade exemplar, existem quatro taxas Rl a R4 2312 a2315, correspondendo a cada uma dentre quatro antenas.Outras informações também podem ser usadas no cálculo detaxas, tais como se está sendo usado o modo dedirecionamento Eigen ou outro modo de espalhamento. Asinformações de taxas provenientes da tabela 2310 sãoenviadas à FSM 2320 de cálculo de taxa.
Para cada taxa, a tabela de seleção de taxa 2330compreende uma tabela atualizada por firmware com o númerode bytes por símbolo disponível para cada uma das taxas. Emuma modalidade exemplar, existem N = 16 taxas 2332, cadauma com um número correspondente de bytes por símbolo,portanto cada valor de seleção de taxa possui 4 bits. Onúmero de bytes por símbolo é levado ao somador 2335, cujasaída vai para o acumulador de taxa agregada 2340.
O acumulador de taxa agregada 2340 é usado paraacumular a taxa agregada e a saída é retroalimentada aosomador 2335. O acumulador 2340 pode ser zerado por meio deum sinal de limpar proveniente da FSM de cálculo de taxa2320. Para cada uma das taxas disponíveis, é somado onúmero de bytes por símbolo para acumular a taxa agregadatotal a partir da qual um certo número de símbolos ns 2360pode ser usado para indicar o número de correntes. O ns2360 é subtraído em 2345 para prover a taxa agregada. O ns2360 pode ser atualizado por firmware. 0 comprimento dopacote, levado em bytes na modalidade exemplar, éadicionado em 2350 a uma constante 2365 (que também podeser atualizada por firmware), para gerar o comprimentoreal. CONST 2365 pode indicar uma restrição opcional. Comoexemplo, pode ser implementada uma densidade AMPDUprovendo uma separação mínima entre headers MPDUsucessivos. No divisor 2355, o comprimento real, A, édividido pela taxa agregada, normalizada para ns, gerandoum quociente e um resto. 0 quociente é levado ao somador2375 para produzir, conceitualmente, uma função teto, emque, caso haja qualquer resto em 2370, deve ser usado umsímbolo adicional (isto é, uma fração de um símbolo foipreenchida, portanto o símbolo inteiro deve serimplementado). Um registrador η SYM 2375 é habilitado pelaFSM de cálculo de taxa 2320 para armazenar o númeroresultante de símbolos para transporte e uso pelo mecanismoTX 1880
A Figura 24 apresenta um mecanismo de protocololegado 2210 conceituai. Um sinal de seleção de modo podeser usado para indicar um dentre uma variedade de modos emque funciona o mecanismo de protocolo. De um modo geral,são levadas MPDUs, juntamente com o sinal de pronto, paraindicar que a transmissão deve ser iniciada. 0 mecanismo deprotocolo legado pode gerar uma saída criptografada apartir das MPDUs de entrada. Na modalidade exemplar, sãoutilizados os recursos de codificação do mecanismo deprotocol o legado (comumente encontrados em um típico núcleo802.11). Em uma modalidade alternativa, pode ser incluídoqualquer tipo de equipamento de codificação, como é bemconhecido pelos técnicos na área. Na Figura 24 é tambémmostrada uma entrada criptografada (recebida, por exemplo,a partir da WLAN 120) levada ao mecanismo de protocololegado 2210 para produzir MPDUs de saída nãocriptografadas.A Figura 25 apresenta um típico mecanismo deprotocolo legado conectado por meio de enlaces conceituaisà PHY 260. Como mostrado, um vetor RX é levado da PHY 260para o mecanismo de protocolo legado 2210 juntamente comdados recebidos e um sinal de avaliação de canal livre(CCA). O vetor RX pode compreender uma diversidade deinformações, tais como o tipo de modulação, o comprimentodos dados recebidos e outros parâmetros. Em particular,pode ser retornada retroalimentação de taxa de dados, útilpara a determinação de taxa, tal como na FSM de taxa 2210acima descrita. A avaliação de canal livre pode ser usadacom os temporizadores 2510 associados a vários canais, paracompetição por acesso ao meio quando do uso de protocolosbaseados em competição (tais como EDCA). A codificação edecodificação podem ser efetuadas no bloco 2520. Os FIFO2220 podem ser similares àqueles acima descritos. ParaHCCA, naturalmente, a transmissão é programada e pode seiniciar em um instante predeterminado. Dados codificadossão enviados para a PHY 260 com um sinal de requisição TXindicando que a transmissão deve se iniciar. Um vetor TXlevado à PHY 260 indica uma variedade de parâmetrosresultantes de funções legadas. Note-se que, na modalidadeexemplar, ao operar em um modo legado, a saída do mecanismode protocolo legado pode ser suficiente para transmissãoatravés da PHY 260.
A Figura 2 6 apresenta uma modalidade exemplar quedetalha adicionalmente o processamento MAC de pacotes detransmissão. Na modalidade exemplar, a saída do mecanismode protocolo legado, MPDUs (criptografadas quando for ocaso) são levadas a um módulo de agregação 2610. Aocontrário da modalidade detalhada na Figura 25, os dadoscodificados emitidos a partir do mecanismo de protocololegado 2210 não são levados diretamente à PHY. Namodalidade exemplar, podem ser efetuadas modificações nomecanismo de protocolo legado 2210 de forma a que umacorrente contínua temporizada de MPDUs criptografadas élevada ao módulo de agregação e a seguir à PHY paraentrega. As modificações podem ser efetuadas para removerespaçamentos entre quadros (tais como SIFs) ou quaisqueroutras características das MPDUs que não sejam necessáriaspara a produção de um quadro agregado. Em váriasmodalidades, os quadros agregados podem ser de váriasformas e podem compreender vários tipos de pacotes ouMPDUs. Acima foi detalhada uma variedade de técnicas paratemporização dos pacotes, tais como uma marca de tempo,competição por acesso e similares, que são bem conhecidaspelos técnicos na área.
0 número de pacotes para agregação pode sercomputado no mecanismo TX 1880. Uma chamada à FSM de taxa2210 pode ser efetuada para cada pacote e, para o número desímbolos retornados por pacote, a TXOP pode ser reduzido emtal número de símbolos. Uma contagem de pacotes agregadospode ser incrementada para cada pacote agregado até que onúmero total de pacotes que irá caber na TXOP sejadeterminado. Tal informação pode ser levada ao módulo deagregação 2610.
Qualquer número de esquemas e/ou formatos deagregação pode ser implementado em várias modalidades. Namodalidade exemplar, uma MPDU agregada (a-MPDU) é emitida apartir do módulo de agregação 2610. O formato da a-MPDU2710 está representado na Figura 27. Como mostrado, umdelimitador de MPDU 2720 é intercalado entre cada MPDU 2722na MPDU agregada 2710. Um ou mais símbolos de preenchimento2724 podem ser inseridos ao final de uma MPDU 2722 de talforma que o comprimento de um sub-quadro da a-MPDU seja ummúltiplo de 4 bytes. Cada MPDU 2722 compreende um cabeçalhode MPDU 2732, uma carga útil de MPDU 2734 e uma seqüênciade conferência de quadro 2736. Neste exemplo, o delimitadorde MPDU 2720 é um campo de CRC de comprimento compreendendoos bits de reserva setados para zero, o comprimento daMPDU, uma CRC dos bits reservados e do comprimento e umpadrão exclusivo que pode ser usado para escanear edetectar a MPDU. Em uma modalidade exemplar, o padrãoexclusivo é ajustado para o valor ASCII para o caractere "N".
Fazendo agora referência à Figura 26, as MPDUsagregadas podem ser armazenadas em um FIFO de adequação detaxa 2620 (em modalidades alternativas, um FIFO deadequação de taxa pode não ser necessário, dependendo dotipo de PHY implementado e suas características). 0 FIFO deadequação de taxa 2620 está acoplado à interface MAC/PHY545 para a entrega final de pacotes para transmissãoatravés da PHY 260.
PROCESSAMENTO DE RECEPÇÃO
A Figura 28 apresenta uma modalidade exemplarilustrando os componentes de recepção do núcleo MACinferior 540. Os componentes de recepção descritos nonúcleo MAC inferior 540, ou um subconjunto dos mesmos,podem constituir uma parte de um mecanismo de recepção, talcomo descrito mais adiante com referência à modalidadealternativa apresentada na Figura 49. Os dados deinformações, incluindo pacotes recebidos a partir da WLAN120, chegam à interface MAC/PHY 545 e são levados à unidadede desagregação 2802. Como foi acima descrito, com relaçãoà agregação nas Figuras 26 e 27, a a-MPDU exemplarcompreende um delimitador de MPDU 2720 que pode ser usadopara separar a fluxo de dados que chega em seus pacotescomponentes na unidade de desagregação 2802.
A corrente resultante de MPDUs é levada ao blocode filtragem e FCS 2804. Neste bloco, a função de filtragemdetermina se quaisquer dos pacotes recebidos estãoendereçados para o dispositivo em questão, incluindopacotes de difusão ou multidifusão. A seqüência deconferência de quadro também é checada. Os pacotesendereçados para o receptor e para os quais a conferênciade quadro for aprovada são a seguir levados ao FIFO 2812.
Em uma modalidade exemplar, os pacotes sãoarmazenados no FIFO a medida que são recebidos, com oentendimento que eles estão endereçados apropriadamente eque são pacotes bons. Um pacote pode ser facilmentedescartado do FIFO caso ele seja um pacote não válido, ounão endereçado para o receptor corrente. Um mecanismo decontrole simples consiste de reter um ponteiro de FIFOanterior e restaurar tal ponteiro caso o pacote recémarmazenado deva ser descartado. Os pacotes (nãodescartados) provenientes do FIFO 2812 são levados àinterface de núcleo 2860.
0 controlador RX FSM 2806 é implementado paracontrolar quaisquer dos vários blocos detalhados na Figura28. Em particular, o controlador RX FSM 2806 pode iniciar oprocessamento quando um pacote for recebido e prover váriossinais de controle para habilitar e armazenar resultadosintermediários a medida que os pacotes atravessam a cadeiade recepção.
Neste exemplo o cabeçalho é recebido e levado àanálise de pacotes 2810 para processamento. A partir docabeçalho do pacote é conhecido o comprimento ou duração detransmissão, bem como onde o pacote se inicia e onde nopacote se encontram os dados e/ou bytes de controle. 0cabeç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 foirecebido a partir de um acesso do tipo agrupado (tal comoum grupo livre de competição) a partir da ID de fluxo. Aanálise de pacotes 2810 irá portanto enviar um sinal para otransmissor para iniciar uma resposta quando uma respostafor requerida dentro de um período predeterminado (tal comodentro de SIFs). A análise de pacotes 2810 pode levar a IDde fluxo e as informações TXOP para permitir ao transmissorresponder. Quando for recebida uma requisição de ACK debl oco, o bitmap recebido também pode ser levado aotransmissor para efetuar a confirmação de bloco dentro doquadro de tempo predeterminado caso necessário (tal comouma ACK de bloco imediata). A ACK de bloco e outroprocessamento de resposta imediata, tal como U-APSD, serãodetalhados mais adiante.
A análise de pacotes 2810 leva um comprimento depacote ao FSM de ponteiro de grupo 2850 que determina onúmero de ponteiros de blocos necessários para armazenar opacote recebido. A FSM de ponteiro de grupo irá recuperarponteiros de grupo a partir da cache de ponteiros de grupoRX 840, acima descrito. Nesta modalidade exemplar, osblocos são idênticos àqueles acima descritos, porém ospacotes de recepção não requerem a complexidade eexigências de memória extra de uma fila de listainterligada verdadeira. Ao contrário, pode ser implementadoum arranjo mais simplificado. Tal modalidade será detalhadamais adiante com referência à Figura 33. Em uma modalidadealternativa, os pacotes RX podem também usar a estrutura delista interligada idêntica àquelas usadas no processamentode transmissão, caso desejado. A FSM de ponteiro de grupo2850 interage com o armazenador de pacotes 250 (isto é,através do árbitro de memória 1080) quando ela necessitarecuperar blocos adicionais para uso com um pacote ouquando atualizando o cache de ponteiro de grupo RX 2840. Namodalidade exemplar, podem ser necessários até quatroponteiros de grupo por pacote, dado o tamanho de gruposelecionado e um típico comprimento de pacote. Taisponteiros de grupo são armazenados no cabeçalho do pacote amedida que ele passa pelo resto da cadeia de processamentode recepção, sendo usados para a gravação final do pacoteno armazenador de pacotes.
Uma interface de núcleo 2860 recupera osponteiros de grupo e parâmetros incluídos em um vetor RXestendido (a partir da tabela de hardware 2820) e osadiciona ao cabeçalho de pacotes recebidos a partir do FIFO2812. Os pacotes são então levados ao mecanismo deprotocolo legado 2210, o qual é usado principalmente paradecodifi cação na modalidade exemplar acima descrita. Note-se que, na modalidade exemplar e nos típicos motores deprotocolo legados disponíveis, o cabeçalho será ignorado.
Dessa forma, vários mecanismos de controle podem serefetuados pelo armazenamento de informações de controle nocabeçalho como descrito neste exemplo. Os pacotesdecodificados provenientes do mecanismo de protocolo legado2210 são levados ao RX FIFO 2870. Na modalidade exemplar, oRX FIFO 2870 pode ser compartilhado ou ser idêntico ao FIFO572 comparável apresentado na Figura 5.
Apesar de o handoff e saída serem detalhados maisadiante, sua estrutura básica está ilustrada na Figura 28.Um aspecto de tal estrutura é o de que a decisão de handoffestá desacoplada do processo de handoff em si, permitindoque os pacotes sejam recebidos e processados sem aguardargargalos que possam se formar quando outros pacotes estãoaguardando handoff de saída. Os gargalos podem se formarquando for prescrita a entrega de pacotes em ordem e aretransmissão for necessária para um ou mais pacotes. Istoserá detalhado mais adiante.
Os pacotes provenientes do RX FIFO 2870 sãolevados à gravação de memória 2875 que efetua requisiçõespara acesso à memória de armazenador de pacotes 250 atravésdo árbitro de memória 1080, como foi acima descrito.
Enquanto um pacote está aguardando para ser gravado noarmazenador de pacotes, os parâmetros para tal pacote sãolevados ao bloco de decisão de handoff 2880 para iniciar adeci são de handoff. Para impedir que um procedimento dehandoff rápido ocorra antes que o pacote seja completamentegravado no armazenador de pacotes, um sinal de gravaçãocompleta é enviado da gravação de memória 2875 para adecisão de handoff 2880.
O mecanismo de handoff 2890 está conectado àdeci são de handoff 2880. Uma variedade de sinais exemplaresé apresentada para interação entre a decisão de handoff2880 e o handoff 2890, os quais serão detalhados maisadiante. O mecanismo de handoff 2890 recupera pacotesprovenientes do armazenador de pacotes através de umárbitro de memória 1080 e finalmente leva os pacotes para asaída. O mecanismo sde handoff 2890, dependendo do tipo depacote, pode usar o bloco defrag 2892 para remover headers,etc., de fragmentos de pacotes e reformar um pacote nãofragmentado para entrega na saída de pacotes. Como serádetalhado mais adiante com referência à Figura 48, afragmentação pode ser opcional e os componentes a elarelacionados podem ser omitidos. De tempos em tempos podemocorrer situações em que um ou mais pacotes devem serabandonados. O bloco de descarte 2894 está conectado aomecanismo de handoff 2890 para efetuar tais tarefas. Váriasoutras 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 emtais blocos.
O controlador de busca RX 2814 monitora ospacotes que entram no FIFO 2812. O controlador de busca RXdetermina a ID de fluxo para o pacote. Na modalidadeexemplar, pode ser implementada uma tabela de busca ta eTID, tal como descrito para processamento de entrada depacote, tal como na Figura 10 acima. A tabela de hardware2820 é implementada para manter o estado e parâmetros parafluxos e enlaces. A tabela de hardware 2820 será detalhadamais adiante e inclui modalidades exemplares para as duasconfigurações acima descritas com referência às Figuras 3 e4. Em tal contexto, a tabela de hardware 2820 pode ser umcomponente da tabela de hardware 320.Em uma modalidade, são mantidas tabelas dehardware separadas para entrada e saída (e possivelmenteprocessamento de transmissão) . Em uma modalidadealternativa, uma ou mais funções podem compartilhar umatabela de hardware. Em tal caso, a tabela de hardware 2820pode ser virtualmente idêntica à tabela de hardware 320descrita nas Figuras 3 e 4. Os técnicos na área notarão queo compartilhamento de tabelas pode introduzir complexidadeassociada à arbitragem para múltiplas requisições e ànecessidade de assegurar amplitude de banda suficiente parao número de acessos requerido. Por outro lado, ocompartilhamento de tabelas pode reduzir a área total epode reduzir o número de atualizações de parâmetros quepodem ser comuns a ambas, através de múltiplas tabelas.Como exemplo, considere-se um ponto de acesso com umatabela de hardware de recepção e entrada combinada, tsid eTID são os mesmos quando o ponto de acesso está recebendo apartir de uma STA para a qual o ponto de acesso transmitiuanteriormente. Apesar de não ser sempre verdadeiro que oendereço MAC de destino e o endereço MAC de transmissão sãoiguais (poderiam existir dispositivos adicionais acopladospor trás do destino), existem situações em que eles são osmesmos. Em tais casos, há benefícios do compartilhamento databela. Dessa forma, a tabela combinada pode ser tornadamaior do que seriam cada uma das tabelas isoladamente paraacomodar os casos em que os endereços não sejam iguais. Dequalquer forma, o compartilhamento pode propiciar umavantagem em termos de área.
Como foi acima descrito, na modalidade exemplar,uma cachepingpong, que permite ao hardware reordenar alista enquanto atualiza e pode ser implementado acessosimultâneo para o controlador de busca a partir de umalista oculta. Uma busca binária é efetuada para obter a IDde fluxo que é usada para indexar a tabela de hardware2820.A Figura 29 apresenta uma modalidade exemplar databela de hardware 2920 configurada como uma STA, similar àdisposição acima descrita com referência à Figura 3. Dessaforma, neste caso, todos os diversos parâmetros associadosa fluxos e enlaces são mantidos na tabela de hardware, dadoque a STA suporta apenas 16 fluxos (neste exemplo). Natabela de hardware 2820 está uma lista de endereços detransmissão 2912, TIDs 2914 e IDs de fluxos 2916 para cadafluxo suportado. Dessa forma, a ID de fluxo pode serrecuperada a partir da ta mais a TID e usada como um índicepara a tabela de estado de fluxo RX 2920 apropriada. Namodalidade exemplar, o firmware cria uma tabela ordenada,dirige o HW a trabalhar com uma tabela ou outra. A buscabinária é efetuada em HW sobre uma tabela corrente. Quandoum novo fluxo deve ser adicionado, o firmware adiciona ofluxo a uma tabela de espera, ordena-a e a seguir comuta atabela corrente do hardware para a tabela de espera. Aseguir, 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émser incluídos na tabela de hardware 2920. Tais parâmetrospodem ser acessados pela ID de enlace, a qual pode estararmazenada na tabela de hardware RX 2920. Os exemplosincluem a retroalimentação de vetor de taxa de dados 2930,acima descrito para uso com relação à determinação de taxae determinação de taxa, agregação e formação de pacotes. 0processador de recepção pode ter acesso a tais informaçõesa partir de mensagens provenientes dos dispositivos remotose pode armazenar tais informações na tabela de hardware2920. Como foi acima descrito, a chave de segurança porenlace 2940 pode ser usada para vários tipos decodificação. Vários tipos de chaves de segurança podem serarmazenados para suportar vários protocolos de codificação.
0 bloco de detecção duplicada legado 2950 armazena o númerode seqüência do último pacote recebido corretamente e onúmero de seqüência do pacote corrente pode ser comparadocom tal valor com o propósito de detecção de duplicata.
A Figura 30 apresenta uma modalidade exemplar databela de hardwa re 2820 configurada para uso em um ponto deacesso ou super estação, tal como acima descrito comreferência à Figura 4. Neste exemplo, uma variedade deponteiros 3002 está associada a Índices MAC 3004 dentro databela de hardware 2820. Note-se que, neste exemplo, uma IDde enlace 3006 também está armazenada juntamente com cadaMAC ID. Note-se que a ID de enlace 3006 poderiaalternativamente estar armazenada juntamente com outrosparâmetros em um local alternativo, tal como a SRAM 330 porexemplo. Em contraste com a tabela de hardware 2820ilustrada na Figura 29 (na qual vários parâmetros paraenlaces e fluxos foram armazenados na tabela de hardware),além da ID de enlace 3006, todos os parâmetros estãoarmazenados em uma memória alternativa, tal como a SRAM 330.
A SRAM 330 compreende as tabelas de taxa comuns3010a a n, cada uma das quais compreende ponteiros paracada endereço MAC (isto é, cada enlace, para os quais podemser suportados até 16 fluxos). Os parâmetros para os váriosfluxos estão armazenados em tabelas de parâmetros para asquais apontam os índices de fluxos 3020. Isto propicia umnível de vias indiretas para os parâmetros reais. Namodalidade exemplar, a SRAM 330 é também usada paraarmazenar tabelas tais como as tabelas de estado RX 2920,um exemplo das quais será detalhado mais adiante. Dessaforma, para cada enlace, o suporte para o número máximo defluxos está incluído no esquema de indexação tal comoapresentado nas tabelas de taxas comuns 3010. No entanto, autilização da memória pode crescer a medida que foremacrescentados fluxos. A memória não necessita ser alocadapara armazenamento de parâmetros antecipando a quando umfluxo se torna ativo. Dessa forma, para um dado enlace,caso apenas um ou dois fluxos estejam ativos, então somenteuma ou duas tabelas de estado de fluxo RX 2920 devem sercriadas e preenchidas.
Na Figura 30 é também apresentada uma tabelaalternativa 3042, que simplesmente inclui uma chave desegurança 3044 e um bitmap 304 6. Este exemplo apresenta umconjunto de parâmetros reduzido, adequado para uso compacotes 802. Hg. Em tal modalidade alternativa, o uso deuma tabela de estado reduzida pode economizar memória etempo associados a acessos adicionais à memória. Noentanto, uma estrutura comum pode também ser usada paratodos os tipos de pacotes em uma modalidade.
Os detalhes de uma tabela de estado de fluxo RX2920 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 é apresentadoapontando para um bitmap 3130. Os bitmaps 3130 estão tambémarmazenados na SRAM 330 na modalidade exemplar. Tal nivelde via indireta permite um formato comum simples paraacessar um bitmap, permitindo também que a utilização damemória cresça em resposta à necessidade, em contraste coma pré-alocação do máximo de memória que possa sernecessária. Dessa forma, de forma similar à capacidade deaumentar as tabelas de estado de fluxo RX conforme ademanda, tipos variáveis de bitmaps podem ser suportadossem a necessidade de pré-alocar a memória para os mesmos.
Como exemplo, quando for suportada a fragmentação, umbitmap pode compreender 64 pacotes com 16 fragmentos cadaum. Este e um bitmap muito maior do que seria necessáriopara um simples bitmap de ACK de bloco com um único bitpara cada pacote em uma janela de 64 pacotes. Dessa forma,para fluxos que requerem fragmentação, podem ser criadosmaiores bitmaps de ACK de bloco, enquanto aqueles querequerem menos memória podem ser criados com um bitmapmenor.
Tal figura ilustra vários aspectos deconfiguração de memória, incluindo o provimento para maiorflexibilidade e uso mais eficiente da memória. Aspectosadicionais de processamento de ACK de blocos serãodetalhados mais adiante.
A Figura 31 apresenta uma modalidade exemplar deuma tabela de estado de fluxo RX 2920. Está ali ilustradauma variedade de campos. Em modalidades alternativas, podemser introduzidos campos adicionais, ou alguns daquelesmostrados podem ser omitidos. Note-se que, de um modogeral, quaisquer das tabelas de estado de fluxo aquidescritas, incluindo a tabela de estado de fluxo RX 2920, oestado de arranjo por fluxo 1902, a tabela de estado defluxo 1030 e tabelas por fluxo similares, podem sercombinados ou separados em qualquer número de tabelas porfluxo, como ficará claro para os técnicos na área.
O número de seqüência inicial 3102 pode ser usadopara indicar o número de seqüência do pacote inicial em umatransmissão de bloco. 0 número de seqüência inicial podeser atualizado quando os pacotes transmitidos foremrecebidos (isto é, a janela se movimenta para a frente). Emuma modalidade, o número de seqüência inicial existente,mais um tamanho de janela 3104, pode determinar os númerosde seqüência dos pacotes esperados. No entanto, umtransmissor pode enviar pacotes que superem tal limite denúmeros de seqüência e, em tal caso, o número de seqüênciainicial pode ser calculado tomando-se o maior número deseqüência recebido e subtraindo-se o (tamanho de janela -D. O número de seqüência inicial pode também serexplicitamente atualizado por uma BAR (requisiçãoBlock_ack). Várias técnicas de processamento de confirmaçãode bloco serão detalhadas mais adiante. Em um exemplo, otamanho de janela pode significar o armazenador alocado (emunidades de pacotes) para um dado transmissor em umreceptor. Em tal caso, o transmissor não deve enviarpacotes não confirmados que superem o tamanho de janela noreceptor.
0 campo de ACK de bloco imediata 3106 pode serusado para indicar ao receptor se o transmissor estáesperando uma confirmação de bloco imediata ou retardada. Osuporte à confirmação de bloco imediata é obrigatório naatual proposta de norma 802.11η.
O bitmap 3130 pode ser um bitmap de ACK de blocoreal, isto é, quando a tabela de hardware 2820 estiverconfigurada como uma STA, tal como foi acima descrito comreferência à Figura 29. Em uma configuração alternativa, obitmap 3130 pode ser um ponteiro para um bitmap real, talcomo foi acima descrito com referência à Figura 30. Ocabeçalho Ethernet 3132 é armazenado para substituir ocabeçalho MAC com o cabeçalho Ethernet apropriado quando dapreparação de pacotes para saida. O ponteiro WIN 3134 é umponteiro para a estrutura de dados que mantém os endereçosfísicos dos pacotes armazenados pelo receptor que devemeventualmente ser repassados para a camada superior (verexemplos de técnicas de handoff descritos mais adiante. Emum exemplo, tais pacotes são armazenados nos armazenadorspara o handoff em seqüência para uma camada superior. Casoocorra um "buraco" (pacote perdido) no início de talestrutura de dados, então a RX deve aguardar até que talburaco seja preenchido de modo a realizar handoff ospacotes 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 nestecampo.
Em um exemplo, para começar, um número deseqüência antigo 3138 pode ser ajustado como igual aonúmero de seqüência inicial. Quando um pacote recebido levao número de seqüência a mudar, o receptor pode passar parauma camada superior todos os pacotes a partir do número deseqüência inicial antigo até o número de seqüência inicialatual. Após efetuada tal operação, o número de seqüênciaantigo pode ser ajustado como igual ao número de seqüênciainicial corrente. A ID de enlace 3140 indica o enlaceassociado ao fluxo. Este pode ser usado para recuperarparâmetros específicos por enlace para uso na recepção outransmissão através da WLAN 120. Vários exemplos foramdetalhados acima. Pode ser implementado um campo 3136indicando que não devem ser recebidos mais fragmentos. Emvárias modalidades em que a fragmentação não éimplementada, ou quando ela é efetuada em uma unidade deprocessamento MAC alternativa, tal campo pode ser omitido.
A Figura 32 apresenta uma modalidade exemplar deum método para configurar tabelas de hardware e memória emvárias configurações. Note-se que as técnicas comentadascom referência às Figuras 29 a 31 podem ser aplicadas deforma similar com outras tabelas de hardware, tais como atabela de estado de fluxo de transmissão 1030, acimadescrita. Os detalhes da configuração das tabelas detransmissão são omitidos para maior brevidade. Note-setambém que as tabelas de hardware podem ser combinadas parasuportar vários componentes (isto é, recepção, transmissão,entrada, saída, etc.). Os princípios identificados pelosníveis de vias indiretas para recepção de hardware, tabelasde estado de fluxo, RAHs e/ou armazenadors de pacotes,podem ser aplicados com igual ênfase a outras tabelas deestado aqui descritas, ou combinações de tais.
Na Figura 32 está descrito um processo geral3200. Neste exemplo são descritas primeira, segunda eterceira memórias. Note-se que, como foi aqui descrito,pode ser implementado qualquer número de memórias de váriostipos. Em uma modalidade exemplar, a memória 1 é uma tabelade hardware, tal como a tabela de hardware 2820 ou 320. Amemória 2 é uma memória maior, tal como a SRAM 330. Amemória 3 é uma memória externa neste caso, apesar de seremtambém previstas terceiras memórias externas. Nesteexemplo, a memória 3 pode ser a SDRAM 340.
No bloco de decisão 3210, caso uma terceiramemória venha a ser usada para o armazenador de pacotes,passar a 3216 para configurar vários componentes dodispositivo 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 modoutiliza um armazenador de pacotes externo armazenado em umaRAM externa tal como a SDRAM 34 0.
No bloco de decisão 3210, caso uma terceiramemória não deva ser usada para o armazenador de pacotes,passar a 3212 para configurar vários componentes dodispositivo de comunicação sem fio em um segundo modo. Namodalidade exemplar, o segundo modo é um modo do tipo STAacima descrito (em que a SRAM é usada para o armazenador depacotes) e os parâmetros são armazenados na tabela dehardware.
Em 3216, configurar a primeira memória (a qualpode ser uma tabela de hardware) com ponteiros endereçadosMAC para estruturas de dados na segunda memória. Em 3218,ajustar a segunda memória com as estruturas de dados. Taisestruturas de dados podem incluir niveis variáveisadicionais de vias indiretas, tal como acima descrito comreferência à Figura 30. Como exemplo, uma primeiraestrutura de dados pode identificar fluxos associados aendereços MAC. As IDs de fluxo podem ser usadas paraindexar tabelas adicionais, tais como a tabela de estado defluxo RX ou a tabela de estado de fluxo TX. Mais ainda, umaou mais tabelas, tais como a tabela de estado de fluxo RX,podem possuir ponteiros para estruturas de dados adicionaisassociadas ao fluxo (tais como o ponteiro de bitmapapontando para a localização do bitmap de ACK de blocos).
Em 3230, configurar o armazenador de pacotes na terceiramemória. Em um exemplo, a configuração de um armazenador depacote pode incluir o ajuste de várias listas de ponteiroslivres (tais como a lista de ponteiros de nós livres 710 ea lista de ponteiros de blocos livres 720, e alocar espaçopara nós 720 e blocos 740. Adicionalmente, podem seralocados arranjos (tais como usados para o processamento derecepção de pacotes) com listas de ponteiros de janelaslivres associados a tais arranjos.
O firmware pode efetuar várias das etapasnecessárias para formatar as várias memórias com asestruturas de dados apropriadas. Quando necessário, podemser usados vários ajustes de registradores ou outrastécnicas para ajuste de variáveis para indicar o modo paracomponentes no interior do dispositivo. Tais técnicas serãobem conhecidas pelos técnicos na área. Dessa forma, oprimeiro modo é configurado e o processo pode parar.
Em 3212, configurar a primeira memória com váriasestruturas de dados, tais como aquelas acima descritas. Emtal caso, a memória 1 pode ser uma tabela de hardware e asestruturas de dados não são necessariamente acessadasindiretamente, mas podem ser tal como descrito na Figura 29(por exemplo, tabelas de estado de fluxo RX indexadas porfluxo dentro da tabela de hardware). Em 3214, configurar asegunda memória na forma de um armazenador de pacotes, deforma muito semelhante àquela acima descrita para a memória3 em 3220. Dessa forma, é configurado o segundo modo. Aseguir, o processo pode parar. O processamento MAC, talcomo aqui descrito, pode continuar.
A Figura 33 apresenta uma configuraçãoalternativa para uma parte do armazenador de pacotes 250configurado para suportar arranjos de pacotes RX. Talmodalidade é similar ao armazenador de pacotes 250apresentado na Figura 6. No entanto, em tal configuração, aestrutura de dados da fila de lista interligada da Figura 6é substituída por um arranjo de nós 3330. O uso de umaestrutura de dados de arranjo permite algumassimplificações. Neste exemplo, os nós no arranjo de nós sãocontí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, decomprimento 614, número de seqüência 616 e ponteiro degrupo 618, são tal como descrito com referência à Figura 6.Nós menores resultam em uma redução da utilização dememória.
Como antes, são usados blocos 620 para armazenarpacotes de vários comprimentos. Uma diferença é a de que aestrutura de arranjo não requer o entrelaçamento de nóspara formar uma fila. Dessa forma, como foi acimamencionado, o ponteiro de próximo nó não necessitalocalizar nós. 0 ponteiro de final de fila 640 e o ponteirode cabeça de fila 630 são substituídos por um únicoponteiro, o ponteiro de janela 3320, que identifica onde noarmazenador de pacotes está localizado o arranjo de nó 3330desejado. O uso de tal estrutura modificada de nó/grupoficará clara para os técnicos na área à luz dos presentesensinamentos. Novamente, a estrutura de . arranjo acimadescrita não é necessária para o processamento RX, dado quea estrutura da Figura 6 é inteiramente adequada também paratal contexto. No entanto, quando implementado tal comoapresentado na Figura 33, um arranjo de nó 3330 podearmazenar até uma janela completa de localizações deendereços de pacotes. Ele pode estar indexado por meio deum deslocamento de janela para o número de seqüênciainicial corrente. Em tal caso, o arranjo de nó 3330 podeser usado como um armazenador circular de localizações depacotes.
PROCESSAMENTO DE HANDOFF
Nesta seção será mais completamente detalhado oprocessamento de handoff. A decisão de handoff 2880 e omecanismo de handoff 2890, juntamente com sinais associadose outros blocos interconectados, foram introduzidos acimacom referência à Figura 28. Serão ilustrados a seguirvários aspectos relacionados ao handoff.
Em um aspecto, a tomada de decisão de handoff éseparada do processo de handoff em si. O processo de tomadade decisão pode ser efetuado na velocidade de linha,enquanto o mecanismo de handoff opera de forma autônoma aofundo. Um contexto exemplar em que tal aspecto pode serútil é ilustrado pelo suporte para ACK de bloco. Emsistemas de pacotes sem fio da técnica anterior, tais como802. Ilg ou b, não existia suporte para a ACK de blocos.Quando um pacote chegava, ele seria confirmado ou não. Casoo pacote fosse confirmado, ele seria repassado e atransmissão de pacotes subseqüentes iria ser retomada. Casoo pacote não fosse confirmado, o transmissor iria reenviaro pacote até que ele fosse recebido corretamente (ou opacote fosse abandonado pois o processo superou limitespredefinidos). Assim sendo, os pacotes seriam inerentementerepassados na ordem em que chegaram.
Nos sistemas que suportam ACK de blocos, épossível receber pacotes fora de ordem. Quando os pacotessão recebidos corretamente, um bit associado será ajustadoem um bitmap de janela. Para pacotes que não sãoconfirmados, os bits associados podem ser ajustados parazero. A retransmissão de pacotes pode ser tentada nofuturo. Enquanto isso, pacotes subseqüentes podem serrecebidos e armazenados para handoff. Nos sistemas em queos pacotes devem ser repassados em ordem, um pacote nãoconfirmado cria um "buraco", que susta o handoff de pacotesrecebidos subseqüentemente, enquanto se aguarda que opacote não confirmado seja recebido corretamente. Um únicopacote pode então ser recebido após ser retransmitido, oqual preencheria o buraco, e, tendo sido recebidossubseqüentemente vários pacotes, um grupo de pacotes estaráimediatamente disponível para handoff. Isto pode introduziruma "lista de espera" de pacotes aguardando o handoff,podendo dai advir uma latência de handoff. A separação dadecisão de handoff do processamento do mecanismo de handoffpermite que o bloco de decisão de handoff opere navelocidade de linha, enquanto a lista de espera de pacotesé processada para handoff. 0 mecanismo de handoff podeoperar de forma autônoma e, presumindo-se que a interfacepara a memória de handoff seja de velocidade elevada emrelação à velocidade de recepção, o mecanismo de handoffserá capaz de recuperar o atraso. Dessa forma, a lista deespera de pacotes não limita a capacidade de transmissãogeral do receptor
Em outro aspecto, a separação da decisão e doprocessamento de handoff permite priorização do handoff defluxos. Como exemplo, informações sensíveis a retardo, taiscomo voz, vídeo, ou outros dados de prioridade, podem sergerenciadas de modo diferente de dados de baixa prioridade.
A Figura 34 ilustra um esquema de prioridade deponta a ponta para redes sem fio, incluindo policiamento deentrada e handoff baseado em prioridade. Na Figura 34, osistema 100 inclui uma função de policiamento de entrada3410 para recepção de pacotes de entrada. Como foi acimadetalhado, várias funções de policiamento de entradapermitem a priorização de pacotes de entrada recebidos. ALAN sem fio 120 acopla o bloco de policiamento de entrada3410 com um bloco de handoff com base em prioridade 3420.
As QoS WLANs (bem conhecidas pelos técnicos na área)permitem que pacotes e/ou fluxos identificados recebamprioridade sobre outros tipos de pacotes ou fluxos. Noentanto, o processamento QoS da técnica anterior ocorresomente sobre a comunicação ponto a ponto proveniente doreceptor e transmissor através da WLAN 120. 0 bloco dehandoff com base em prioridade 3420 efetua decisões dehandoff incorporando a prioridade. Em tal caso, os pacotesjá foram transmitidos e recebidos, talvez de acordo com aprioridade ou QoS. 0 handoff baseado em prioridade estáacima e além do conceito de QoS na WLAN, tal como a WLAN120. Dessa forma, pacotes de prioridade mais elevada podemser repassados para saida mais cedo do que aqueles deprioridade mais baixa.
Dessa forma, a QoS pode ser mantida desde aentrada em uma ponta da transmissão e por toda a trajetóriaaté a saida após a recepção no receptor. 0policiamento/política de entrada 3410 pode priorizarpacotes através da ponta de entrada, onde eles serãotransmitidos com prioridade em uma QoS WLAN 120 (caso a QoSseja suportada) e, caso ocorra qualquer retardo no handoffno receptor, os pacotes de prioridade mais elevada podemreceber a primeira prioridade. Note-se que o policiamentode entrada ou o handoff com base em prioridade podem serimplementados com ou sem uma QoS WLAN, podendo também serimplementados separadamente um do outro. Dessa forma, ohandoff com base em prioridade pode ser usado em um esquemacom uma ou mais outras técnicas de QoS. Tais aspectos podemser desejáveis também em aplicações que não dependem de umprocessador hospedeiro/hospedeiro. Como exemplo,aplicativos de camadas superiores podem possuir algumacapacidade de priorização para determinar a ordem em que ospacotes são levados a um processador MAC. A medida que cadavez mais dispositivos passam para a conectividade "semfio", tais como câmeras, dispositivos digitais de música eoutros exemplos, tais dispositivos podem ter capacidadebaixa de processamento hospedeiro (ou mesmo nenhuma). 0policiamento de entrada, então, pode ser implementado deforma útil para permitir transmissão e recepção eficientesde múltiplos fluxos.
0 policiamento de entrada e o handoff baseado emprioridade, como aqui descrito, podem ser vantajosamentecombinados com a estrutura de lista interligada para ogerenciamento de pacotes (isto é, o uso de listasinterligadas para nós, blocos e filas), apesar de acombinação de ambos não ser necessária em qualquer dasmodalidades. Em particular, a alocação dinâmica de pacotesa medida que eles são recebidos (através da entrada ou doreceptor) permite que a memória seja flexivelmente alocadaentre pacotes ou fluxos de alta e baixa prioridade. Asestruturas de lista interligada permitem flexibilidade namudança eficiente da ordem de serviço quando os níveis decongestionamento ditam que os pacotes de prioridade maiselevada devem ser servidos, e de forma igualmente fácilservindo a todas as classes de pacotes quando ocongestionamento diminui.
A Figura 35 apresenta uma modalidade exemplar deum método 3500 ilustrando a operação da decisão de handoff2880 e do mecanismo de handoff 2890. Em 3510, a decisão dehandoff 2880 recebe um acionador indicando que foi recebidoum pacote. Na modalidade exemplar, o sinal de gravaçãocompleta irá indicar quando o pacote foi completamentegravado no armazenador de pacotes, para evitar o handoffacidental de um pacote gravado parcialmente. As informaçõesnecessárias para efetuar uma decisão de handoff, como serádetalhado mais adiante, são levadas à decisão de handoff2880 a partir do RX FIFO 2870.
Em 3520, a decisão de handoff 2880 determina seos pacotes estão disponíveis para handoff. De um modogeral, qualquer método ou técnica podem ser usados parapriorizar os pacotes para handoff. Como exemplo, como foiacima descrito, as prioridades designadas para os fluxospermitem o handoff de fluxos com base na reordenação deacordo com a prioridade e não apenas a ordem de chegada.
Note-se que a priorização não é requerida. Os fluxos podemser repassados em ordem, a medida que pacotes se tornemdisponíveis. Caso haja pacotes disponíveis para handoff, em3530, uma fila de handoff é atualizada para indicar a ID defluxo associada aos um ou mais pacotes disponíveis parahandoff. Em 3540, o mecanismo de handoff 2890 irá realizarhandoff de forma autônoma os pacotes disponíveis,permitindo que a decisão de handoff 2880 aguarde o próximopacote recebido e efetue a decisão de handoff para talpacote.
Os conceitos gerais ilustrados acima podem sermais claramente entendidos por meio da modalidade exemplarque se segue. No exemplo a seguir, a decisão de handoff2880 irá efetuar decisões de handoff, atualizar filasassociadas a pacotes para handoff e emitir ordens para omecanismo de handoff 2890 para processar os handoffs deforma autônoma. Como ilustrado na Figura 28, a decisão dehandoff 2880 transporta uma ID de fluxo e parâmetroscorrelacionados para iniciar o handoff. Na modalidadeexemplar, uma contagem de handoff, indicando o número depacotes disponíveis para handoff, uma ID de fluxo associadaa tais pacotes e um tipo de fluxo são levados ao mecanismode handoff 2890 a partir da decisão de handoff 2880.
Além disso, pode ser implementado um sinal deinte rrupção. Tal interrupção opcional pode ser usada quandoum pacote de maior prioridade for recebido e a decisão dehandoff 2880 deseja passar o pacote de maior prioridade eseu fluxo à frente daqueles que estão sendo repassados nomomento. As técnicas de interrupção são bem conhecidaspelos técnicos na área e podem incluir interrupções do tipoagrupado, bem como interrupções acionadas por vetor evárias outras, dependendo do tipo de decisão de handoff emecanismo de handoff implementados. Os técnicos na áreanotarão que o bloco de decisão de handoff 2880 e/ou omecanismo de handoff 2890 podem ser implementados usando-semecanismos de estado, processos de firmware ou software, emprocessadores de uso geral ou específicos, em hardwarededicado, ou qualquer combinação de tais. Neste exemplo, omecanismo de handoff 2890 irá retornar um sinal de "handoffefetuado" para indicar que o handoff foi efetuado,juntamente com o número de pacotes repassados. Talmodalidade exemplar será detalhada mais adiante.
A separação das tarefas entre o bloco de decisãode handoff 2880 e o mecanismo de handoff 2890 foi delineadaacima, sendo descritos alguns dos seus benefícios incluindoa priorização de fluxos e gerenciamento de potenciaisgargalos. Nesta modalidade exemplar, a interface geralentre a decisão de handoff e o mecanismo de handoffconsiste em manter um parâmetro de contagem de handoffspara cada fluxo. O bloco de decisão de handoff indicaessencialmente a necessidade para handoff de um fluxo peloaumento da contagem de handoff. O mecanismo de handoffreduz a contagem de handoff a medida que ele efetua ohandoff dos pacotes. Dessa forma, tal parâmetro pode ser deum modo geral usado entre qualquer modalidade de decisão dehandoff com quaisquer motores de handoff em questão.
Note-se que esta técnica contrasta com o usoalternativo de um FIFO. Um FIFO também pode serimplementado para handoff, em conjunto com váriasmodalidades aqui descritas. No entanto, devido à grandevariação do número de pacotes que possam estar aguardando ohandoff, em certas circunstâncias o FIFO pode ser bastanteprofundo. Note-se também que, sem a adição de maiorcomplexidade ao FIFO, pode ser difícil a reordenação dospacotes de modo a acomodar a prioridade. Na modalidadeexemplar, é mantida uma fila do tipo primeiro a chegar -primeiro a ser servido para cada um dentre uma pluralidadede níveis de prioridade. Na modalidade exemplar, sãosuportadas quatro prioridades. Os técnicos na área notarãoque pode ser suportado qualquer número de filas e/ouprioridades.
Em uma modalidade alternativa, o bloco de decisãode handoff 2880 pode efetuar decisões de handoff epreencher uma ou mais filas e/ou tabelas de estado paraindicar o estado das filas e os pacotes que nelas aguardamo handoff. Pode ser implementado um mecanismo de handoff2890 que não requer acionamento explicito a partir dadeci são de handoff 2880, tal como mostrado, mas quemonitora de forma autônoma o estado das diversas filas etabelas de estado para determinar quais pacotes estãodisponíveis para handoff e para priorizar a ordem em queeles são repassados. Os técnicos na área saberão facilmenteimplementar estas e outras modalidades alternativas dentrodo escopo dos presentes ensinamentos. Os detalhes destamodalidade alternativa são omitidos.
A Figura 36 ilustra uma modalidade exemplar de ummétodo 3600 para efetuar a decisão de handoff, adequadopara implementação em um bloco de decisão de handoff 2880,tal como acima descrito. Em 3610, quando um pacote érecebido, passar para 3620 para processar o fluxo para opacote recebido. Um exemplo de processo será detalhado maisadiante. De um modo geral, quando for suportada aconfirmação de blocos, o processamento de um pacote incluideterminar se um "buraco" foi preenchido (isto é, um oumais pacotes de número de seqüência mais alto foramcorretamente recebidos e estão aguardando o handoff até queum pacote com um número de seqüência anterior seja recebidoapós a retransmissão). Naturalmente, os pacotescorretamente recebidos em ordem podem estar disponíveispara handoff sem preencher um buraco (isto é, não existequalquer pacote com numeração subseqüente aguardandohandoff). A recepção de um pacote pode acionar adisponibilidade de um ou mais pacotes para handoff, ou opróprio pacote pode ser o único pacote pronto para handoff.Caso o pacote recebido não preencha um buraco existente,pode não existir qualquer handoff disponível para talfluxo. O processo então retorna ao bloco de decisão 3610.
Neste exemplo, o fluxo alterna entre o bloco deprocesso de pacote 3630 e o bloco de processo de fila 3630(detalhado mais adiante). Os técnicos na área notarão que ométodo 3600 ilustra dois processos simultâneos, um paraprocessamento da fila de handoff e outro para recepção depacotes a medida que eles chegam. Os técnicos na áreaconhecerão várias técnicas para efetuar tal processamentoparalelo e a modalidade exemplar serve apenas comoilustração.
A Figura 37 ilustra uma modalidade exemplar de ummétodo para o processamento de um pacote recebido, adequadopara implementação como o bloco 3620, tal como acimailustrado. Em 3710, foi recebido um pacote. Determinar se ofluxo associado a tal pacote foi alimentado a uma tabela deestado de decisão. Uma tabela de estado de decisão exemplarestá ilustrada na Figura 40. Na tabela de estado de decisãoexemplar 4000, ilustrada na Figura 40, existem N IDs defluxo suportadas em um dado instante. Na modalidadeexemplar, podem ser suportados até 256 fluxos. A tabela deestado de decisão 4000 inclui, para cada ID de fluxo, umconjunto de parâmetros 4010. Na modalidade exemplar, atabela de estado de decisão 4000 inclui, para cada ID defluxo, um deslocamento de decisão 4012, uma contagem dehandoff 4014, um campo de ponteiro seguinte 4016, um bit emfila 4018 e um campo de prioridade 4020.
Fazendo novamente referência à Figura 37, em3710, caso o fluxo não esteja na tabela de estado dedecisão 4000, passar a 3715 para adicionar o fluxo à tabelade estado de decisão. Uma vez que seja determinado que ofluxo está ftâ tabela de estado de decisão, passar para 3720para determinar se um pacote está disponível para handoff.
O campo de deslocamento de decisão 4012 é usado paradeterminar o próximo pacote potencial no fluxo que pode serrepassado. Pode ser usada uma variedade de técnicas paramanter tal informação. Como exemplo, pode ser implementadoum bitmap com um bit associado para cada pacote e/oufragmento dentro de uma janela. Quando um pacote é recebidocorretamente, o bitmap é atualizado de modo a indicar arecepção bem sucedida do pacote. Dessa forma, nesteexemplo, caso o pacote associado à posição indicada pelocampo de deslocamento de decisão esteja acionado (isto é,seja igual a 1), então o pacote está disponível parahandoff. Caso tal posição no bitmap não esteja acionada(isto é, esteja ajustada para 0), então é indicado umburaco e nenhum dos pacotes subseqüentes para tal fluxo(caso existam) estará disponível para handoff.
Neste exemplo, o processo de decisão de handoff3600 continua a interagir repetidamente. Caso um pacoteesteja disponível para handoff, passar ao bloco de decisão3730 para determinar se a ID de fluxo está incluída na filade handoff. Uma modalidade exemplar de uma fila de handoffestá ilustrada como a tabela de estado de arranjo Q 4100,mostrada na Figura 41. Neste exemplo, são mantidas filaspara até M prioridades, cada uma com entradas 4110 natabela de estado de arranjo Q 4100. Neste exemplo, umaentrada 4110 inclui uma variável de contagem Q 4112, umponteiro de início 4114 e um ponteiro de final 4116. Asfilas são mantidas usando-se uma estrutura de listainterligada. Em modalidades alternativas, podem serimplementados outros tipos de filas. Na modalidadeexemplar, M é ajustado para 4 e, portanto, são suportadosquatro níveis de prioridade. O nível de prioridade para umfluxo pode ser determinado a partir do campo de prioridade4020 da tabela de estado de decisão 4000. O bit em fila4018 pode ser usado para determinar se o fluxo foi ou nãoinserido na tabela de estado de arranjo Q. Em umamodalidade alternativa, a contagem de handoff 4014 pode serusada para auxiliar a lógica de decisão a determinar se umdado fluxo já possui pacotes aguardando o handoff, ou seele deve ser adicionado à fila. A contagem de handoff podeser diferente de zero, porém pode não estar claro se ela jáera diferente de zero ou se ela acabou de se tornardiferente de zero. Neste exemplo, os pacotes podem estarsendo processados um de cada vez. Em várias modalidades,tal bit pode não ser necessariamente, ou pode ser, usadopor conveniência.
Caso a ID de fluxo não esteja na fila de handoff,passar para 3735 para adicionar o fluxo. Como mostrado naFigura 41, para cada fila de prioridade, são mantidos umponteiro de inicio 4114 e um ponteiro de final 4116. 0ponteiro de inicio 4114 inclui uma ID de fluxo que pode serusada para indexação à tabela de estado de decisão 4000para determinar o primeiro fluxo na fila. Neste exemplo,lembrar que, dentro de uma prioridade, os fluxos sãoservidos com base em primeiro a chegar - primeiro a serservido. Dessa forma, o ponteiro de inicio 4114 é um índicepara a ID de fluxo para o primeiro fluxo a ser servidodentro da fila. Note-se que uma vez acessada a ID de fluxoindicada pelo ponteiro de início 4114, o próximo fluxodentro de tal fila, caso exista, está indicado pelo campode próximo ponteiro 4016. O ponteiro de final 4116, natabela de estado de arranjo Q 4100, indica o último fluxona fila de prioridades. Quando da adição de um fluxo novo àfila de handoff, o processo pode ser efetuado atualizando-se o campo de próximo ponteiro para a ID de fluxoidentificada pelo ponteiro de final 4116. Tal campo serásubstituído por um ponteiro para o fluxo que está sendoadicionado. Subseqüentemente, o campo de ponteiro de final4116 é atualizado de modo a apontar para o fluxo recémchegado, o qual se torna o novo final da fila (isto é, oúltimo da fila) . Além disso, o campo de contagem de fila4112 mantém o número total de fluxos dentro da fila deprioridade. Dessa forma, através da leitura do valor decontagem de fila para o nível de prioridade, pode serrapidamente determinado se existem quaisquer pacotes de talprioridade aguardando handoff. Tal procedimento é seguidopara manutenção das filas para cada uma das M filas deprioridade, e o estado é mantido facilmente na tabela deestado de arranjo Q 4100.
Uma vez determinado que o fluxo está na fila dehandoff, ou que foi adicionado, passar para 3740 paraelevar a contagem de handoff 4014. Note-se que a contagemde handoff é um parâmetro usado para determinar o número depacotes aguardando o handoff para um fluxo especifico, eque é mantida na tabela de estado de decisão 4000. Em 3750,determinar se existem pacotes adicionais para handoff parao fluxo. Quando for determinado que um primeiro pacote estápronto para handoff e a contagem de handoff foiincrementada, o deslocamento de decisão pode se mover paraa frente dentro do bitmap (isto é, deslocamento de decisão++). Caso o deslocamento de decisão atualizado tambémapresente um pacote disponível para handoff, retornar a3740, elevar a contagem de handoff e continuar o processoaté que todos os pacotes dentro da janela tenham sidotestados, ou até que um buraco tenha sido alcançado. Note-se que o deslocamento de decisão irá então apontar para opróximo buraco. Em interações subseqüentes do método 3620,cada fluxo será testado quanto a pacotes de handoffdisponíveis a medida que cheguem pacotes para tal fluxo.
Uma vez alcançado um buraco, e não existampacotes adicionais para handoff, passar para 3760. O blocode decisão 3760 ilustra um exemplo opcional de umprocedimento de interrupção que pode ser implementado. Ostécnicos na área poderão facilmente implementar váriosprocedimentos de interrupção. Em 37 60, determinar se umhandoff está ocorrendo no momento. Caso não haja um handoffem andamento, o processo pode parar. Caso um handoff estejaem curso, e caso esta re-priorização opcional estejaimplementada, passar para 3770. Em 3770, pode serdeterminado se o fluxo do pacote recém chegado é deprioridade mais elevada e deve ser passado à frente dequaisquer pacotes que estejam em handoff no momento. Testara prioridade do fluxo atual com a prioridade do fluxo queestá sendo processado pelo mecanismo de handoff 2890. Casoa prioridade do fluxo atual seja maior do que aquele sendoprocessado, passar a 3775 e acionar umindicador/sinalizador de interrupção. Neste exemplo, oindicador de interrupção será reconhecido durante oprocessamento da fila de handoff, identificado no bloco3630 acima, e ilustrado em maiores detalhes mais adiante.Caso a prioridade do fluxo atual seja menor do que aquelado fluxo sendo processado pelo mecanismo de handoff 2890,não há necessidade de preempção e o processo pode parar.
A Figura 38 ilustra uma modalidade exemplar de ummétodo para processamento de uma ou mais filas de handoff,adequado para implementação como o bloco 3630 acimailustrado. O processo se inicia no bloco de decisão 3810.caso um handoff, processado pelo mecanismo de handoff 2890,esteja ocorrendo no momento (isto é, uma interação anteriordo método 3630 iniciou tal handoff), então prosseguir paraa decisão 3815 para determinar se tal handoff estácompleto. Caso ele tenha sido completado, então, em 3820,atualizar a contagem de handoffs. Na modalidade exemplar, onúmero de pacotes repassados será retornado pelo mecanismode handoff 2890 e pode ser subtraído da contagem dehandoffs. O sinal de handoff completado ilustrado na Figura28 pode ser usado para determinar se um handoff estácompleto. Note-se que quando a contagem de handoff vai azero, a ID de fluxo pode ser removida da respectiva fila deprioridade usando os campos ilustrados na Figura 41. Alémdisso, quando um fluxo é removido de uma fila, a respectivacontagem Q também é reduzida. Em 3825, um indicador deespera, usado para determinar quando um handoff está sendoefetuado, é resetado. Tal indicador é útil para determinarse um handoff está pendente no bloco de decisão 3810 e podetambém ser usado no bloco de decisão 3760, acima descrito,com relação ao processamento de pacotes.Caso o handoff não esteja completo, tal comodeterminado no bloco de decisão 3815, e esteja implementadoum recurso de interrupção, tal como acima descrito, passarao bloco de decisão 3830 para determinar se um indicador deinterrupção foi acionado. Como exemplo, tal indicador podeser acionado tal como descrito no bloco 3775 acimadescrito. Caso negativo, o processo pode parar. O mecanismode handoff 2890 pode continuar a efetuar suas operações dehandoff atuais e o fluxo de processo na Figura 36 podevoltar ao bloco de decisão 3610 para aguardar pacotesadicionais sendo recebidos ou uma mudança no estado deprocessamento da fila de handoff. Caso, no bloco de decisão3830, tenha sido acionado um indicador de interrupção,comandar uma interrupção ao mecanismo de handoff no bloco3835. A seguir, será detalhada uma modalidade exemplar deprocessamento por mecanismo de handoff de um sinal deinterrupção.
No bloco de decisão 3840, o mecanismo de handoffcompletou qualquer processamento anterior e podem sergeradas instruções adicionais de handoff. No bloco dedeci são 3840, determinar se um fluxo está disponível parahandoff na fila de handoff. Uma modalidade exemplar serádetalhada mais adiante. Caso negativo, o processo podeparar e continuar a interagir tal como acima descrito. Casoesteja disponível um fluxo, em 3845, iniciar um handoffpara o mecanismo de handoff. Como foi acima descrito, a IDde fluxo e parâmetros correlacionados podem ser levados aomecanismo de handoff. Na modalidade exemplar, a contagem dehandoffs pode ser igual a qualquer número. Caso a contagemde handoffs seja maior do que um, o mecanismo de handoffpode realizar handoff cada pacote até o final, a menos queseja interrompido. Em uma modalidade alternativa, omecanismo de handoff pode processar um pacote a cada vezque um handoff seja iniciado. Em tal modalidadealternativa, uma interrupção pode ser desnecessária. Em3850, o indicador de espera é acionado para indicar que umprocesso de handoff está pendente. A seguir, a interaçãocorrente do processo pode parar.
A Figura 39 apresenta uma modalidade exemplar deum método para determinar os fluxos disponíveis parahandoff, adequado para implementação como o bloco 3840acima descrito. Note-se que este exemplo presume que osfluxos de maior prioridade recebem um valor numérico deprioridade mais baixo. Dessa forma, a prioridade 0 é aprioridade mais alta. Os técnicos na área adaptarãofacilmente qualquer tipo de esquema de prioridade dentro doescopo dos presentes ensinamentos. Em 3910, caso exista umfluxo na fila identificada pelo índice de prioridade (istoé, sua contagem Q for maior do que 0), então sair do método3840 e retornar o fluxo. Novamente, na modalidade exemplar,o primeiro fluxo na fila (identificado pelo ponteiro deinício) da prioridade identificada será repassado.
Caso a fila de prioridade identificada nãocontenha quaisquer fluxos, incrementar o índice deprioridade em 3930. Em 3940, caso o índice de prioridadeseja maior do que N, que é o número de prioridadessuportadas (N = 4 na modalidade exemplar), não existemquaisquer filas adicionais a testar. Em tal caso, todas asfilas 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. 0 processocontinua até ser encontrado um fluxo, ou até que as filassejam exauridas. Novamente, qualquer tipo de técnica deseleção de fluxo pode substituir o método 3840.
A Figura 42 ilustra uma modalidade exemplar de ummétodo 4200 para efetuar handoff, adequado paraimplementação em um mecanismo de handoff 28 90. Em talmodalidade exemplar, o bloco de decisão de handoff 2880leva ao mecanismo de handoff 28 90 um certo número depacotes para handoff, uma contagem de handoffs, um tipo defluxo (o qual pode ser usado caso esteja implementado osuporte para múltiplos tipos de pacotes, tais como 802.11b,g, n, etc.) e uma interrupção. O mecanismo de handoff levapacotes para a saida, os quais são recolhidos a partir doarmazenador de pacotes através do árbitro de memória 680,tal como acima descrito com referência à Figura 28. Onúmero de pacotes repassados, juntamente com o sinal dehandoff completo, são retornados à decisão 2880 paraprocessamento, tal como foi acima descrito.
Em 4210, o mecanismo de handoff 2890 recupera umou mais nós a partir do armazenador de pacotes, até aquantidade indicada pela contagem de handoffs. Os nósestarão localizados no armazenador de pacotes em um localidentificado por um ponteiro de janela mais um deslocamentode handoff, que estão ajustados em correspondência à ID defluxo. Note-se que o armazenador de pacotes recebidosexemplar pode ser tal como ilustrado na Figura 33, em queum arranjo de nó 3330 compreende os nós 3310, cada umcorrespondendo a um pacote, ligados em um formato dearranjo, com listas interligadas de blocos contendo osdados de pacotes associados aos mesmos. As variáveis usadaspara indexar o armazenador de pacotes são mantidas para omecanismo de handoff na tabela de estado de handoff 4300,ilustrada na Figura 43. Novamente, são suportadas N IDs defluxos e para cada ID de fluxo é mantida uma entrada 4310na tabela de estado de handoff 4300. Na modalidadeexemplar, são suportados até 256 fluxos. O firmware mantéma localização do arranjo de nós no armazenador de pacotespara cada fluxo. Este é identificado na tabela de estado dehandoff 4300 pelo ponteiro WIN 4314. O tamanho da janelapara os fluxos indicados no tamanho win 4316. 0deslocamento de handoff 4312 é mantido em estado pelomecanismo de handoff para determinar onde será encontrado opróximo pacote a ser repassado. Dessa forma, os nóscorrespondendo a pacotes para handoff são identificados,tal como foi acima descrito, pela adição do deslocamento dehandoff 4312 ao ponteiro WIN 4314. Para acesso à SDRAM maiseficiente, pode ser desejável recuperar mais de um nó decada vez, apesar de tal não ser requerido.
O tamanho WIN 4316 pode ser usado com o número deseqüência inicial e o deslocamento de handoff paraposicionar o mecanismo de handoff para o pacote de deve serprocessado para handoff. Neste exemplo, o deslocamento dehandoff aponta para o número de seqüência inicial naestrutura de dados de janela (isto é, um arranjo de nós) eo número de seqüência a ser repassado é identificado emrelação ao número de seqüência inicial.
Em 4215, selecionar o primeiro nó correspondenteao deslocamento de handoff 4312. Em 4220, recuperar blocoscorrespondentes a tal nó a partir do armazenador depacotes. Em 4225, defragmentar o pacote, caso necessário,com base no tipo de fluxo. Isto pode envolver recuperarvá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çalhoapropriado. Isto pode ser efetuado no bloco defrag 2892associado ilustrado na Figura 28. O tipo de fluxo pode serusado para indicar quando a fragmentação é necessária. Comoexemplo, em algumas modalidades, podem ser suportadospacotes 802.Ile e g e a fragmentação pode ser usada. Note-se que, em uma modalidade alternativa, detalhada maisadiante, os tipos de pacotes requerendo fragmentação sãomanipulados em firmware para reduzir a complexidade. Em talmodalidade, o bloco defrag 2892 não necessita serimplementado.
Em 4230, uma vez recuperados cada um dos blocosassociados ao pacote e o pacote ser reconstruído (incluindoqualquer defragmentação necessária), levar o pacote parasaída. Como foi acima descrito, a saída pode ser efetuadaatravés de qualquer uma dentre uma variedade de interfaces,exemplos das quais foram apresentados acima.
Uma vez repassado um pacote (ou um conjunto defragmentos), o deslocamento de handoff 4312 é atualizadopara identificar o próximo pacote para handoff. Em 4240,uma variável # repassada, para seguir o número de pacotesrepassados, é adequadamente incrementada. Em 4245, casosejam suportadas interrupções, e uma interrupção tenha sidoemitida, passar a 4225. Em 4225 o repaaase para, éconfirmado o handoff finalizado e o número de pacotesrepassados é retornado. Em tal modalidade, a interrupção éacionada após cada pacote ser completamente repassado.
Podem ser implementados esquemas de interrupçãoalternativos, e ficaram claros para os técnicos na área.
Uma vez interrompido, o processo de handoff para. Nesteexemplo, o bloco de decisão de handoff 2880 podeposteriormente emitir um novo comando de handoff para omecanismo de handoff 2890 para continuar o handoff depacotes para um fluxo interrompido. Em 4245, caso não tenhasido recebida qualquer interrupção, passar ao bloco dedecisão 4250. Em 4250, caso não existam quaisquer pacotesadicionais a o handoff, o que pode ser determinado pelacomparação do número de pacotes repassados com a contagemde handoffs, o handoff está completo. Passar para 4255,confirmar que o handoff está terminado e retornar o númerode pacotes repassados.
Caso existam pacotes adicionais para handoff,passar a 4260. Processar o próximo nó e retornar a 4220para recuperar blocos que correspondam a tal nó, retomandoo processo acima descrito.
O bloco de descarte 2894 está conectado aomecanismo de handoff 2890, tal como ilustrado na Figura 28.
0 bl oco de descarte 2894 pode ser usado para seguir limitesde reenvio, timeouts e similares, que podem ser usados parafinalmente descartar um pacote. Isto permite ao mecanismode handoff passar à frente antes que um buraco sejapreenchido. O handoff então ocorre, enviando pacotes equalquer retransmissão subseqüente será manuseada atravésde camadas superiores, caso necessário.
O bloco de descarte 2894 efetua várias funçõesquando a janela ARQ é movida. Como exemplo, pacotesparcialmente fragmentados são descartados. Pacotescompletados são repassados independentemente da existênciade buracos. Os armazenadors são liberados e, portanto,ponteiros de blocos são recolocados na lista de ponteirosde blocos livres e as janelas são movidas.
Os técnicos na área adaptarão facilmente várioscircuitos, componentes e técnicas em modalidadesalternativas. Em uma modalidade exemplar generalizada (ecompatível com a modalidade alternativa 4 900 apresentada naFigura 4 9 detalhada mais adiante) uma máquina de estado deentrada (ISM) processa os pacotes recebidos e atualiza asinformações usadas por uma máquina de estado de controle(CSM) . Tais atualizações podem incrementar o número depacotes na memória e também atualizam a ordem em que asflow_ids devem ser processadas pela CSM. A CSM podeatualizar uma cachede nós de quatro pacotes no transmissor,tal como acima descrito. Tal máquina de estado opera sobreas informações em uma flow_packet_table. Um ponteiro deinício e um ponteiro de final, bem como o ponteiro depróximo fluxo na tabela permitem à CSM selecionar a próximaflow_id a ser processada. Pode existir um bit "em serviço"na tabela (por flow_id) que informa à CSM se os pacotesprovenientes de tal flow_id estão em transmissão nomomento. Tal bit pode ser ajustado para 1 pelo mecanismo TXantes que ele inicie a transmissão, e é ajustado para 0após a transmissão ser finalizada. Uma máquina de estado detransmissão usa as informações provenientes da fila decomandos para transmissão de pacotes através da WLAN (deforma similar àquela acima descrita com referência à Figura18). Uma máquina de estado de descarte (FSM), que pode serusada como um bloco de descarte 2894, descarta os pacotesSDRAM que forem corretamente recebidos e confirmados pelorespectivo receptor. A FSM a seguir decrementa os pacotesna contagem de memória na flow_packet_table.
A flow_packet_table pode possuir uma ou maisdentre as seguintes entradas: uma flow_id (1 byte), onúmero de pacotes na memória (2 bytes), pacotes na cache (2bits), bit em serviço (1 bit), next_flow_id (1 byte) e umcampo de prioridade de 2 bits. Quando um pacote chega naentrada, a ISM atualiza os pacotes na memória, atualiza anext_flow_id, bem como o tail_ponteiro. A máquina de estadode transmissão, quando está transmitindo pacotes a partirde uma flow_id específica, ajusta o correspondente bit emserviço. Quando ajustado, a CSM não irá atualizar a cachede nós de quatro pacotes. Após os pacotes seremtransmitidos, a máquina de estado TX atualiza o número depacotes em cache e também reseta o bit em serviço. A CSMirá agir somente quando o bit em serviço for resetado. Aordem em que ela processa a flow_id é determinada pelanext_flow_id. Caso desejado, um bit de prioridade de 2 bitspode ser adicionado à tabela. Em tal caso, a CSM iráprimeiramente processar fluxos pertencentes à prioridademais elevada, a seguir a próxima e assim por diante. Umexemplo do tamanho desta tabela é de aproximadamente 4bytes vezes o número de fluxos, ou aproximadamente 1 Kbytepara 256 fluxos. A CSM usa o ponteiro de cabeçalho daflow_id (o primeiro pacote na enlaceed_list) para inferiros endereços de nós dos pacotes que devem ser incluídos nacache de nós de quatro pacotes.
Dessa forma, em uma modalidade exemplar, ummecanismo de descarte ou bloco de descarte 2894 exemplarpode remover a partir do armazenador de pacotes todos ospacotes que forem recebidos com sucesso e confirmados.
Quando for recebido um bitmap de confirmação de bloco, amáquina de estado TX primeiramente o processa e podeefetuar retransmissões imediatas para lidar com certospacotes não confirmados (a confirmação de blocos serádetalhada mais adiante . 0 bitmap é a seguir passado a umamáquina de estado de mecanismo de descarte no mecanismo dedescarte ou bloco de descarte 2894, que recupera ohead_ponteiro da estrutura de dados de lista interligadapara a correspondente flow_id - o head_ptr está disponívelna RAM de estado de fluxo. 0 head_ptr contém o endereço denó do primeiro pacote para a dada flow_id, bem como onúmero de seqüência de tal pacote. A máquina de estado demecanismo de descarte processa o bitmap e o enfileira paradescartar pacotes que foram confirmados em seqüência. Tallógica pode ser similar à lógica usada por uma máquina deestado de saída, em que os pacotes recebidos em seqüênciasão passados ao hospedeiro. Uma vez que a máquina de estadode mecanismo de descarte tenha identificado o número depacotes a serem descartados e seus números de seqüência,eles podem ser colocados em uma fila para descarte. 0head_ptr provê o endereço de nó do primeiro pacote na listainterligada. O endereço de nó dos pacotes a seremdescartados é obtido por acesso aos endereços de nós doscorrespondentes pacotes provenientes da lista interligada.
Na modalidade exemplar, a memória é alocada para proverlocais de pacotes, blocos e nós suficientes. Dessa forma, odescarte pode ser efetuado ao fundo, uma vez que de um modogeral não existe uma exigência estrita de tempo ou momentopara tal tarefa. O árbit ro de memória pode prover acessospara as funções de descarte como uma tarefa de baixaprioridade.
CONFIRMAÇÃO DE BLOCOS
Os vários aspectos ilustrados por modalidadesexemplares, acima descritas, são bem adequados para efetuara confirmação de blocos para controle de acesso a mídia dealta velocidade. Em um típico protocolo de confirmação deblocos, um transmissor transmite pacotes para um receptorpor um período de tempo, sem necessariamente receber umaconfirmação de qualquer um dos pacotes. A seguir, umaconfirmação de bloco é retornada a partir do receptor parao transmissor, indicando quais dos pacotes previamentetransmitidos foram recebidos corretamente. Uma confirmaçãode bloco pode ser transmitida em resposta a uma requisiçãode ACK de bloco, ou podem ser implementados mecanismos deprogramação alternativos, tais como uma resposta após umnúmero predeterminado de pacotes ter sido recebido. Umarequisição de confirmação de bloco pode ser uma mensagemespecífica transmitida para indicar que é desejada umaconfirmação de bloco, ou a confirmação de bloco pode estarinerente em outro tipo de sinal ou mensagem.
Um mecanismo para manter um estado de pacotesconfirmados ou não confirmados consiste em manter um bitmapem que cada posição de bit corresponde a um pacote oufragmento de pacote, tal como acima descrito com referênciaàs Figuras 30 e 31. Um exemplo de bitmap 3130 foi acimadescrito.
Em um sistema de alta capacidade de transmissão,pode ser desejável retornar uma requisição de ACK de blocoem um espaço de tempo relativamente curto após um eventoacionador, tal como uma requisição de ACK de blocoexplícita ou inerente, ou outro indicador de requisição deACK de bloco. Em uma modalidade exemplar da 802.11, podeser requerido que a requisição de ACK de bloco sejaretornada dentro do período SIFs subseqüente a umarequisição de ACK de bloco (isto é, uma ACK de blocoimediata). Dessa forma, pode ser desejável a manutenção deinformações de estado para múltiplos fluxos, permitindo umapronta resposta de ACK de bloco para qualquer um dos fluxospendentes e para processamento de confirmações de blocossubseqüentes à requisição de ACK de bloco pararetransmissão de quaisquer pacotes que necessitemretransmissão. Podem ser suportados vários tipos deconfirmação de blocos. Como exemplo, pode ser desejadaconfirmação de estado parcial ou total. De um modo geral, aconfirmação de estado parcial pode ser menos trabalhosa emtermos de computação ou pode demandar menos retardo. Asmodalidades exemplares aqui descritas podem ser facilmenteadaptadas para confirmação de blocos de estado total ouparcial, ou uma combinação de tais. Serão descritos outrosaspectos mais adiante por meio das modalidades exemplaresque se seguem.
ACK DE BLOCOS NO RECEPTOR
Em uma modalidade exemplar, é recebido um pacote,que pode ser um pacote agregado. A medida que os pacotessão recebidos no receptor, eles são testados paradeterminar se o pacote foi recebido corretamente, pode serusado, por exemplo, uma seqüência de conferência de quadrosou similar. Independentemente do método para determinar arecepção correta de um pacote, pode ser armazenado umindicador para cada pacote (ou fragmento, conformeapropriado). Na modalidade exemplar, tais indicadores deconfirmação são armazenados em um bitmap associado a cadafluxo. Uma variedade de técnicas para armazenamento debitmaps para fluxos foram acima descritas com referência àFigura 30.
A Figura 4 4 é uma modalidade exemplar de ummétodo 4400 para responder a uma requisição de ACK de blocoimediata. Tal método é adequado para responder prontamentea uma requisição de ACK de bloco.
Em 4410, são mantidas informações de cabeçalho depacote para qualquer fluxo para o qual deva ser gerada umaACK de bloco. Tais informações de cabeçalho podem sermantidas em qualquer formato, exemplos dos quais são bemconhecidos pelos técnicos na área. As informações decabeçalho (ou em modalidades alternativas, quaisquerinformações que possam ser predeterminadas para uso napreparação de uma resposta de confirmação de bloco) sãoarmazenadas para montagem de um pacote antes de umapotencial 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 ounão confirmação de cada pacote ou fragmento individual (equaisquer outras informações que não puderam serestabelecidas anteriormente). O bitmap (e quaisquerinformações restantes) é simplesmente inserido no pacote emespera e transmitido.
Note-se que em uma modalidade exemplar, acimadescrita, podem ser implementados três niveis de memóriapara prover vários niveis de vias indiretas. Em um exemplo,o primeiro nivel de memória é de tabelas de hardware, taiscomo a tabela de hardware 2820. Um segundo nivel de memóriapode incluir a SRAM 330. Em uma configuração opcional, podeser implementado um terceiro nivel tal como a SDRAM 340. Asinformações de cabeçalho de pacote podem ser armazenadas emqualquer camada de memória considerada como possuindoacesso apropriado.
Em 4420, é recebida uma ACK de bloco que pode serimplícita ou explícita. Em 4430, é recuperado o bitmapassociado ao fluxo. Qualquer identificador de fluxo podeser usado para recuperar o bitmap. Como exemplo, tal comofoi acima descrito na Figura 30, é usado um índice MAC 3004para identificar uma ID de enlace 3006 que possui umponteiro associado 3002. O ponteiro 3002 pode apontardiretamente para uma tabela 3042 incluindo o bitmap 3046diretamente, ou o ponteiro 3002 pode apontar para umatabela de taxas 3010 que, com base na ID de transmissão3020, aponta para a tabela de estado RX 2920. Como foiacima descrito, a tabela de estado 2920 pode incluir umponteiro de bitmap 3050 para apontar para o bitmap real3130. Os técnicos na área notarão que pode ser implementadoqualquer tipo de via indireta ou armazenamento direto debitmaps. De acordo com a técnica usada, é recuperado obitmap apropriado associado à ID de fluxo com a requisiçãode ACK de bloco.
Em 4440, o bitmap recuperado é colocado no pacotemantido e, em 4450, é transmitida a ACK do bloco agoramontado. Dessa forma, nesta modalidade, é pré-montado tantoquanto possível do pacote de ACK de bloco. As informaçõesde bitmap, ou outros dados de confirmação em uma modalidadealternativa, são mantidos em uma parte facilmente acessívelda memória para pronta recuperação. A combinação dessasduas peças é a seguir transmitida prontamente para proverACK de bloco imediata de estado parcial ou completa emresposta a requisições de ACK de bloco imediata.
As modalidades acima dão suporte à confirmação debloco de estado total ou estado parcial imediata. O suportepara estado parcial, estado completo, ou qualquercombinação pode ser implementado em uma modalidadeexemplar. No entanto, outras modalidades podem necessitarapenas dar suporte à confirmação de bloco de estadoparcial, como parece que será o padrão para a 802.11η. Emtal caso, uma confirmação de bloco é enviada apenas emresposta ao agregado recebido, enviando o estado apenaspara os pacotes recebidos.
Para ACK de bloco de estado parcial, deve sermantida apenas uma única memória no receptor. Não hánecessidade de incluir o estado completo (isto é, memóriapara 256 fluxos). O estado de bitmap parcial mantido noreceptor pode ser sobrescrito caso seja recebida umatransmissão proveniente de um originador diferente. Note-seque se o estado for sobrescrito acidentalmente, então nãoserá possível uma requisição posterior para confirmação debloco. Como exemplo, neste caso pode ser enviado um bitmaptodo de zeros. Pode ser implementada uma dada modalidadepara manter mais do que a quantidade mínima de estado, casodesejado.
ACK DE BLOCO NO TRANSMISSOR
Como foi acima descrito, um transmissor podetransmitir um certo número de pacotes e a seguir requisitaro estado da recepção através de uma requisição deconfirmação de bloco explícita ou implícita. Para mantercapacidade de transmissão elevada, é desejável que otransmissor esteja pronto para continuar a transmissão, ouretransmitir conforme necessário, imediatamente, quando aconfirmação de bloco correspondente for recebida. Váriasmodalidades podem ser facilmente adaptadas para aproveitarvários aspectos, detalhados por todo o presente relatóriodescritivo, para permitir retransmissão eficiente eimediata em resposta a uma confirmação de bloco.
A Figura 45 apresenta uma modalidade exemplar dométodo 4500 para responder a uma confirmação de bloco. Talmétodo é bem adequado para modalidades que implementamarranjos de nó tais como aqueles armazenados em caches dearranjo de nós 1810 acima descritos. Além disso, as filasacima descritas, que podem ser alteradas e mantidas porlistas interligadas de nós, são também bem adequadas paraadaptação ao métodos 4500.
Para resumir o procedimento, note-se que aconfirmação de bloco corresponde a um tamanho de janela(que possui tamanho de até 64 na modalidade exemplar). 0número de seqüência inicial é ajustado para o número deseqüência mais baixo representado pela janela(conceitualmente, o ponto mais à esquerda na janela). Otransmissor sabe quantos pacotes foram transmitidos,portanto ele sabe onde está o último pacote na janela.Partindo do último pacote transmitido, o transmissor podeentão prosseguir pacote a pacote através do bitmap desde otransmitido mais recentemente até o transmitido mais cedo.
Caso seja identificada uma não confirmação (um zero namodalidade exemplar), então o ponteiro de nó para talpacote é novamente ligado à fila de transmissão (que re-enfileira o pacote para retransmissão). 0 transmissorprossegue pelo bitmap, reconstruindo a fila de transmissãoda lista interligada até ser alcançado o inicio do bitmap(identificado pela seqüência inicial anterior). 0 método4500 é uma de tais técnicas que podem ser implementadas,apesar de qualquer técnica para determinação dos parâmetrosde retransmissão requeridos poder ser usada em conjunto comas modalidades aqui descritas.
O exemplo a seguir ilustra o uso de um bitmap ACKde bloco para processar a fila de transmissão em umarmazenador de pacotes. As mesmas técnicas, ou similares,podem ser igualmente aplicadas para prover retransmissão debaixa latência em resposta a uma ACK de bloco. Como exemplo,uma fila, tal como um arranjo de nós 1842, pode ser carregadacom os nós de um fluxo, os quais são a seguir transmitidos talcomo foi acima descrito. Tais nós podem permanecer até que umaACK de bloco seja recebida e processada. 0 bitmap de ACK debloco pode ser usado para indicar quais nós devem serretransmitidos. Em uma modalidade, as posições dos nós noarranjo de nós irão corresponder a posições no campo de bitsou bitfield de ACK de bloco. Quando da recepção de uma ACK debloco, os pacotes que não foram confirmados podem serprontamente agregados e retransmitidos (presumindo-se que umaoportunidade de transmissão esteja disponível) usando-se astécnicas de agregação acima descritas. Este constitui umexemplo de técnicas de resposta de baixa latência que permitemque oportunidades de transmissão remanescentes sejameficientemente utilizadas. Os nós no arranjo de nós podem sermovimentados a medida que a janela se move, de forma similaràquela descrita a seguir. Note-se que, usando-se arranjos denós ou armazenadors de transmissão para o processamento de ACKde bloco e retransmissão, quando os pacotes são armazenados emum armazenador de pacotes usando-se estruturas de dados taiscomo nós e blocos, acima descritos, não há nunca necessidadede mover os dados de pacote dentro do armazenador de pacotes.Eles podem permanecer em um local durante a primeiratransmissão e quaisquer retransmissões subseqüentes (apesar depoderem ser re-acessados durante cada transmissão) até que opacote seja recebido com sucesso, ou superar limitespredeterminados e seja descartado.
Em 4510, é recebida uma confirmação de bloco. Em4515, o número de seqüência inicial é ajustado para apontarpara o primeiro pacote não transmitido. Dessa forma, noexemplo em que uma ACK de bloco é recebida, indicando quetodos os pacotes transmitidos foram recebidos corretamente, ajanela será movida. 0 próximo pacote para transmissão será oprimeiro pacote na nova janela, portanto o número de seqüênciainicial deve estar associado a tal pacote. As etapas a seguirdetalham como modificar o número de seqüência inicial eatualizar a fila de transmissão, para acomodar quaisquerretransmissões necessárias, caso sejam necessárias. Quando oprocesso é terminado, o número de seqüência inicial terá sidoautomaticamente atualizado para a posição apropriada movendo-se a janela para a frente (caso possível). A fila detransmissão será atualizada, permitindo que a transmissão ouretransmissão se inicie imediatamente.
Em 4520, examinar o bitmap de ACK de bloco que seinicia no pacote transmitido mais recentemente. Em 4525, casoseja detectado um zero (ou em uma modalidade alternativa, sejadetectado um indicador de não confirmação) , então tal pacotedeve ser retransmitido. Passar a 4530 e ligar o ponteiro paraa próxima transmissão ao pacote associado a tal posição debitmap. Como exemplo, quando for implementada uma fila detransmissão tal como acima descrito com referência à Figura 6,o ponteiro de cabeça de fila 630 pode ser direcionado paraapontar para o nó associado ao pacote para o qual foidetectado um zero. A seguir, o campo de ponteiro de próximo nó612 contido em tal nó pode ser atualizado para apontar para oponteiro de início anterior. Em modalidades alternativas,podem ser usadas técnicas alternativas para atualizar uma filade transmissão.
Em 4535 o número de seqüência inicial é atualizadopara apontar para o pacote atual. Dessa forma, para cada zerorecebido, o número de seqüência inicial será movido para umlocal anterior. Como foi acima descrito, caso todos os pacotesforam recebidos corretamente, a janela terá passado para opróximo pacote que aguarda a transmissão. No entanto, talmovimento à frente é então recuado até o zero detectado maisprecocemente. Após todo o processo do método 4 500, caso opacote associado ao número de seqüência inicial na confirmaçãode bloco não tenha sido recebido corretamente, naturalmente ajanela não será movida à frente.
Em 4540, voltar através do bitmap para o próximopacote anterior. Em 4545, caso existam mais posições de bitmapa checar, voltar ao bloco de decisão 4525 para a próximaconfirmação. Em 4525, caso não seja detectado um zero, oprocesso passa por 4540, passando através do bitmap e checandose o bitmap está completo. Uma vez testados todos os pacotesno bitmap, do bloco de decisão 4545 prosseguir para 4550 einiciar a transmissão usando a fila de transmissão atualizada.Em 4 560, os pacotes que foram confirmados podem serdescartados e seus ponteiros associados reciclados para usosubseqüente. Note-se que tal etapa pode operar em paralelo (ouao fundo) tal como mostrado. A seguir, o processo pode parar.
Em suma, quando um bitmap for recebido para uma ACKde bloco, os zeros no bitmap são religados à fila detransmissão existente para formar uma nova fila detransmissão. Os ponteiros de nós associados para tais pacotessão re-gravados na memória. No entanto, note-se que ospróprios pacotes (identificados por ponteiros de blocos econtidos nos blocos 620) nunca se movem. Somente quando ospacotes forem transmitidos com sucesso e confirmados (ouocorra algum outro evento tal como um time out) serãodescartados um nó e grupo e os ponteiros retornados à lista deponteiros livres. Tal processo de gerenciamento de memóriapode ser efetuado ao fundo e assim por diante. Em um caso emque, por exemplo, o transmissor possui tempo remanescente emsua TXOP, a fila de retransmissão é gerada rapidamente e atransmissão pode prosseguir para utilizar qualquer TXOPremanescente. Caso o transmissor não tenha permissão pararetransmitir imediatamente (isto é, não há mais TXOPrestante), o mesmo método pode ser efetuado, porém atransmissão não necessita ocorrer imediatamente.
Note-se que, como foi acima descrito com referênciaà Figura 18, pode ser implementado uma cachedo tipo pingpongpara permitir que os arranjos de nós 1842 sejam atualizadossem interferir com uma transmissão em.curso. Tal técnica podetambém ser implementada em um esquema de retransmissão deconfirmação de bloco. A Figura 46 apresenta uma modalidadeexemplar de um método 4600 que pode ser implementado parautilização de uma cachede arranjo de nós ping pong em umprocesso de retransmissão. Como exemplo, o método 4 600 podeser incorporado ao bloco 4550 acima descrito. Em 4610, ajustarum primeiro arranjo de nós ping pong 1842 usando ponteiros denós provenientes da fila de transmissão, potencialmenteatualizados em resposta a informações de retransmissão narequisição de confirmação de bloco. Atualizar a ID de enlaceconforme apropriado em 1844, tal como acima descrito. Em 4620,comutar para este primeiro arranjo de nós para permitir que atransmissão prossiga. Em 4 630, pode ser limpa a estrutura dememó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 umavariedade de fluxos (por exemplo, até 16 fluxos), em que cadafluxo corresponde a um identificador de tráfego (TID). Note-seque um TID mapeia um fluxo proveniente de uma estação. Em umagregado é possível encontrar pacotes correspondentes amúltiplos TIDs, por exemplo agregando pacotes por enlace.Portanto, uma ACK de bloco pode ser retornada correspondendo amúltiplos TIDs (ou uma ACK de bloco de múltiplos TIDs). Em umamodalidade, uma ACK de bloco multi-TID compreende um TID, aseguir um bitmap, a seguir outro TID, a seguir outro bitmap eassim por diante. Surge uma dificuldade pelo fato de que ospacotes dentro de um agregado não estão necessariamente emordem serial (isto é, devido a retransmissões). Assim sendo,para um dado TID a ACK de bloco irá se iniciar com um númerode seqüência inicial, que especifica o número de seqüênciamais baixo recebido em tal agregado para tal TID. A seguir, obitmap do TID é provido na forma de um deslocamento a partirdo número de seqüência inicial. A seguir, serão detalhadasvárias modalidades para a preparação de uma ACK de blocomulti-TID.
Em uma modalidade, a medida que os pacotes chegam,comparar cada número de seqüência e manter o mais baixo. 0processo pode se iniciar gravando-se o primeiro número deseqüência recebido para cada TID. A seguir, a medida que cadapacote chega, comparar o número de seqüência gravado para oTID com o do novo pacote e manter o mais baixo. Ao final doagregado, se terá o número de seqüência inicial mais baixopara cada TID. Após encontrado o número de seqüência maisbaixo representado, subtrair tal número de seqüência do númerode seqüência de cada pacote para o qual se responde (os quaispodem ser gravados a medida que eles chegam) para encontrar odeslocamento do pacote dentro do bitmap. 0 número de seqüênciainicial mais baixo é o número de seqüência inicial para o TID.
Na velocidade de linha, determinar se um pacote é válido podeocorrer na velocidade de linha e simplesmente gravar cada bitpara ACK ou NAK, juntamente com os números de seqüênciaabsolutos. Ao final do agregado, passar por toda a série denúmeros de seqüência de pacotes gravados, usar o valorsubtraído como o deslocamento ou índice para o bitmap ecolocar a ACK ou NAK gravada no bitmap.Em uma modalidade alternativa, armazenar o bitmaprelativo ao número de seqüência mais baixo recebidoatualmente. A seguir, pode ser efetuado um deslocamento àesquerda ou direita (dependendo da ordem de armazenamento)para atualizar a localização. Como exemplo, enquanto searmazena o bitmap, caso o número de seqüência de um pacote quechega seja mais alto do que o número de seqüência mais baixoatual, simplesmente marcar o bit de confirmação no localapropriado (determinado pela diferença entre o número deseqüência mais baixo recebido e o número de seqüência recebidono momento. Caso o número de seqüência que chega seja maisbaixo do que o número de seqüência mais baixo previamenterecebido, então deslocar o bitmap (e colocar a nova ACK ou NAKno ponto mais baixo). O deslocamento pode ser determinado comoa diferença entre o número de seqüência antigo (isto é, onúmero de seqüência inicial mais baixo previamente recebido) eo novo número de seqüência inicial (isto é, o número do pacoterecebido corrente, que será o novo mais baixo). Em contrastecom a primeira modalidade acima descrita, em que foi efetuadaa passagem através dos números de seqüência gravados, nestamodalidade é necessário apenas gravar o bitmap e o número deseqüência inicial mais baixo. Nenhum dos outros números deseqüê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óricoarmazenado para cada fluxo primeiro e a seguir adicionar aomesmo. Qualquer das modalidades pode ser implementada para umcaso de TID único e pode ser repetida para cada TID parasuportar multi-TID.
U-APSD NÃO PROGRAMADO
As modalidades exemplares aqui descritas são tambémbem adequadas para adaptação para prover transporte nãoprogramado com economia de energia automática (UAPSD). A UAPSDé uma técnica usada para economizar energia. Existem muitasvariações, incluindo técnicas programadas e não programadas. AFigura 47 apresenta uma modalidade exemplar de um método 4700para efetuar o transporte não programado com economia deenergia automática. Em 4710, em um típico esquema UAPSD, umterminal de usuário "acorda" de forma autônoma. Em 4720, oterminal de usuário envia um pacote acionador para o ponto deacesso. Em 4730, o ponto de acesso determina a ID de fluxo apartir do pacote recebido. No bloco de decisão 4740, caso hajapacotes aguardando a transmissão para o terminal de usuárioassociado à 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 oprocesso pode parar. No bloco de decisão 4740, caso existampacotes para transmissão para o terminal de usuário, passarpara 4750.
Em 4750, enviar um ou mais pacotes a partir dacache de arranjos de nós TX imediatamente. Como exemplo, umacachede arranjos de nós TX 1810, tal como acima descrito naFigura 18, pode ser acessado. Usando-se as técnicas ilustradasna Figura 18, um transmissor pode responder imediatamente aoterminal de usuário acordado. Isto evita ter de empregar umatécnica alternativa para manter o terminal de usuárioacordado, tal como o envio de um pacote sem dados. Isto evitadesperdício de amplitude de banda, bem como de energia, dadoque o terminal de usuário não necessita permanecer acordadopor mais tempo do que o necessário. Dado que os pacotes estãoenfileirados e prontamente acessíveis, como foi acimadescrito, é provável que, pelo uso desta técnica, uma respostaao terminal de usuário possa ser efetuada incluindo dados.
Note-se que, em alguns sistemas exemplares, tais como umtípico sistema de voz através de protocolo Internet (VOIP),somente um único pacote ou dois podem ser necessários para darsuporte às comunicações de voz. Dessa forma, um terminal deusuário, empregando UAPSD pode acordar de uma forma nãoprogramada, recuperar rapidamente o pacote ou dois comrelativamente pouco retardo e retornar aò sono para economizarenergia.
No bloco de decisão 4760, caso haja pacotes paraenviar além daqueles incluídos no pacote de resposta enviadoem 4750, passar a 4770. Em 4770 acionar um indicador de"enviar mais", o qual pode ser incluído em um pacotetransmitido para o terminal de usuário. Tal indicação de"enviar mais" irá indicar para o terminal de usuário que eledeve permanecer acordado para receber pacotes adicionais. Em4780, recuperar nós adicionais e transmitir pacotes adicionaisassociados, tal como acima descrito. Voltar a 4760 paradeterminar se existem pacotes adicionais a enviar. Uma vez quetodos os pacotes designados para tal terminal de usuário sejamtransmitidos, então, tal como acima descrito, em 4790, o"enviar mais" é desativado e, em 4795, o terminal de usuáriopode voltar a dormir.
Dessa forma, na modalidade exemplar de UAPSD acimadescrita, podem ser transmitidos até quatro pacotes paraqualquer terminal de usuário imediatamente, desde que elesestejam disponíveis na cache de arranjos de nós. Estes quatropacotes podem ser enviados prontamente e, caso mais devamsegui-los, pode ser acionado um indicador. Subseqüentemente,após SIFs, ACK de bloco e similares, pacotes adicionaisestarão prontos para transmissão. Neste exemplo, é mantida umavariável na tabela de estado de fluxo TX (por exemplo, 1030)para indicar a um ponto de acesso se um terminal de usuárioestá acordado ou dormindo. Esta modalidade descreve o uso dearmazenamento em cache tal como ilustrado no transmissorapresentado na Figura 18 (caches de arranjos de nós 1810).
Note-se que quantidades alternativas de armazenamento em cachepodem ser usadas, ou particionadas de forma diferente, casoseja desejado maior armazenamento para fluxos específicos(isto é, repartição para permitir mais do que 4 pacotes naresposta).
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 cacheacima descrito propicia benefícios. Existem duas variedades dePSMP: programada e não programada.
A PSMP não programada (UPSMP) é similar à APSD nãoprogramada. Quando uma estação acorda, ela usa procedimentosEDCA para enviar uma mensagem acionadora, a qual pode ser umamensagem QoS_data ou QoS_null para a classe de acesso que foiconfigurada como habilitada por acionador (através demensagens de estabelecimento). Ao receber tal pacote, o pontode acesso envia pacotes armazenados para tal estação, os quaisficam vantajosamente armazenados na cache de arranjos de nós1810. No último pacote, o ponto de acesso ajusta EOSP para 1para indicar que não existem mais pacotes. Após receber talpacote, a estação volta a dormir. Quando uma estação éconfigurada para ser habilitada por UPSMP para uma classe deacesso específica, o fluxo correspondente é indicado comosendo habilitado por UPSMP na tabela de mapeamento de fluxoTA/TID (por exemplo, 1030) Além disso, é também mantida umavariável de estado indicando se o fluxo está no modo de sonoou ativo na tabela de mapeamento de fluxo TA/TID.
Dessa forma, as modalidades acima são bem adequadaspara suportar UPSMP. Em uma modalidade exemplar, podem sermantidas uma primeira variável indicando se um fluxo é umfluxo PSMP e uma segunda variável indicando se uma estaçãoespecífica está acordada ou dormindo, sendo adicionadas aoutras variáveis tal como acima descrito. Após um receptor dedados (ou acionador), o ponto de acesso checa se o acionador éum fluxo UPSMP legítimo (de acordo com a primeira variável) eajusta a segunda variável de "dormindo" para "acordada". 0ponto de acesso envia pacotes armazenados para tal STA, osquais estão prontamente disponíveis, a seguir manda a estaçãodormir e ajusta a segunda variável de volta para "dormindo". 0bit de acordar pode também ser usado caso exista TXOPremanescente. Em tal caso, o bit de acordar é checado e a TXOPsomente é usada para uma STA quando ela estiver acordada. 0ponto de acesso tem a autoridade para manter uma estaçãoacordada para efetuar transmissões e assim por diante. Asvariáveis podem ser adicionadas à tabela de estado de arranjoTX 1830.
Na PSMP programada (SPSMP), é desenvolvido umgabarito e a seguir é publicado um programa de enlacedescendente e enlace descendente (por exemplo, o firmware emum ponto de acesso poderia efetuar tal função, bem comoqualquer outro dispositivo). Os dispositivos de comunicaçãosem fio dentro da WLAN podem usar o mesmo gabarito até que umanova chamada seja adicionada ou uma chamada terminar. Aseguir, pode ser criado um novo gabarito.
Em uma modalidade, o ponto de acesso está nocontrole da PSMP programada. Um método pode ser efetuado comose segue: (1) o próprio ponto de acesso envia um "pronto paraenviar" (CTS) para limpar o meio. 0 CTS ajusta uma duração NAVigual às oportunidades de transmissão a jusante e a montante;(2) o ponto de acesso envia o quadro PSMP, que detalha oprograma do enlace descendente e enlace descendente (porestação, com precisão de microssegundos); (3) a transmissão deenlace descendente se inicia; (4) a transmissão de enlacedescendente se segue a transmissão de enlace descendente; (5)tal formato é altamente programado e o ponto de acesso evitaultrapassar o ponto final programado, para remover qualquer"jitter"; isto pode ser conseguido restringindo-se o acesso aomeio próximo ao final da duração NAV. É importante evitar ojitter para que os terminais de usuário não acordem parachecar seu estado, percam suas mensagens devido a umdeslocamento introduzido por jitter e voltem a dormir,perdendo suas oportunidades de transmissão.Em uma modalidade exemplar, a estrutura de dadosusada para gerar o programa será mantida em uma estrutura dedados ping pong, tal como acima descrito. A estrutura de dadoscompreende o gabarito usado para o programa de enlacedescendente e enlace descendente usado para PSMP programada. 0programa corrente é mantido em uma metade da estrutura dedados ping pong. Este pode ser transmitido para as estações naWLAN. 0 ponto de acesso pode então efetuar mudanças nogabarito na outra metade da estrutura de dados ping pong. Umseletor pode ser empregado para se alternar entre o primeirogabarito e o segundo gabarito. O ponto de acesso fica livrepara trabalhar sobre qualquer dos gabaritos que não estejaativo, sem interferir com o gabarito ativo. Tal técnica éanáloga ao uso dos arranjos de modo 1842, ou das tabelas defluxo ocultas 1092 e 1096.
MODALIDADE ALTERNATIVA: CAPACIDADES DE TRANSMISSÃO ALTA EBAIXA BIFURCADAS
Tal como foi acima descrito com referência à Figura10a, várias funções, tais como a fragmentação, podem não sernecessárias para o processamento de pacotes de altavelocidade, enquanto o suporte para outros tipos de pacotes oupacotes 802.11 legados pode ainda ser desejado. A Figura 48ilustra uma modalidade alternativa implementado mais de umprocessador MAC. Um processador MAC de alta velocidade, talcomo o processador H2W 530 detalhado e o MAC inferior 540(implementado em um processador MAC tal como o 24 0 acimadescrito), pode ser implementado (talvez com funcionalidadesimplificada) para processamento de alta velocidade eficiente,enquanto um processador MAC alternativo 4810 é implementado emparalelo para processamento de outros tipos de pacotes (oupacotes legados, tais como vários tipos de pacotes 802.11, porexemplo).
Em uma modalidade exemplar, um processador MAC decapacidade de transmissão mais baixa 4810 é incorporado noprocessador 210 (e pode também incluir outros componentes,tais como componentes implementados para processamento depacotes legados, caso desejado). 0 processador 210, namodalidade exemplar, tem poder suficiente para processar ospacotes de baixa capacidade de transmissão e legados,permitindo que componentes de capacidade de transmissão maisalta, tais como o processador H2W 530, sejam projetados paradar suporte eficiente a pacotes de alta capacidade detransmissão. Outras modalidades podem incluir processadoresMAC adicionais, tal como descrito mais adiante.
Neste exemplo, dado que os pacotes 802.11η nãosuportarão a fragmentação, as modalidades acima descritaspodem ser simplificadas pela remoção do suporte à fragmentaçãodo hardware e sua implementação em firmware. Váriassimplificações exemplares são notadas acima. Tendo-se ofirmware processando todos os pacotes legados permite aremoção do suporte à fragmentação, simplifica os motores detransmissão e recepção e simplifica o gerenciamento de nós eblocos (dado que o limite de fragmentação pode ser diferentedos tamanhos de blocos) . Os técnicos na área poderãofacilmente adaptar as modalidades aqui descritas para inclusãoou omissão de vários blocos de processamento, dependendo dequais recursos/características sejam suportados.
Os técnicos na área notarão prontamente ascompensações entre a implementação de uma modalidade incluindoum único processador capaz de processar todas as funções devários tipos de pacotes e outra modalidade compreendendo doisou mais processadores MAC, cada um deles capaz de proverqualquer subconjunto de funcionalidades. Naturalmente, podetambém ser implementado um único processador MAC capaz deprocessar pacotes demandando um único conjunto defuncionalidades.
A bifurcação de alta e baixa capacidades detransmissão constitui apenas um exemplo de partição defuncionalidades entre múltiplos processadores MAC. De um modogeral, qualquer conjunto de funções pode ser implementado emdiferentes processadores MAC. Como exemplo, pode ser desejávelprocessar dois tipos de pacotes de mesma velocidade alta (ouqualquer velocidade) em processadores separados quando asdemandas de processamento para os diferentes tipos de pacotesnão compartilharem similaridades suficientes para obtereficiência pelo compartilhamento de componentes, ou caso asconsiderações de projeto de circuito sejam suficientementediferentes entre projetos para suportar vários tipos depacotes.
A Figura 4 9 apresenta uma modalidade exemplar de umdispositivo de comunicação sem fio 4 900 (por exemplo, um pontode acesso 104 ou terminal de usuário 106) incluindo doisprocessadores MAC, incluindo um primeiro processador MAC talcomo acima descrito e um segundo processador MAC incorporadono microprocessador. Tal exemplo constitui um exemplo maisdetalhado similar à modalidade generalizada da Figura 48.
Os técnicos na área poderão facilmente adaptar amodalidade apresentada na Figura 5 acima à modalidadealternativa apresentada na Figura 49. Neste exemplo, ospacotes de entrada e saida chegam em, e partem de, umainterface externa no barramento 4980. As interfaces externasexemplares incluem a SDIO I/F 582, PCI I/F 584, uma interfaceUSB, ou qualquer outro tipo de interface. A interface podeincluir circuitos para arbitrar e/ou multiplexar entre uma oumais interfaces. Os pacotes que chegam são processados pelobloco de entrada 4910 e armazenados na memória através dainterface de memória 4920, usando quaisquer das técnicas dememória e entrada acima descritas. A interface de memória 4 920pode incluir, por exemplo, o árbitro de memória 552 e/ou 556,o multiplexador 554, a interface SRAM 558, a interface SDRAM562, ou vários outros componentes. Os técnicos na área poderãoadaptar também outras interfaces de memória.
Em contraste com a modalidade da Figura 5, certostipos de pacotes são processados no processador (por exemplo,o processador 210). Neste exemplo, os pacotes de entrada quedevem ser formatados pelo processador são transportados apartir da interface de memória 4920 para o processador atravésdo barramento de processador 520 (vários outros componentespodem também estar ligados ao barramento de processador 520,exemplos dos quais são mostrados na Figura 5) . Pode serimplementada uma interface de processador entre a interface dememória 4920 e o barramento 520. Neste exemplo, sãoimplementados um ou mais FIFO 4 950 de memória de processador(qualquer outra interface para transporte dos pacotesrecebidos. Isto permite que os pacotes (bem como estruturas dedados tais como nós, blocos, etc.) sejam armazenados para usopelo processador 210. Os pacotes de baixa capacidade detransmissão recebidos são também processados pelo processador210 e podem ser transferidos a partir da interface de memória4920 para o barramento de processador 520 através de um FIFOde memória de processador 4950.
Em uma modalidade alternativa, os FIFO de memóriade processador podem ser substituídos por uma conexão direta àmemória de processador. Como exemplo, DMA pode ser usado paracolocar pacotes de baixa velocidade na memória paraprocessamento pelo processador 210. Em uma modalidade, ainterface de memória 4 920 pode gravar pacotes de baixavelocidade diretamente na memória de processador 4950 (não umFIFO) sem armazenar o pacote na RAM de pacotes de altavelocidade.
Neste exemplo, os pacotes podem também serdepositados na memória (através da interface de memória 4920)pelo processador 210. Como exemplo, o processador poderedirecionar um pacote recebido para fora através da WLAN semenviar o pacote através da interface externa. Note-se quetodas as modalidades aqui descritas podem ser adaptadas pararedirecionar pacotes recebidos para transmissão. Os pacoteslevados ao barramento 520 podem ser formatados usando-sequaisquer técnicas acima descritas.Na modalidade exemplar, pacotes 802.11b, g ou e sãodirecionados para o processador para formatação (incluindoqualquer fragmentação que possa ser apropriada). Outros tiposde pacotes podem também ser adequados para formação peloprocessador. Como exemplo, a 802.11η especifica uma unidade dedados de serviço MAC agregada (AMSDU) que é tambémadequadamente formatada pelo processador. Podem serimplementadas várias técnicas para redirecionamento. Nesteexemplo, quando um pacote é recebido para formatação peloprocessador, o pacote é armazenado na memória e umainterrupção é dada ao processador para iniciar a formataçãopara transmissão (os detalhes não são mostrados).
Os pacotes formatados de baixa capacidade detransmissão ou legados, após o processamento pelo processador210, podem ser armazenados para transmissão no FIFO detransmissão WLAN de processador 4 960. Pode ser providofeedback ao FIFO de transmissão WLAN de processador 4960, talcomo um sinal de "pronto", sinais para prover controle develocidade e similares. Tais pacotes podem também ser levadosao mecanismo TX 1880 para enf ileiramento e possívelprocessamento adicional (por exemplo, com o mecanismo deprotocolo legado 2210) e finalmente para transmissão atravésda PHY 260. Eles podem ser levados diretamente ao mecanismo TX1880, ou podem ser incorporados a filas 1850 (tal comodescrito na Figura 18), gerenciados pelo controle de arranjo1840, etc. Note-se que na modalidade exemplar o módulo deagregação 2610 pode ser bypassado para pacotes legados e A-MSDU.
Os pacotes de alta velocidade, tais como asunidades de dados de protocolo MAC agregado 802.11η (A-MPDU) ,são também recebidos pelo bloco de entrada 4 910 e armazenadosna memória através da interface de memória 4920. Em tal caso,os pacotes são transmitidos pelo mecanismo TX 1880 usando-seas técnicas acima descritas (por exemplo, com referência àFigura 18). Neste exemplo, o processamento em hardware dospacotes de alta velocidade permite transmissão em altavelocidade, enquanto os pacotes de menor velocidade, tais comoos pacotes legados acima descritos, podem ser portados nofirmware do processador 210, sem criar um gargalo decapacidade de transmissão. Isto permite que os detalheslegados de vários pacotes legados sejam deixados de fora dohardware de processamento MAC de alta velocidade, permitindoque ele seja projetado mais eficientemente, provendo aindasuporte ao legado através do processador MAC implementado emfirmware. Os pacotes de alta velocidade são finalmentetransmitidos através da WLAN pela PHY. Um cabeçalho pode serusado para indicar a transmissão física de alta velocidade oubaixa velocidade.
Os pacotes recebidos a partir da WLAN são levados aum mecanismo RX acoplado 4970 e finalmente armazenados namemória através da interface de memória 4 920. Os pacotes debaixa velocidade podem ser passados ao processador 210 paraprocessamento (isto é, pacotes legados, ou pacotes usandorecursos não suportados no processador MAC do hardware, taiscomo fragmentação, etc.). Em uma modalidade alternativa, ospacotes podem ir direto para o processador 210 (não sendoarmazenados na memória), ou podem ser conectados a qualqueroutro processador MAC alternativo (note-se que pode serimplementado um número zero de processadores MAC, parasuportar qualquer número de conjunto de recursos de pacotes).
Neste exemplo, os pacotes de baixa capacidade de transmissãoou legados são levados ao processador a partir da interface dememória 4 920, através de um FIFO de memória de processador4950, tal como acima descrito. Eles podem ou não serparcialmente processados pelo mecanismo de protocolos legados2210. note-se que a unidade de desagregação 2802 pode serbypassada para unidades de dados não agregadas (tais comopacotes legados).
O mecanismo RX 4970 (bem como outros componentes,saltotais como o mecanismo legado 2210, caso implementado, porexemplo) processa pacotes desagregados tal como acima descritono núcleo MAC inferior 540. Neste exemplo, os pacotes de altavelocidade são os únicos pacotes processados no processadorMAC de hardware, porém em modalidades alternativas qualquertipo de pacotes pode ser processado.
O mecanismo RX 4970 pode decodificar qualquer dostipos de pacotes usando o mecanismo legado 2210, tal comoacima descrito. Note-se que os pacotes recebidos podem sermarcados por uma interface MAC/PHY (por exemplo, a interfaceMAC/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 seraplicado para indicar a rota de um pacote para um dentrequaisquer de vários processadores MAC.
Na modalidade exemplar acima descrita, note-se quea agregação e desagregação se aplicam somente a pacotes dealta velocidade (a agregação é opcional para pacotes de altavelocidade, como acima descrito). Os pacotes de baixavelocidade passam pelos blocos de agregação e desagregação. Afragmentação é suportada apenas para pacotes legados ou debaixa velocidade, não para pacotes de alta velocidade. 0processador, (isto é, 210) é um primeiro processador MAC e osegundo processador MAC compreende vários componentes acimadescritos (isto é, na Figura 5) . Como foi acima descrito,estes são apenas exemplos. De um modo geral, qualquer conjuntode recursos pode ser suportado em um primeiro processador MACe o mesmo conjunto, ou um conjunto diferente, de recursos emum segundo processador MAC (cada um dos quais, ou nenhum dosquais, pode ser efetuado usando-se um processador tal como oprocessador 210).
0 bloco de saida 4930 pode receber e realizarhandoff pacotes de alta velocidade provenientes do armazenadorde pacotes através da interface de memória 4 920. O bloco desaida 4930 pode também arbitrar entre pacotes de baixavelocidade provenientes do FIFO de saída de processador 4940 epacotes de alta velocidade. Na modalidade exemplar, oprocessador leva pacotes processados prontos para handoff emordem de prioridade para o FIFO de saída de processador 4 940.
Em uma modalidade alternativa, uma memória alternativa poderiasubstituir o FIFO de saída de processador 4940 para permitirque o bloco de saída 4930 selecione pacotes para priorizaçãodentro do bloco de saída, caso desejado. Em outra modalidadealternativa, o FIFO de saída de processador 4940 poderia sereliminado e o bloco de saída 4930 poderia realizar handoffpacotes de baixa velocidade através de acesso direto para amemória do processador (por exemplo, com DMA ou outro métodode acesso). Em mais outra modalidade, a saída do FIFO de saídade processador 4940 pode possuir múltiplas filas de prioridadea partir das quais o bloco de saída 4 930 poderia selecionar aimplementação de um esquema de prioridade.
Os técnicos na área notarão várias configuraçõesalternativas dos ensinamentos incorporados no dispositivo decomunicação sem fio 4900.
A Figura 50 ilustra aspectos de armazenamento emarmazenador e enfileiramento de pacotes de múltiplos fluxos. AFigura 50 compreende um dispositivo para armazenar 5010 em umaprimeira estrutura de dados 5040 em um armazenador de pacotes5030 o comprimento de um primeiro pacote 5050, o número deseqüência do pacote 5060 e um segundo local de armazenador depacotes 5070 de uma segunda estrutura de dados 5080 noarmazenador de pacotes, e dispositivos para armazenar dados5020 provenientes do primeiro pacote na segunda estrutura dedados 5080 identificado pela segunda localização dearmazenador de pacotes 5070 armazenada.
A Figura 51 ilustra aspectos de armazenamento emarmazenador e enfileiramento de pacotes de múltiplos fluxos. AFigura 51 compreende uma primeira estrutura de dados 5140associada a um pacote; e uma ou mais segundas estruturas dedados 5180 compreendendo dados provenientes do pacoteassociado; e apresenta a primeira estrutura de dadoscompreendendo um campo de comprimento 5150 que indica ocomprimento de pacote associado; um campo de número deseqüência 5160 indicando o número de seqüência do pacoteassociado; e um campo de ponteiro de segunda estrutura dedados 5170, indicando a localização em um armazenador depacotes de uma das segundas estruturas de dados 5180; eapresenta dispositivos para armazenar 5120 o pacote em uma oumais das segundas estruturas de dados 5180.
A Figura 52 ilustra aspectos de gerenciamento dememória para controle de acesso a midia de alta velocidade. AFigura 52 compreende dispositivos 5290 para selecionar umprimeiro ou segundo modo; dispositivos 5210 para configuraruma primeira memória 5230 em um primeiro modo paraarmazenamento um ou mais parâmetros para cada um dentre umapluralidade de fluxos de comunicação; dispositivos paraconfigurar 5260 a primeira memória em um segundo modo paraarmazenar um ponteiro para cada um dentre a pluralidade defluxos de comunicação, cada ponteiro indicando uma localizaçãoassociada ao respectivo fluxo de comunicação; dispositivospara configurar 5220 uma segunda memória 5240 no primeiro modopara armazenar pacotes para cada um dentre a pluralidade defluxos de comunicação; dispositivos para configurar 5270 asegunda memória no segundo modo para armazenar uma pluralidadede conjuntos de um ou mais parâmetros para cada um dentre apluralidade de fluxos de comunicação, cada conjunto de um oumais parâmetros armazenado na localização indicada peloponteiro associado ao respectivo fluxo de comunicação; edispositivos para configurar 5280 uma interface de memória5250 que opera com uma terceira memória no segundo modo paraoperar para armazenar pacotes para cada um dentre apluralidade de fluxos de comunicação.
A Figura 53 ilustra aspectos de controle de acessoa midia de múltiplos fluxos. A Figura 53 compreendedispositivos para ajustar 5320 um índice identificador defluxo para um dentre uma pluralidade de valores de índiceidentificador de fluxo, cada índice identificador de fluxoestando associado a um respectivo fluxo dentre uma pluralidadede fluxos; dispositivos para armazenar 5310 uma pluralidade deconjuntos de parâmetros 5340 em uma primeira memória 5330 emuma pluralidade de primeiras localizações de memória, cadaconjunto de parâmetros compreendendo um ou mais parâmetrospara um respectivo fluxo dentre uma pluralidade de fluxos, aprimeira localização de memória para cada conjunto deparâmetros identificado por um respectivo valor de índiceidentificador de fluxo tal como ajustado no índiceidentificador de fluxo; e dispositivos para recuperar 5350 umou mais dos parâmetros de um dentre a pluralidade de conjuntosde parâmetros a partir da primeira memória de acordo com oíndice identificador de fluxo.
A Figura 54 ilustra aspectos de controle de acessoa mídia de múltiplos fluxos. A Figura 54 compreendedispositivos para armazenar 5410 uma pluralidade de conjuntosde parâmetros 5420 em uma primeira memória 5430, cada conjuntode parâmetros estando armazenado em uma respectiva localizaçãodentre uma pluralidade de localizações de conjuntos deparâmetros, cada conjunto de parâmetros compreendendo um oumais parâmetros para um respectivo fluxo dentre umapluralidade de fluxos, cada um dentre a pluralidade de fluxossendo identificado por um dentre uma pluralidade deidentificadores de fluxo; dispositivos para armazenar 5440 umapluralidade de ponteiros de conjuntos de parâmetros 5450 emuma segunda memória, cada ponteiro de conjunto de parâmetrosidentificando uma dentre a pluralidade de localizações deconjuntos de parâmetros na primeira memória, cada ponteiro deconjunto de parâmetros estando associado a um dentre apluralidade de fluxos; dispositivos para recuperar 5470 umponteiro de conjunto de parâmetros a partir da segunda memóriade acordo com um identificador de fluxo; dispositivos pararecuperar 5480 um ou mais parâmetros a partir da primeiramemória por acesso ao conjunto de parâmetros ajustado deacordo com o ponteiro de conjunto de parâmetros recuperado.
A Figura 55 ilustra aspectos de multiplexação demúltiplos fluxos para controle de acesso a midia de altavelocidade. A Figura 55 compreende dispositivos para armazenar5510 um ou mais elementos de pacotes 5520 associados a umdentre uma pluralidade de fluxos em cada uma dentre umasegunda pluralidade de filas 5530; dispositivos paraselecionar 5540 um elemento dentre a segunda pluralidade defilas; e dispositivos para armazenar 5550 o elementoselecionado 5560 em uma dentre uma primeira pluralidade defilas 5570, cada fila associada a um dentre uma pluralidade decanais.
A Figura 56 ilustra aspectos de agregação em umsistema de comunicação de alta velocidade. A Figura 56compreende dispositivos para armazenar 5610 uma ou maisprimeiras estruturas de dados 5620 em uma fila 5630, em quecada primeira estrutura de dados compreende um campo decomprimento 5635 de um respectivo pacote associado e umponteiro 5640 para uma segunda estrutura de dados 5650, asegunda estrutura de dados compreendendo pelo menos uma partedos respectivos dados de pacote associados; dispositivos paradeterminar uma quantidade de dados de transmissão 5660;dispositivos para recuperar 5670 um ou mais valores de
comprimento a partir do campo de comprimento de uma ou maisdentre as primeiras estruturas de dados na fila; dispositivospara selecionar 5680 um conjunto de uma ou mais primeirasestruturas de dados de tal forma que a soma dos valores decomprimento recuperados a partir do conjunto de primeiras
estruturas de dados seja menor ou igual à quantidade de dadosde transmissão; e dispositivos para agregar pacotes 5690 emuma unidade de dados de protocolo agregado, cada pacoteagregado sendo identificado pelo ponteiro para a segundaestrutura de dados no conjunto selecionado de primeirasestruturas de dados.A Figura 57 ilustra aspectos de caches ocultos queservem como filas em serviço e filas em espera. A Figura 57compreende dispositivos para selecionar 5720 uma primeira fila5710 como uma fila em serviço; dispositivos para selecionar5740 uma segunda fila 5730 como uma fila em esperadispositivos para programar um primeiro fluxo 5750dispositivos para programar um segundo fluxo 5760dispositivos para armazenar um ou mais elementos 5770associados ao primeiro fluxo programado na fila em serviço;dispositivos para processamento 5780 da fila em serviço paratransmissão durante uma primeira oportunidade de transmissão;e dispositivos para armazenar 57 90 um ou mais elementosassociados ao segundo fluxo programado na fila em espera, emque o armazenamento pode ocorrer simultaneamente com oprocessamento da fila em serviço.
A Figura 58 ilustra aspectos de políticas deentrada. A Figura 58 compreende dispositivos para receber 5810um identificador de fluxo associado a um pacote para um dentreuma pluralidade de fluxos; dispositivos para recuperar 5820 umou mais parâmetros associados ao identificador de fluxo;dispositivos para admitir 5830 o pacote quando uma condiçãopredeterminada for atendida de acordo com os um ou maisparâmetros recuperados associados ao identificador de fluxo; edispositivos para rejeitar 5840 o pacote quando a condiçãopredeterminada não for atendida de acordo com os um ou maisparâmetros recuperados associados ao identificador de fluxo.
A Figura 59 ilustra aspectos de políticas deentrada. A Figura 59 compreende dispositivos para receber 5910um identificador de fluxo associado a um pacote para um dentreuma pluralidade de fluxos; dispositivos para recuperar umaocupação de armazenador de pacotes corrente 5920; dispositivospara recuperar uma ocupação máxima de armazenador 5930associada ao identificador de fluxo; dispositivos pararecuperar pacotes acumulados 5940 associados ao identificadorde fluxo; dispositivos para recuperar o máximo de pacotes 5950associado ao identificador de fluxo; e dispositivos paraadmitir o pacote 5960 quando a ocupação corrente doarmazenador de pacotes for menor do que a ocupação máxima dearmazenador associada ao identificador de fluxo ou os pacotesacumulados associados ao identificador de fluxo for menor queo máximo de pacotes associados ao identificador de fluxo.
A Figura 60 ilustra aspectos de políticas deentrada. A Figura 60 compreende um armazenador de pacotes6010; dispositivos para recuperar 6020 um ou mais parâmetrospara cada um dentre uma pluralidade de fluxos; e dispositivospara armazenar condicionalmente 6030 um pacote associado a umdentre a pluralidade de fluxos no armazenador de pacotes deacordo com os um ou mais parâmetros recuperados.
A Figura 61 ilustra aspectos de controle de acessoa mídia para resposta de baixa latência. A Figura 61compreende dispositivos para armazenar 6110 uma ou maisprimeiras estruturas de dados 6120 em uma fila 6130, em quecada primeira estrutura de dados compreende um campo decomprimento 6135 de um respectivo pacote associado e umponteiro 6140 para uma segunda estrutura de dados 6150, asegunda estrutura de dados compreendendo pelo menos uma partedos respectivos dados de pacote associados; dispositivos 6160para recuperar um ou mais valores de comprimento a partir docampo de comprimento de um ou mais das primeiras estruturas dedados na fila em resposta a uma oportunidade de transmissãorequerendo uma transmissão de resposta dentro de um intervalode tempo predeterminado; e dispositivos 6170 para formar umaunidade de dados de protocolo de resposta dentro do intervalode tempo predeterminado, a unidade de dados de protocolocompreendendo um valor de comprimento de unidade de dados deprotocolo determinado de acordo com o pelo menos um valor decomprimento dentro do intervalo de tempo predeterminado.
Os técnicos na área notarão que as informações esinais podem ser representados usando-se quaisquer dentre umadiversidade de diferentes tecnologias e técnicas. Comoexemplo, os dados, instruções, comandos, informações, sinais,bits, símbolos e chips que possam ter sido mencionados portoda a descrição acima podem ser representados por tensões,correntes, ondas eletromagnéticas, campos ou partículaseletromagnéticas, campos ou partículas ópticas, ou quaisquercombinações de tais.
Os técnicos na área notarão também que os váriosexemplos de blocos lógicos, módulos, circuitos e etapas dealgoritmos descritos em conexão com as modalidades aquidescritas podem ser implementados na forma de hardwareeletrônico, software de computadores, ou combinações de tais.Para ilustrar claramente tal intercambialidade de hardware esoftware, vários exemplos de componentes, blocos, módulos,circuitos e etapas foram acima descritos de um modo geral emtermos de sua funcionalidade. Se tal funcionalidade éimplementada na forma de um hardware ou software depende daaplicação e restrições de projeto específicas impostas aosistema como um todo. Os técnicos na área podem implementar afuncionalidade descrita de diversas formas para cada aplicação
específica, porém tais decisões de implementação não devem serinterpretadas como um afastamento do escopo da presenteinvenção.
Os vários exemplos de blocos lógicos, módulos ecircuitos aqui descritos em conexão com as modalidades aquiapresentadas podem ser implementados ou efetivados por meio deum 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 outrosdispositivos lógicos programáveis, portas individuais oulógica de transistores, componentes de hardware individuais,ou quaisquer combinações de tais projetadas para efetuar asfunções aqui descritas. Um processador de uso geral pode serum microprocessador, porém como alternativa o processador podeser qualquer processador, controlador, micro controlador, oumáquina de estado convencionais. Um processador pode tambémser implementado na forma de uma combinação de dispositivos decomputação, por exemplo, uma combinação de um DSP e ummicroprocessador, uma pluralidade de microprocessadores, um oumais microprocessadores em conjunto com um núcleo DSP, ouqualquer outra configuração similar.
As etapas de um método ou algoritmo descritos emconexão com as modalidades aqui apresentadas podem serefetivadas diretamente em hardware, em um módulo de softwareexecutado por um processador, ou em uma combinação de ambos.
Um módulo de software pode residir em uma memória RAM, memóriaflash, memória ROM, memória EPROM, memória EEPROM,registradores, disco rígido, um disco removível, um CD-ROM, ouqualquer outra forma de meio de armazenamento conhecido pelostécnicos na área. Um exemplo de meio de armazenamento pode seracoplado ao processador de tal forma que o processador possaler informações provenientes do, e gravar informações no, meiode armazenamento. Como alternativa, o meio de armazenamentopode estar integrado ao processador. 0 processador e o meio dearmazenamento podem residir em um ASIC. 0 ASIC pode residir emum terminal de usuário. Como alternativa, o processador e omeio de armazenamento podem residir na forma de componentesindividuais em um terminal de usuário.
A descrição acima das modalidades preferidas éprovida para permitir que os técnicos na área efetivem oufaçam uso da presente invenção. As diferentes modificaçõesdessas modalidades ficarão prontamente claras para os técnicosna área e os princípios genéricos aqui definidos podem seraplicados a outras modalidades sem o uso das faculdadesinventivas. Dessa forma, a presente invenção não deve serlimitada às modalidades aqui apresentadas, devendo receber oescopo mais amplo, consistente com os princípios ecaracterísticas novas aqui descritos.

Claims (16)

1. Método para armazenamento de memóriacaracterizado pelo fato de que compreende:selecionar um primeiro ou segundo modo;o primeiro modo compreendendo:armazenar em uma primeira memória um ou maisparâmetros para cada um dentre uma pluralidade de fluxos decomunicação; earmazenar em uma segunda memória pacotespara cada um dentre a pluralidade de fluxos de comunicação;o segundo modo compreendendo:armazenar na primeira memória um ponteiropara cada um dentre a pluralidade de fluxos de comunicação,cada ponteiro indicando um local associado ao fluxo decomunicação respectivo;armazenar na segunda memória uma pluralidadede conjuntos de um ou mais parâmetros para cada um dentre apluralidade de fluxos de comunicação, cada conjunto de umou mais parâmetros armazenados no local indicado peloponteiro associado ao fluxo de comunicação respectivo; econfigurar uma interface de memória operávelcom uma terceira memória que opera para armazenar pacotespara cada um dentre a pluralidade de fluxos de comunicação
2. Método, de acordo com a reivindicação 1,caracterizado pelo fato de que:no primeiro modo a segunda memória compreende umarmazenador de pacote; eno segundo modo a interface de memória é operávelpara armazenar pacotes em um armazenador de pacotes naterceira memória.
3. Método, de acordo com a reivindicação 2,caracterizado pelo fato de que realiza no primeiro modoe/ou no segundo modo compreende adicionalmente:armazenar em uma primeira estrutura de dados noarmazenador de pacotes o comprimento de um primeiro pacote,o número de seqüência do pacote e uma localização de umsegundo armazenador de pacotes de uma segunda estrutura dedados no armazenador de pacotes; earmazenar dados a partir do primeiro pacote nasegunda estrutura de dados identificada pela localização dearmazenador do segundo pacote armazenado.
4 . Método, de acordo com a reivindicação 3,caracterizado pelo fato de que compreende adicionalmente:armazenar em uma terceira estrutura de dados noarmazenador de pacotes o comprimento de um segundo pacote,o número de seqüência do segundo pacote, e uma localizaçãode armazenador de um quarto pacote de uma quarta estruturade dados no armazenador de pacotes;armazenar dados a partir do segundo pacote naquarta estrutura de dados identificada pela localização dearmazenador de quarto pacote armazenado; earmazenar a localização da terceira estrutura dedados na primeira estrutura de dados.
5. Método, de acordo com a reivindicação 3,caracterizado pelo fato de que compreendendo adicionalmenteformar uma fila de pacotes por armazenamento de uma listainterligada de uma pluralidade de primeiras estruturas dedados, cada primeira estrutura de dados associada a umdentre uma pluralidade de pacotes.
6. Método, de acordo com a reivindicação 3,caracterizado pelo fato de que compreende adicionalmenteformar um arranjo de primeiras estruturas de dados, cadaprimeira estrutura de dados estando associada a um dentreuma pluralidade de pacotes.
7. Método, de acordo com a reivindicação 3,caracterizado pelo fato de que compreende adicionalmenteformar uma lista de ponteiro de uma primeira estrutura dedados livre, a lista de ponteiros de uma primeira estruturade dados livre compreendendo um ou mais ponteiros deprimeira estrutura de dados para associar a uma primeiraestrutura de dados.
8. Método, de acordo com a reivindicação 7,caracterizado pelo fato de que compreende adicionalmente:recuperar um ponteiro de primeira estrutura dedados a partir da lista de ponteiro de primeira estruturade dados livre;remover o ponteiro de primeira estrutura de dadosrecuperado da lista de ponteiro de primeira estrutura dedados livre; earmazenar a primeira estrutura de dados noarmazenador de pacotes em uma localização identificada peloponteiro de primeira estrutura de dados recuperado.
9. Método, de acordo com a reivindicação 7,caracterizado pelo fato de que adicionalmente compreendeadicionar um ponteiro de primeira estrutura de dadospreviamente removido à lista de ponteiros de primeiraestrutura de dados livre para remover a primeira estruturade dados do armazenador de pacotes.
10. Método, de acordo com a reivindicação 3,caracterizado pelo fato de que compreende adicionalmenteformar uma lista de ponteiros de segunda estrutura de dadoslivre, a lista de ponteiros de segunda estrutura de dadoslivre compreendendo um ou mais ponteiros para associar auma segunda estrutura de dados.
11. Método, de acordo com a reivindicação 10,caracterizado pelo fato de que compreende adicionalmente:recuperar um ponteiro de segunda estrutura dedados a partir da lista de ponteiros de segunda estruturade dados livre;remover o ponteiro de segunda estrutura de dadosrecuperado a partir da lista de ponteiros de segundaestrutura de dados livre; earmazenar o ponteiro de segunda estrutura dedados recuperado na localização de um segundo armazenadorde pacotes da primeira estrutura de dados.
12. Método, de acordo com a reivindicação 11,caracterizado pelo fato de que compreende adicionalmentearmazenar a segunda estrutura de dados no armazenador depacotes em uma localização identificada pelo ponteiro desegunda estrutura de dados recuperado.
13. Método, de acordo com a reivindicação 10,caracterizado pelo fato de que adicionalmente compreendeadicionar um ponteiro de segunda estrutura de dadospreviamente removido à lista de ponteiros da segundaestrutura de dados livre para remover a segunda estruturade dados do armazenador de pacotes.
14. Método, de acordo com a reivindicação 13,caracterizado pelo fato de que a segunda localização dearmazenador de pacotes da segunda estrutura de dados noarmazenador de pacotes está armazenada em um campo deponteiro de segunda estrutura de dados da primeiraestrutura de dados, e compreendendo adicionalmenterecuperar uma segunda estrutura de dados a partir doarmazenador de pacotes, a segunda estrutura de dadosidentificada pelo campo de ponteiro de segunda estrutura dedados da primeira estrutura de dados.
15. Equipamento para gerenciamento de memóriacaracterizado pelo fato de que compreende:uma primeira memória (5230), configurada em umprimeiro modo para armazenar um ou mais parâmetros paracada um dentre uma pluralidade de fluxos de comunicação econfigurado em um segundo modo para armazenar um ponteiropara cada um dentre a pluralidade de fluxos de comunicação,cada ponteiro indicando uma localização associada ao fluxode comunicação;uma segunda memória (5240), configurada noprimeiro modo para armazenar pacotes para cada um dentre apluralidade de fluxos de comunicação e configurado nosegundo modo para armazenar uma pluralidade de conjuntos deum ou mais parâmetros para cada um dentre a pluralidade defluxos de comunicação, cada conjunto dentre um ou maisparâmetros armazenados na localização indicada peloponteiro associado ao fluxo de comunicação respectivo;uma interface de memória (5250) operável com umaterceira memória, configurado no segundo modo que operapara armazenar pacotes para cada um dentre a pluralidade defluxos de comunicação; eum processador (5290) para selecionar um modoselecionado como um primeiro modo ou o segundo modo,configurando a primeira memória (5230) de acordo com o modoselecionado, configurando a segunda memória (5240) deacordo com o modo selecionado, e configurando a interfacede memória (5250) de acordo com o modo selecionado.
16. Midia legível por computador caracterizadopelo fato de que inclui instruções na mesma que quandoexecutadas pelo processador fazem com que o processadorrealize o método definido em qualquer das reivindicações de 1 a 14.
BRPI0709704-2A 2006-03-31 2007-03-30 gerenciamento de memària para controle de acesso À mÍdia de alta velocidade BRPI0709704A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US78791506P 2006-03-31 2006-03-31
US60/787,915 2006-03-31
PCT/US2007/065678 WO2007115199A2 (en) 2006-03-31 2007-03-30 Memory management for high speed media access control

Publications (1)

Publication Number Publication Date
BRPI0709704A2 true BRPI0709704A2 (pt) 2011-05-10

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 Before (1)

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

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 (137)

* 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
WO2007089111A1 (en) * 2006-02-01 2007-08-09 Lg Electronics Inc. Method for transmitting information in wireless local area network system
CN102347901A (zh) 2006-03-31 2012-02-08 高通股份有限公司 用于高速媒体接入控制的存储器管理
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 삼성전자주식회사 이종 이상의 무선 통신 규격을 지원하는 멀티 무선 메쉬네트워크 시스템 및 그 제어방법
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
US8238278B2 (en) 2007-01-08 2012-08-07 Hellosoft, Inc. Hardware-based beacon processing
US7675911B2 (en) * 2007-03-01 2010-03-09 Samsung Electronics Co., Ltd. Method and system for acknowledgements in wireless communications
KR100965128B1 (ko) * 2007-03-21 2010-06-23 삼성전자주식회사 광대역 무선통신 시스템에서 초기 접속 수행 장치 및 방법
KR100930518B1 (ko) * 2007-03-21 2009-12-09 삼성전자주식회사 광대역 무선통신 시스템에서 다중 에프에이를 사용하는단말의 아이피 주소 획득 장치 및 방법
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.
MX2012002360A (es) * 2009-08-26 2012-07-23 Lg Electronics Inc Método y aparato para transmisión de marcos múltiples para compatibilidad con multiples usuarios-múltiples entradas-múltiples salidas (mu-mimo).
US8351996B2 (en) * 2009-09-08 2013-01-08 Apple Inc. Power management of a radio data transceiver
JP5418097B2 (ja) * 2009-09-14 2014-02-19 株式会社リコー 情報処理装置、画像形成装置、動作モード切替方法
WO2011049019A1 (ja) * 2009-10-19 2011-04-28 日本電気株式会社 通信システム、フロー制御装置、フローテーブルの更新方法およびプログラム
DE112010004270T5 (de) 2009-11-04 2013-05-08 Electronics And Telecommunications Research Institute Verfahren und Vorrichtung zum Erzeugen, Senden und Empfangen eines Datenrahmens in einem drahtlosen Kommunikationssystem
CN101784082A (zh) * 2009-12-22 2010-07-21 中兴通讯股份有限公司 无线局域网内增强服务质量的方法及装置
AU2011210731A1 (en) * 2010-01-29 2012-07-19 Elster Solutions, Llc High priority data reads for acquisition of real-time data in wireless mesh network
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
US8873461B2 (en) * 2010-02-12 2014-10-28 Electronics And Telecommunications Research Institute Packet transmission/reception method and apparatus in wireless communication system
DE112011100869T5 (de) 2010-03-11 2012-12-20 Electronics And Telecommunications Research Institute Verfahren und Vorrichtung zum Senden/Empfangen von Daten in einem 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
US8996611B2 (en) 2011-01-31 2015-03-31 Microsoft Technology Licensing, Llc Parallel serialization of request processing
US9454441B2 (en) 2010-04-19 2016-09-27 Microsoft Technology Licensing, Llc Data layout for recovery and durability
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
US9124460B2 (en) 2010-08-31 2015-09-01 Qualcomm, Incorporated Rules for multiplexing data of different access categories in multi user MIMO wireless systems
US9055011B2 (en) * 2010-08-31 2015-06-09 Intel Corporation Methods and apparatus for linked-list circular buffer management
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
CN105191219B (zh) * 2013-05-09 2017-06-23 三菱电机株式会社 Fa网络用lsi以及通信装置
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
US10212086B2 (en) 2013-08-28 2019-02-19 Qualcomm Incorporated Methods and apparatus for target transmission duration in multiple user uplink
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
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
US9723054B2 (en) 2013-12-30 2017-08-01 Microsoft Technology Licensing, Llc Hierarchical organization for scale-out cluster
US9798631B2 (en) 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
KR102190444B1 (ko) * 2014-02-21 2020-12-11 삼성전자주식회사 무선 통신 시스템에서 데이터 처리 시스템 및 방법
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 中兴通讯股份有限公司 一种快速同步介质访问控制地址表的方法和装置
CN106664628B (zh) * 2014-06-17 2020-06-16 华为技术有限公司 一种传输数据的方法和装置
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 한국전자통신연구원 메모리 할당의 부분 해제를 지원하는 메모리 관리 장치 및 방법
EP3297251B1 (en) * 2015-05-08 2020-09-23 Sony Corporation Transmission control device, transmission control method, reception control device and reception control method
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
KR20180081498A (ko) * 2015-10-09 2018-07-16 인터디지탈 패튼 홀딩스, 인크 고효율 ack 전송 처리 절차
ES2741582T3 (es) 2015-12-01 2020-02-11 Ericsson Telefon Ab L M Mecanismo predictivo de retroalimentación de acuse de recibo
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
US10708189B1 (en) 2016-12-09 2020-07-07 Barefoot Networks, Inc. Priority-based flow control
US10735331B1 (en) 2016-12-09 2020-08-04 Barefoot Networks, Inc. Buffer space availability for different packet classes
US11223520B1 (en) 2017-01-31 2022-01-11 Intel Corporation Remote control plane directing data plane configurator
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
US10412018B1 (en) 2017-03-21 2019-09-10 Barefoot Networks, Inc. Hierarchical queue scheduler
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
US10505861B1 (en) * 2017-07-23 2019-12-10 Barefoot Networks, Inc. Bus for providing traffic management statistics to processing pipeline
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
TWI694684B (zh) * 2018-08-29 2020-05-21 新加坡商瑞昱新加坡有限公司 具有位於媒體存取控制層電路的排程電路的無線通信電路
US10701001B2 (en) * 2018-08-29 2020-06-30 REALTEK SINGAPORE Pte. Ltd. Wireless communication circuit with scheduling circuit in MAC layer
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 北京地平线机器人技术研发有限公司 数据发送方法和装置、数据接收方法和装置
WO2021154158A1 (en) * 2020-01-31 2021-08-05 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 瑞昱半導體股份有限公司 基本儲存單元管理電路以及基本儲存單元管理方法
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
EP0666550B1 (en) * 1994-02-08 1997-05-02 Belle Gate Investment B.V. Data exchange system comprising portable data processing units
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
US6473425B1 (en) 1997-10-02 2002-10-29 Sun Microsystems, Inc. Mechanism for dispatching packets via a telecommunications network
US6026093A (en) * 1997-10-02 2000-02-15 Sun Microsystems, Inc. Mechanism for dispatching data units 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 삼성전자주식회사 기지국 제어기와 기지국간의 패킷 데이터 전송 제어 방법및 장치
JP2005503699A (ja) * 2001-08-31 2005-02-03 アダプテック・インコーポレイテッド コンピュータネットワークでホストベースのセキュリティを行うシステムおよび方法
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
CN1689284B (zh) 2003-01-20 2010-04-28 富士通微电子株式会社 网络交换装置和网络交换方法
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
CN102347901A (zh) 2006-03-31 2012-02-08 高通股份有限公司 用于高速媒体接入控制的存储器管理

Also Published As

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

Similar Documents

Publication Publication Date Title
BRPI0709704A2 (pt) gerenciamento de memària para controle de acesso À mÍdia de alta velocidade
RU2678691C2 (ru) Эффективные механизмы планирования восходящей линии связи для двойного соединения
EP2984784B1 (en) System and method for providing a software defined protocol stack
Tan et al. Time-based Fairness Improves Performance in Multi-Rate WLANs.
TWI380633B (en) Method, apparatus, and system for multiplexing protocol data units
JP4047836B2 (ja) 通信装置、通信システム、通信方法、および通信制御プログラム
JP2019515594A (ja) ワイヤレスシステム中でのフローベースの処理
KR20210154147A (ko) 사이드링크 통신을 위한 시스템 및 방법
CN115209484A (zh) 在无线系统中处理用户平面
TW201804835A (zh) 無線系統中媒體存取協定資料單元組合
WO2013126859A2 (en) Opportunistic radio access technology selection and aggregation
TW202143671A (zh) 未授權頻譜中可靠harq—ack傳輸
KR20140100529A (ko) 하이브리드 네트워킹 경로 선택 및 로드 밴런싱
WO2012142811A1 (zh) 物理下行共享信道的调度方法及装置
WO2010099718A1 (zh) 一种数据传输控制方法、装置及系统
JP4314294B2 (ja) 通信装置、通信システム、通信方法、および通信制御プログラム
TW202312702A (zh) 用於在無線網路中接收訊務的方法
JP4543049B2 (ja) 通信装置および通信装置の通信方法
WO2014183558A1 (zh) 一种缓存状态报告的处理方法及装置、终端、存储介质
WO2021026740A1 (zh) 流量均衡方法、网络设备及电子设备
WO2020101807A2 (en) Methods and apparatus aggregating multiple wireless communications channels for flexible full-duplex communications
WO2008085635A1 (en) Communication device and methods thereof
WO2022078285A1 (zh) 上行传输方法及装置
WO2024073780A1 (en) Scheduling enhancement for extended reality and cloud gaming services

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 8A ANUIDADE.

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: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2343 DE 01-12-2015 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.

B15K Others concerning applications: alteration of classification

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