wil6210: Align Rx frames on 4*n+2 by having SNAP
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Sun, 15 Mar 2015 14:00:19 +0000 (16:00 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 20 Mar 2015 06:33:19 +0000 (08:33 +0200)
commitc406ea7c7406f00aa1fb6c697d47d070fd222037
tree6d47a0202ed18a8219011422c81de335be8ff25b
parentcec94d8cf5c2e5347ed9264cc94210e6376c7a46
wil6210: Align Rx frames on 4*n+2 by having SNAP

For the networking code and for hardware network accelerators,
it is better to have IP header 4*n aligned. On the other side,
DMA on Rx path require buffer to be aligned on 4*n as well.
Having 14 bytes of Ethernet header, these 2 alignment
requests are in contradiction.

To solve this, order hardware offload block to not remove
SNAP header. This adds extra 6 bytes between addresses and
ethertype, making it 20 bytes total. This way, both buffer and
IP header are 4*n aligned. Remaining is only to remove SNAP
by shifting addresses 6 bytes. This involves data copying, so
this feature should be disabled unless required by the platform.

Module parameter "rx_align_2" (bool, default - false)
introduced to control this feature. Feature is completely disabled
when parameter is false.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wil6210/txrx.c
drivers/net/wireless/ath/wil6210/wil6210.h
drivers/net/wireless/ath/wil6210/wmi.c
drivers/net/wireless/ath/wil6210/wmi.h