Commit 1648b11e authored by Karen Xie's avatar Karen Xie Committed by James Bottomley

[SCSI] cxgb3i: transmit work-request fixes

- resize the work-request credit array to be based on skb's MAX_SKB_FRAGS.
- split the skb cb into tx and rx portion
- increase the default transmit window to 128K.
- stop queueing up the outgoing pdus if transmit window is full.
Signed-off-by: default avatarKaren Xie <kxie@chelsio.com>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent b73a7749
This diff is collapsed.
...@@ -178,25 +178,33 @@ void cxgb3i_c3cn_release(struct s3_conn *); ...@@ -178,25 +178,33 @@ void cxgb3i_c3cn_release(struct s3_conn *);
* @flag: see C3CB_FLAG_* below * @flag: see C3CB_FLAG_* below
* @ulp_mode: ULP mode/submode of sk_buff * @ulp_mode: ULP mode/submode of sk_buff
* @seq: tcp sequence number * @seq: tcp sequence number
* @ddigest: pdu data digest
* @pdulen: recovered pdu length
* @wr_data: scratch area for tx wr
*/ */
struct cxgb3_skb_rx_cb {
__u32 ddigest; /* data digest */
__u32 pdulen; /* recovered pdu length */
};
struct cxgb3_skb_tx_cb {
struct sk_buff *wr_next; /* next wr */
};
struct cxgb3_skb_cb { struct cxgb3_skb_cb {
__u8 flags; __u8 flags;
__u8 ulp_mode; __u8 ulp_mode;
__u32 seq; __u32 seq;
__u32 ddigest; union {
__u32 pdulen; struct cxgb3_skb_rx_cb rx;
struct sk_buff *wr_data; struct cxgb3_skb_tx_cb tx;
};
}; };
#define CXGB3_SKB_CB(skb) ((struct cxgb3_skb_cb *)&((skb)->cb[0])) #define CXGB3_SKB_CB(skb) ((struct cxgb3_skb_cb *)&((skb)->cb[0]))
#define skb_flags(skb) (CXGB3_SKB_CB(skb)->flags)
#define skb_ulp_mode(skb) (CXGB3_SKB_CB(skb)->ulp_mode) #define skb_ulp_mode(skb) (CXGB3_SKB_CB(skb)->ulp_mode)
#define skb_ulp_ddigest(skb) (CXGB3_SKB_CB(skb)->ddigest) #define skb_tcp_seq(skb) (CXGB3_SKB_CB(skb)->seq)
#define skb_ulp_pdulen(skb) (CXGB3_SKB_CB(skb)->pdulen) #define skb_rx_ddigest(skb) (CXGB3_SKB_CB(skb)->rx.ddigest)
#define skb_wr_data(skb) (CXGB3_SKB_CB(skb)->wr_data) #define skb_rx_pdulen(skb) (CXGB3_SKB_CB(skb)->rx.pdulen)
#define skb_tx_wr_next(skb) (CXGB3_SKB_CB(skb)->tx.wr_next)
enum c3cb_flags { enum c3cb_flags {
C3CB_FLAG_NEED_HDR = 1 << 0, /* packet needs a TX_DATA_WR header */ C3CB_FLAG_NEED_HDR = 1 << 0, /* packet needs a TX_DATA_WR header */
......
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