aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/s2io.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/s2io.h')
-rw-r--r--drivers/net/s2io.h91
1 files changed, 53 insertions, 38 deletions
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h
index e68fdf7e4260..0709ebae9139 100644
--- a/drivers/net/s2io.h
+++ b/drivers/net/s2io.h
@@ -678,11 +678,53 @@ struct rx_block_info {
678 struct rxd_info *rxds; 678 struct rxd_info *rxds;
679}; 679};
680 680
681/* Data structure to represent a LRO session */
682struct lro {
683 struct sk_buff *parent;
684 struct sk_buff *last_frag;
685 u8 *l2h;
686 struct iphdr *iph;
687 struct tcphdr *tcph;
688 u32 tcp_next_seq;
689 __be32 tcp_ack;
690 int total_len;
691 int frags_len;
692 int sg_num;
693 int in_use;
694 __be16 window;
695 u16 vlan_tag;
696 u32 cur_tsval;
697 __be32 cur_tsecr;
698 u8 saw_ts;
699} ____cacheline_aligned;
700
681/* Ring specific structure */ 701/* Ring specific structure */
682struct ring_info { 702struct ring_info {
683 /* The ring number */ 703 /* The ring number */
684 int ring_no; 704 int ring_no;
685 705
706 /* per-ring buffer counter */
707 u32 rx_bufs_left;
708
709 #define MAX_LRO_SESSIONS 32
710 struct lro lro0_n[MAX_LRO_SESSIONS];
711 u8 lro;
712
713 /* copy of sp->rxd_mode flag */
714 int rxd_mode;
715
716 /* Number of rxds per block for the rxd_mode */
717 int rxd_count;
718
719 /* copy of sp pointer */
720 struct s2io_nic *nic;
721
722 /* copy of sp->dev pointer */
723 struct net_device *dev;
724
725 /* copy of sp->pdev pointer */
726 struct pci_dev *pdev;
727
686 /* 728 /*
687 * Place holders for the virtual and physical addresses of 729 * Place holders for the virtual and physical addresses of
688 * all the Rx Blocks 730 * all the Rx Blocks
@@ -703,13 +745,16 @@ struct ring_info {
703 */ 745 */
704 struct rx_curr_get_info rx_curr_get_info; 746 struct rx_curr_get_info rx_curr_get_info;
705 747
706 /* Index to the absolute position of the put pointer of Rx ring */ 748 /* interface MTU value */
707 int put_pos; 749 unsigned mtu;
708 750
709 /* Buffer Address store. */ 751 /* Buffer Address store. */
710 struct buffAdd **ba; 752 struct buffAdd **ba;
711 struct s2io_nic *nic; 753
712}; 754 /* per-Ring statistics */
755 unsigned long rx_packets;
756 unsigned long rx_bytes;
757} ____cacheline_aligned;
713 758
714/* Fifo specific structure */ 759/* Fifo specific structure */
715struct fifo_info { 760struct fifo_info {
@@ -816,26 +861,6 @@ struct msix_info_st {
816 u64 data; 861 u64 data;
817}; 862};
818 863
819/* Data structure to represent a LRO session */
820struct lro {
821 struct sk_buff *parent;
822 struct sk_buff *last_frag;
823 u8 *l2h;
824 struct iphdr *iph;
825 struct tcphdr *tcph;
826 u32 tcp_next_seq;
827 __be32 tcp_ack;
828 int total_len;
829 int frags_len;
830 int sg_num;
831 int in_use;
832 __be16 window;
833 u16 vlan_tag;
834 u32 cur_tsval;
835 __be32 cur_tsecr;
836 u8 saw_ts;
837} ____cacheline_aligned;
838
839/* These flags represent the devices temporary state */ 864/* These flags represent the devices temporary state */
840enum s2io_device_state_t 865enum s2io_device_state_t
841{ 866{
@@ -868,8 +893,6 @@ struct s2io_nic {
868 int device_enabled_once; 893 int device_enabled_once;
869 894
870 char name[60]; 895 char name[60];
871 struct tasklet_struct task;
872 volatile unsigned long tasklet_status;
873 896
874 /* Timer that handles I/O errors/exceptions */ 897 /* Timer that handles I/O errors/exceptions */
875 struct timer_list alarm_timer; 898 struct timer_list alarm_timer;
@@ -877,10 +900,6 @@ struct s2io_nic {
877 /* Space to back up the PCI config space */ 900 /* Space to back up the PCI config space */
878 u32 config_space[256 / sizeof(u32)]; 901 u32 config_space[256 / sizeof(u32)];
879 902
880 atomic_t rx_bufs_left[MAX_RX_RINGS];
881
882 spinlock_t put_lock;
883
884#define PROMISC 1 903#define PROMISC 1
885#define ALL_MULTI 2 904#define ALL_MULTI 2
886 905
@@ -957,14 +976,11 @@ struct s2io_nic {
957#define XFRAME_II_DEVICE 2 976#define XFRAME_II_DEVICE 2
958 u8 device_type; 977 u8 device_type;
959 978
960#define MAX_LRO_SESSIONS 32
961 struct lro lro0_n[MAX_LRO_SESSIONS];
962 unsigned long clubbed_frms_cnt; 979 unsigned long clubbed_frms_cnt;
963 unsigned long sending_both; 980 unsigned long sending_both;
964 u8 lro; 981 u8 lro;
965 u16 lro_max_aggr_per_sess; 982 u16 lro_max_aggr_per_sess;
966 volatile unsigned long state; 983 volatile unsigned long state;
967 spinlock_t rx_lock;
968 u64 general_int_mask; 984 u64 general_int_mask;
969#define VPD_STRING_LEN 80 985#define VPD_STRING_LEN 80
970 u8 product_name[VPD_STRING_LEN]; 986 u8 product_name[VPD_STRING_LEN];
@@ -1094,7 +1110,6 @@ static void s2io_handle_errors(void * dev_id);
1094static int s2io_starter(void); 1110static int s2io_starter(void);
1095static void s2io_closer(void); 1111static void s2io_closer(void);
1096static void s2io_tx_watchdog(struct net_device *dev); 1112static void s2io_tx_watchdog(struct net_device *dev);
1097static void s2io_tasklet(unsigned long dev_addr);
1098static void s2io_set_multicast(struct net_device *dev); 1113static void s2io_set_multicast(struct net_device *dev);
1099static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp); 1114static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp);
1100static void s2io_link(struct s2io_nic * sp, int link); 1115static void s2io_link(struct s2io_nic * sp, int link);
@@ -1127,9 +1142,9 @@ static int do_s2io_add_mc(struct s2io_nic *sp, u8 *addr);
1127static int do_s2io_add_mac(struct s2io_nic *sp, u64 addr, int offset); 1142static int do_s2io_add_mac(struct s2io_nic *sp, u64 addr, int offset);
1128static int do_s2io_delete_unicast_mc(struct s2io_nic *sp, u64 addr); 1143static int do_s2io_delete_unicast_mc(struct s2io_nic *sp, u64 addr);
1129 1144
1130static int 1145static int s2io_club_tcp_session(struct ring_info *ring_data, u8 *buffer,
1131s2io_club_tcp_session(u8 *buffer, u8 **tcp, u32 *tcp_len, struct lro **lro, 1146 u8 **tcp, u32 *tcp_len, struct lro **lro, struct RxD_t *rxdp,
1132 struct RxD_t *rxdp, struct s2io_nic *sp); 1147 struct s2io_nic *sp);
1133static void clear_lro_session(struct lro *lro); 1148static void clear_lro_session(struct lro *lro);
1134static void queue_rx_frame(struct sk_buff *skb, u16 vlan_tag); 1149static void queue_rx_frame(struct sk_buff *skb, u16 vlan_tag);
1135static void update_L3L4_header(struct s2io_nic *sp, struct lro *lro); 1150static void update_L3L4_header(struct s2io_nic *sp, struct lro *lro);