|
20 | 20 | #ifndef _MWIFIEX_UTIL_H_
|
21 | 21 | #define _MWIFIEX_UTIL_H_
|
22 | 22 |
|
| 23 | +struct mwifiex_dma_mapping { |
| 24 | + dma_addr_t addr; |
| 25 | + size_t len; |
| 26 | +}; |
| 27 | + |
| 28 | +struct mwifiex_cb { |
| 29 | + struct mwifiex_dma_mapping dma_mapping; |
| 30 | + union { |
| 31 | + struct mwifiex_rxinfo rx_info; |
| 32 | + struct mwifiex_txinfo tx_info; |
| 33 | + }; |
| 34 | +}; |
| 35 | + |
23 | 36 | static inline struct mwifiex_rxinfo *MWIFIEX_SKB_RXCB(struct sk_buff *skb)
|
24 | 37 | {
|
25 |
| - return (struct mwifiex_rxinfo *)(skb->cb + sizeof(dma_addr_t)); |
| 38 | + struct mwifiex_cb *cb = (struct mwifiex_cb *)skb->cb; |
| 39 | + |
| 40 | + BUILD_BUG_ON(sizeof(struct mwifiex_cb) > sizeof(skb->cb)); |
| 41 | + return &cb->rx_info; |
26 | 42 | }
|
27 | 43 |
|
28 | 44 | static inline struct mwifiex_txinfo *MWIFIEX_SKB_TXCB(struct sk_buff *skb)
|
29 | 45 | {
|
30 |
| - return (struct mwifiex_txinfo *)(skb->cb + sizeof(dma_addr_t)); |
| 46 | + struct mwifiex_cb *cb = (struct mwifiex_cb *)skb->cb; |
| 47 | + |
| 48 | + return &cb->tx_info; |
31 | 49 | }
|
32 | 50 |
|
33 |
| -struct mwifiex_dma_mapping { |
34 |
| - dma_addr_t addr; |
35 |
| - size_t len; |
36 |
| -}; |
| 51 | +static inline void mwifiex_store_mapping(struct sk_buff *skb, |
| 52 | + struct mwifiex_dma_mapping *mapping) |
| 53 | +{ |
| 54 | + struct mwifiex_cb *cb = (struct mwifiex_cb *)skb->cb; |
| 55 | + |
| 56 | + memcpy(&cb->dma_mapping, mapping, sizeof(*mapping)); |
| 57 | +} |
37 | 58 |
|
38 |
| -static inline void MWIFIEX_SKB_PACB(struct sk_buff *skb, |
39 |
| - struct mwifiex_dma_mapping *mapping) |
| 59 | +static inline void mwifiex_get_mapping(struct sk_buff *skb, |
| 60 | + struct mwifiex_dma_mapping *mapping) |
40 | 61 | {
|
41 |
| - memcpy(mapping, skb->cb, sizeof(*mapping)); |
| 62 | + struct mwifiex_cb *cb = (struct mwifiex_cb *)skb->cb; |
| 63 | + |
| 64 | + memcpy(mapping, &cb->dma_mapping, sizeof(*mapping)); |
42 | 65 | }
|
43 | 66 |
|
44 | 67 | static inline dma_addr_t MWIFIEX_SKB_DMA_ADDR(struct sk_buff *skb)
|
45 | 68 | {
|
46 | 69 | struct mwifiex_dma_mapping mapping;
|
47 | 70 |
|
48 |
| - MWIFIEX_SKB_PACB(skb, &mapping); |
| 71 | + mwifiex_get_mapping(skb, &mapping); |
49 | 72 |
|
50 | 73 | return mapping.addr;
|
51 | 74 | }
|
|
0 commit comments