Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux-2.6-microblaze.git] / drivers / net / ethernet / ibm / ibmvnic.h
index 47a3fd7..9d0c32a 100644 (file)
@@ -31,6 +31,8 @@
 #define IBMVNIC_BUFFS_PER_POOL 100
 #define IBMVNIC_MAX_QUEUES     16
 #define IBMVNIC_MAX_QUEUE_SZ   4096
+#define IBMVNIC_MAX_IND_DESCS  128
+#define IBMVNIC_IND_ARR_SZ     (IBMVNIC_MAX_IND_DESCS * 32)
 
 #define IBMVNIC_TSO_BUF_SZ     65536
 #define IBMVNIC_TSO_BUFS       64
@@ -224,8 +226,6 @@ struct ibmvnic_tx_comp_desc {
 #define IBMVNIC_TCP_CHKSUM             0x20
 #define IBMVNIC_UDP_CHKSUM             0x08
 
-#define IBMVNIC_MAX_FRAGS_PER_CRQ 3
-
 struct ibmvnic_tx_desc {
        u8 first;
        u8 type;
@@ -861,6 +861,12 @@ union sub_crq {
        struct ibmvnic_rx_buff_add_desc rx_add;
 };
 
+struct ibmvnic_ind_xmit_queue {
+       union sub_crq *indir_arr;
+       dma_addr_t indir_dma;
+       int index;
+};
+
 struct ibmvnic_sub_crq_queue {
        union sub_crq *msgs;
        int size, cur;
@@ -873,10 +879,11 @@ struct ibmvnic_sub_crq_queue {
        spinlock_t lock;
        struct sk_buff *rx_skb_top;
        struct ibmvnic_adapter *adapter;
+       struct ibmvnic_ind_xmit_queue ind_buf;
        atomic_t used;
        char name[32];
        u64 handle;
-};
+} ____cacheline_aligned;
 
 struct ibmvnic_long_term_buff {
        unsigned char *buff;
@@ -887,14 +894,8 @@ struct ibmvnic_long_term_buff {
 
 struct ibmvnic_tx_buff {
        struct sk_buff *skb;
-       dma_addr_t data_dma[IBMVNIC_MAX_FRAGS_PER_CRQ];
-       unsigned int data_len[IBMVNIC_MAX_FRAGS_PER_CRQ];
        int index;
        int pool_index;
-       bool last_frag;
-       union sub_crq indir_arr[6];
-       u8 hdr_data[140];
-       dma_addr_t indir_dma;
        int num_entries;
 };
 
@@ -906,7 +907,7 @@ struct ibmvnic_tx_pool {
        struct ibmvnic_long_term_buff long_term_buff;
        int num_buffers;
        int buf_size;
-};
+} ____cacheline_aligned;
 
 struct ibmvnic_rx_buff {
        struct sk_buff *skb;
@@ -927,7 +928,7 @@ struct ibmvnic_rx_pool {
        int next_alloc;
        int active;
        struct ibmvnic_long_term_buff long_term_buff;
-};
+} ____cacheline_aligned;
 
 struct ibmvnic_vpd {
        unsigned char *buff;
@@ -1013,8 +1014,8 @@ struct ibmvnic_adapter {
        atomic_t running_cap_crqs;
        bool wait_capability;
 
-       struct ibmvnic_sub_crq_queue **tx_scrq;
-       struct ibmvnic_sub_crq_queue **rx_scrq;
+       struct ibmvnic_sub_crq_queue **tx_scrq ____cacheline_aligned;
+       struct ibmvnic_sub_crq_queue **rx_scrq ____cacheline_aligned;
 
        /* rx structs */
        struct napi_struct *napi;