public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* wireless lan, defragmentation in driver module.
@ 2005-07-04 11:13 P Lavin
  0 siblings, 0 replies; 2+ messages in thread
From: P Lavin @ 2005-07-04 11:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: P Lavin

Hi,

I need help in the following issue, i'll explain the mechanisum & the 
problem i'm facing,

1) In the existing wireless lan driver we've MPDU's & MSDU's, all the 
MPDU's are handled by the firmware where as all the MSDU's by the 
driver. Now i need to implement 802.11E protocol based block ack 
mechanisum, in this mechanisum ther will not be any wirelss ack's for 
each MPDU's insted the Transmitter  can request for Blockack by 
transmitting BlockAck.request , for which the receiver will respond with 
an block ack by indication all the lost mpdu's.
The MSDU's given by the driver/os can be fragmented in the MAC(by 
firmware) if the packet is exceeding the fragmentation threshold limit. 
Previously the defragmentation was done in firmware but as firmware is 
lacking memory we've to move the de-fragmentation (only in block ack 
mechansum) into driver. In the old driver this was not a problem because 
driver will get only MSDU's & not MPDU's. So that i can happely copy 
these packets from our h/w queue into an sk_buff & give it to OS,
    a) in the present case i cannot do this if block.ack mechanisum was 
established, i'll get only mpdu's & i've to assemble it & form the MSDU's.
    b) I'll have a scheduler who'll come & take these packets from my 
software queue's & give it to OS.

So i need to know
    a) whenever i've 10mpdu's of an MSDU from Station A to be 
transmitted into StationB

A                                 B

mpdu1---------------->Success
mpdu2---------------->Success
mpdu3---------------->Success
mpdu4---------------->Failed
mpdu5---------------->Success
mpdu6---------------->Success
mpdu7---------------->Failed
mpdu8---------------->Success
mpdu9---------------->Failed
mpdu10---------------->Success

mpdu's 3, 7 & 9 are lost this we'll indicate in the block-acksent 
whenever transmitter is requesting for block ack using blockack.request 
, but in the receiver all these mpdu's has to be stored untill station A 
succesfully transmits all the lost mpdu's. Once these mpdu's are 
received correctly i've to put these mpdu's in the correct position & 
form the MSDU, then only i can give this MSDU to OS.

This is the scenario which can happen in a simple MSDU transfer from 
station A to B.
------------------------------------------------------------------------------------------------------------------------
Is it possible to allocate one skbuff for one packet (this will be 
mainatained in my s/w queues), as &  when some mpdu's come i'll insert 
it in the correct offset ??Weather any kernel calls are available for 
manipulating skbuff. i searched in net/core.c but i was not sure weather 
this can be used in my own de-fragmentation mechanism...

Or should i directly maintain my own buffers & copy it only in the end 
to a single skbuff, i dont think this a good way coz this will decrease 
the performance of the mechanisum !!!
Can anyone help me !

Regards,
P.Lavin



^ permalink raw reply	[flat|nested] 2+ messages in thread

* wireless lan, defragmentation in driver module.
@ 2005-07-05  9:57 P Lavin
  0 siblings, 0 replies; 2+ messages in thread
From: P Lavin @ 2005-07-05  9:57 UTC (permalink / raw)
  To: linux-kernel

Hi,

I need help in the following issue, i'll explain the mechanisum & the 
problem i'm facing,

1) In the existing wireless lan driver we've MPDU's & MSDU's, all the 
MPDU's are handled by the firmware where as all the MSDU's by the 
driver. Now i need to implement 802.11E protocol based block ack 
mechanisum, in this mechanisum ther will not be any wirelss ack's for 
each MPDU's insted the Transmitter  can request for Blockack by 
transmitting BlockAck.request , for which the receiver will respond with 
an block ack by indication all the lost mpdu's.
The MSDU's given by the driver/os can be fragmented in the MAC(by 
firmware) if the packet is exceeding the fragmentation threshold limit. 
Previously the defragmentation was done in firmware but as firmware is 
lacking memory we've to move the de-fragmentation (only in block ack 
mechansum) into driver. In the old driver this was not a problem because 
driver will get only MSDU's & not MPDU's. So that i can happely copy 
these packets from our h/w queue into an sk_buff & give it to OS,
   a) in the present case i cannot do this if block.ack mechanisum was 
established, i'll get only mpdu's & i've to assemble it & form the MSDU's.
   b) I'll have a scheduler who'll come & take these packets from my 
software queue's & give it to OS.

So i need to know
   a) whenever i've 10mpdu's of an MSDU from Station A to be 
transmitted into StationB

A                                 B

mpdu1---------------->Success
mpdu2---------------->Success
mpdu3---------------->Success
mpdu4---------------->Failed
mpdu5---------------->Success
mpdu6---------------->Success
mpdu7---------------->Failed
mpdu8---------------->Success
mpdu9---------------->Failed
mpdu10---------------->Success

mpdu's 3, 7 & 9 are lost this we'll indicate in the block-acksent 
whenever transmitter is requesting for block ack using blockack.request 
, but in the receiver all these mpdu's has to be stored untill station A 
succesfully transmits all the lost mpdu's. Once these mpdu's are 
received correctly i've to put these mpdu's in the correct position & 
form the MSDU, then only i can give this MSDU to OS.

This is the scenario which can happen in a simple MSDU transfer from 
station A to B.
------------------------------------------------------------------------------------------------------------------------
Is it possible to allocate one skbuff for one packet (this will be 
mainatained in my s/w queues), as &  when some mpdu's come i'll insert 
it in the correct offset ??Weather any kernel calls are available for 
manipulating skbuff. i searched in net/core.c but i was not sure weather 
this can be used in my own de-fragmentation mechanism...

Or should i directly maintain my own buffers & copy it only in the end 
to a single skbuff, i dont think this a good way coz this will decrease 
the performance of the mechanisum !!!
Can anyone help me !

Regards,
P.Lavin


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-07-05  9:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-05  9:57 wireless lan, defragmentation in driver module P Lavin
  -- strict thread matches above, loose matches on Subject: below --
2005-07-04 11:13 P Lavin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox