Commit 2ade4361 authored by Jeff Garzik's avatar Jeff Garzik

Merge branch 'lro'

parents 75e47b36 79dc1901
This diff is collapsed.
...@@ -78,6 +78,13 @@ static int debug_level = ERR_DBG; ...@@ -78,6 +78,13 @@ static int debug_level = ERR_DBG;
typedef struct { typedef struct {
unsigned long long single_ecc_errs; unsigned long long single_ecc_errs;
unsigned long long double_ecc_errs; unsigned long long double_ecc_errs;
/* LRO statistics */
unsigned long long clubbed_frms_cnt;
unsigned long long sending_both;
unsigned long long outof_sequence_pkts;
unsigned long long flush_max_pkts;
unsigned long long sum_avg_pkts_aggregated;
unsigned long long num_aggregations;
} swStat_t; } swStat_t;
/* The statistics block of Xena */ /* The statistics block of Xena */
...@@ -680,6 +687,24 @@ struct msix_info_st { ...@@ -680,6 +687,24 @@ struct msix_info_st {
u64 data; u64 data;
}; };
/* Data structure to represent a LRO session */
typedef struct lro {
struct sk_buff *parent;
u8 *l2h;
struct iphdr *iph;
struct tcphdr *tcph;
u32 tcp_next_seq;
u32 tcp_ack;
int total_len;
int frags_len;
int sg_num;
int in_use;
u16 window;
u32 cur_tsval;
u32 cur_tsecr;
u8 saw_ts;
}lro_t;
/* Structure representing one instance of the NIC */ /* Structure representing one instance of the NIC */
struct s2io_nic { struct s2io_nic {
int rxd_mode; int rxd_mode;
...@@ -784,6 +809,13 @@ struct s2io_nic { ...@@ -784,6 +809,13 @@ struct s2io_nic {
#define XFRAME_II_DEVICE 2 #define XFRAME_II_DEVICE 2
u8 device_type; u8 device_type;
#define MAX_LRO_SESSIONS 32
lro_t lro0_n[MAX_LRO_SESSIONS];
unsigned long clubbed_frms_cnt;
unsigned long sending_both;
u8 lro;
u16 lro_max_aggr_per_sess;
#define INTA 0 #define INTA 0
#define MSI 1 #define MSI 1
#define MSI_X 2 #define MSI_X 2
...@@ -937,4 +969,10 @@ static void s2io_card_down(nic_t *nic); ...@@ -937,4 +969,10 @@ static void s2io_card_down(nic_t *nic);
static int s2io_card_up(nic_t *nic); static int s2io_card_up(nic_t *nic);
static int get_xena_rev_id(struct pci_dev *pdev); static int get_xena_rev_id(struct pci_dev *pdev);
static void restore_xmsi_data(nic_t *nic); static void restore_xmsi_data(nic_t *nic);
static int s2io_club_tcp_session(u8 *buffer, u8 **tcp, u32 *tcp_len, lro_t **lro, RxD_t *rxdp, nic_t *sp);
static void clear_lro_session(lro_t *lro);
static void queue_rx_frame(struct sk_buff *skb);
static void update_L3L4_header(nic_t *sp, lro_t *lro);
static void lro_append_pkt(nic_t *sp, lro_t *lro, struct sk_buff *skb, u32 tcp_len);
#endif /* _S2IO_H */ #endif /* _S2IO_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment