kernel: fix OCF for linux 3.2
Add skb_frag_page from 3.2 to OCF for 3.1 and earlier and use it. SVN-Revision: 29818
This commit is contained in:
parent
9fd3886365
commit
aa8f9171f2
9 changed files with 20 additions and 11 deletions
|
@ -401,7 +401,7 @@ $(eval $(call KernelPackage,crypto-misc))
|
||||||
|
|
||||||
define KernelPackage/crypto-ocf
|
define KernelPackage/crypto-ocf
|
||||||
TITLE:=OCF modules
|
TITLE:=OCF modules
|
||||||
DEPENDS:=+@OPENSSL_ENGINE @!TARGET_uml +kmod-crypto-manager @!LINUX_3_2||BROKEN
|
DEPENDS:=+@OPENSSL_ENGINE @!TARGET_uml +kmod-crypto-manager
|
||||||
KCONFIG:= \
|
KCONFIG:= \
|
||||||
CONFIG_OCF_OCF \
|
CONFIG_OCF_OCF \
|
||||||
CONFIG_OCF_CRYPTODEV \
|
CONFIG_OCF_CRYPTODEV \
|
||||||
|
|
|
@ -592,13 +592,13 @@ c7108_process(void *arg, struct cryptop *crp, int hint)
|
||||||
i < skb_shinfo(skb)->nr_frags &&
|
i < skb_shinfo(skb)->nr_frags &&
|
||||||
sg_num < SCATTERLIST_MAX; i++) {
|
sg_num < SCATTERLIST_MAX; i++) {
|
||||||
if (skip < skb_shinfo(skb)->frags[i].size) {
|
if (skip < skb_shinfo(skb)->frags[i].size) {
|
||||||
//sg[sg_num].page = skb_shinfo(skb)->frags[i].page;
|
//sg[sg_num].page = skb_frag_page(&kb_shinfo(skb)->frags[i]);
|
||||||
//sg[sg_num].offset = skb_shinfo(skb)->frags[i].page_offset + skip;
|
//sg[sg_num].offset = skb_shinfo(skb)->frags[i].page_offset + skip;
|
||||||
len = skb_shinfo(skb)->frags[i].size - skip;
|
len = skb_shinfo(skb)->frags[i].size - skip;
|
||||||
if (len + sg_len > crd->crd_len)
|
if (len + sg_len > crd->crd_len)
|
||||||
len = crd->crd_len - sg_len;
|
len = crd->crd_len - sg_len;
|
||||||
//sg[sg_num].length = len;
|
//sg[sg_num].length = len;
|
||||||
sg_set_page(&sg[sg_num], skb_shinfo(skb)->frags[i].page, len, skb_shinfo(skb)->frags[i].page_offset + skip);
|
sg_set_page(&sg[sg_num], skb_frag_page(&skb_shinfo(skb)->frags[i]), len, skb_shinfo(skb)->frags[i].page_offset + skip);
|
||||||
sg_len += sg[sg_num].length;
|
sg_len += sg[sg_num].length;
|
||||||
sg_num++;
|
sg_num++;
|
||||||
skip = 0;
|
skip = 0;
|
||||||
|
|
|
@ -156,7 +156,7 @@ skb_copy_bits_back(struct sk_buff *skb, int offset, caddr_t cp, int len)
|
||||||
offset -= skb_headlen(skb);
|
offset -= skb_headlen(skb);
|
||||||
for (i = 0; len > 0 && i < skb_shinfo(skb)->nr_frags; i++) {
|
for (i = 0; len > 0 && i < skb_shinfo(skb)->nr_frags; i++) {
|
||||||
if (offset < skb_shinfo(skb)->frags[i].size) {
|
if (offset < skb_shinfo(skb)->frags[i].size) {
|
||||||
memcpy(page_address(skb_shinfo(skb)->frags[i].page) +
|
memcpy(page_address(skb_frag_page(&skb_shinfo(skb)->frags[i])) +
|
||||||
skb_shinfo(skb)->frags[i].page_offset,
|
skb_shinfo(skb)->frags[i].page_offset,
|
||||||
cp, min_t(int, skb_shinfo(skb)->frags[i].size, len));
|
cp, min_t(int, skb_shinfo(skb)->frags[i].size, len));
|
||||||
len -= skb_shinfo(skb)->frags[i].size;
|
len -= skb_shinfo(skb)->frags[i].size;
|
||||||
|
|
|
@ -473,7 +473,7 @@ octo_process(device_t dev, struct cryptop *crp, int hint)
|
||||||
for (i = 0; i < skb_shinfo(skb)->nr_frags && sg_num < SCATTERLIST_MAX;
|
for (i = 0; i < skb_shinfo(skb)->nr_frags && sg_num < SCATTERLIST_MAX;
|
||||||
i++) {
|
i++) {
|
||||||
len = skb_shinfo(skb)->frags[i].size;
|
len = skb_shinfo(skb)->frags[i].size;
|
||||||
sg_set_page(&sg[sg_num], skb_shinfo(skb)->frags[i].page,
|
sg_set_page(&sg[sg_num], skb_frag_page(&skb_shinfo(skb)->frags[i]),
|
||||||
len, skb_shinfo(skb)->frags[i].page_offset);
|
len, skb_shinfo(skb)->frags[i].page_offset);
|
||||||
sg_len += len;
|
sg_len += len;
|
||||||
sg_num++;
|
sg_num++;
|
||||||
|
|
|
@ -777,7 +777,7 @@ static void swcr_process_req(struct swcr_req *req)
|
||||||
if (len + sg_len > crd->crd_len)
|
if (len + sg_len > crd->crd_len)
|
||||||
len = crd->crd_len - sg_len;
|
len = crd->crd_len - sg_len;
|
||||||
sg_set_page(&req->sg[sg_num],
|
sg_set_page(&req->sg[sg_num],
|
||||||
skb_shinfo(skb)->frags[i].page,
|
skb_frag_page(&skb_shinfo(skb)->frags[i]),
|
||||||
len,
|
len,
|
||||||
skb_shinfo(skb)->frags[i].page_offset + skip);
|
skb_shinfo(skb)->frags[i].page_offset + skip);
|
||||||
sg_len += len;
|
sg_len += len;
|
||||||
|
|
|
@ -241,7 +241,7 @@ pci_map_skb(struct hifn_softc *sc,struct hifn_operand *buf,struct sk_buff *skb)
|
||||||
for (i = 0; i < skb_shinfo(skb)->nr_frags; ) {
|
for (i = 0; i < skb_shinfo(skb)->nr_frags; ) {
|
||||||
buf->segs[buf->nsegs].ds_len = skb_shinfo(skb)->frags[i].size;
|
buf->segs[buf->nsegs].ds_len = skb_shinfo(skb)->frags[i].size;
|
||||||
buf->segs[buf->nsegs].ds_addr = pci_map_single(sc->sc_pcidev,
|
buf->segs[buf->nsegs].ds_addr = pci_map_single(sc->sc_pcidev,
|
||||||
page_address(skb_shinfo(skb)->frags[i].page) +
|
page_address(skb_frag_page(&skb_shinfo(skb)->frags[i])) +
|
||||||
skb_shinfo(skb)->frags[i].page_offset,
|
skb_shinfo(skb)->frags[i].page_offset,
|
||||||
buf->segs[buf->nsegs].ds_len, PCI_DMA_BIDIRECTIONAL);
|
buf->segs[buf->nsegs].ds_len, PCI_DMA_BIDIRECTIONAL);
|
||||||
buf->mapsize += buf->segs[buf->nsegs].ds_len;
|
buf->mapsize += buf->segs[buf->nsegs].ds_len;
|
||||||
|
|
|
@ -359,6 +359,15 @@ static inline int ocf_run_thread(void *arg)
|
||||||
#include <linux/kthread.h>
|
#include <linux/kthread.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
|
||||||
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
|
||||||
|
static inline struct page *skb_frag_page(const skb_frag_t *frag)
|
||||||
|
{
|
||||||
|
return frag->page;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
|
@ -208,7 +208,7 @@ pci_map_skb(struct safe_softc *sc,struct safe_operand *buf,struct sk_buff *skb)
|
||||||
|
|
||||||
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
|
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
|
||||||
pci_map_linear(sc, buf,
|
pci_map_linear(sc, buf,
|
||||||
page_address(skb_shinfo(skb)->frags[i].page) +
|
page_address(skb_frag_page(&skb_shinfo(skb)->frags[i])) +
|
||||||
skb_shinfo(skb)->frags[i].page_offset,
|
skb_shinfo(skb)->frags[i].page_offset,
|
||||||
skb_shinfo(skb)->frags[i].size);
|
skb_shinfo(skb)->frags[i].size);
|
||||||
}
|
}
|
||||||
|
|
|
@ -297,18 +297,18 @@ dma_map_skb(struct ubsec_softc *sc, struct ubsec_dma_alloc* q_map, struct sk_buf
|
||||||
|
|
||||||
#ifdef UBSEC_VERBOSE_DEBUG
|
#ifdef UBSEC_VERBOSE_DEBUG
|
||||||
DPRINTF("%s - map %d 0x%x %d\n", __FUNCTION__, i + 1,
|
DPRINTF("%s - map %d 0x%x %d\n", __FUNCTION__, i + 1,
|
||||||
(unsigned int)page_address(skb_shinfo(skb)->frags[i].page) +
|
(unsigned int)page_address(skb_frag_page(&skb_shinfo(skb)->frags[i])) +
|
||||||
skb_shinfo(skb)->frags[i].page_offset, skb_shinfo(skb)->frags[i].size);
|
skb_shinfo(skb)->frags[i].page_offset, skb_shinfo(skb)->frags[i].size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tmp = dma_map_single(sc->sc_dv,
|
tmp = dma_map_single(sc->sc_dv,
|
||||||
page_address(skb_shinfo(skb)->frags[i].page) +
|
page_address(skb_frag_page(&skb_shinfo(skb)->frags[i])) +
|
||||||
skb_shinfo(skb)->frags[i].page_offset,
|
skb_shinfo(skb)->frags[i].page_offset,
|
||||||
skb_shinfo(skb)->frags[i].size,
|
skb_shinfo(skb)->frags[i].size,
|
||||||
DMA_BIDIRECTIONAL);
|
DMA_BIDIRECTIONAL);
|
||||||
|
|
||||||
q_map[i + 1].dma_paddr = tmp;
|
q_map[i + 1].dma_paddr = tmp;
|
||||||
q_map[i + 1].dma_vaddr = (void*)(page_address(skb_shinfo(skb)->frags[i].page) +
|
q_map[i + 1].dma_vaddr = (void*)(page_address(skb_frag_page(&skb_shinfo(skb)->frags[i])) +
|
||||||
skb_shinfo(skb)->frags[i].page_offset);
|
skb_shinfo(skb)->frags[i].page_offset);
|
||||||
q_map[i + 1].dma_size = skb_shinfo(skb)->frags[i].size;
|
q_map[i + 1].dma_size = skb_shinfo(skb)->frags[i].size;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue