diff options
Diffstat (limited to 'drivers/net/ethernet/ibm/ibmvnic.c')
-rw-r--r-- | drivers/net/ethernet/ibm/ibmvnic.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index cb8182f4fdfa..c66abd476023 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c | |||
@@ -1093,11 +1093,12 @@ static int build_hdr_data(u8 hdr_field, struct sk_buff *skb, | |||
1093 | * places them in a descriptor array, scrq_arr | 1093 | * places them in a descriptor array, scrq_arr |
1094 | */ | 1094 | */ |
1095 | 1095 | ||
1096 | static void create_hdr_descs(u8 hdr_field, u8 *hdr_data, int len, int *hdr_len, | 1096 | static int create_hdr_descs(u8 hdr_field, u8 *hdr_data, int len, int *hdr_len, |
1097 | union sub_crq *scrq_arr) | 1097 | union sub_crq *scrq_arr) |
1098 | { | 1098 | { |
1099 | union sub_crq hdr_desc; | 1099 | union sub_crq hdr_desc; |
1100 | int tmp_len = len; | 1100 | int tmp_len = len; |
1101 | int num_descs = 0; | ||
1101 | u8 *data, *cur; | 1102 | u8 *data, *cur; |
1102 | int tmp; | 1103 | int tmp; |
1103 | 1104 | ||
@@ -1126,7 +1127,10 @@ static void create_hdr_descs(u8 hdr_field, u8 *hdr_data, int len, int *hdr_len, | |||
1126 | tmp_len -= tmp; | 1127 | tmp_len -= tmp; |
1127 | *scrq_arr = hdr_desc; | 1128 | *scrq_arr = hdr_desc; |
1128 | scrq_arr++; | 1129 | scrq_arr++; |
1130 | num_descs++; | ||
1129 | } | 1131 | } |
1132 | |||
1133 | return num_descs; | ||
1130 | } | 1134 | } |
1131 | 1135 | ||
1132 | /** | 1136 | /** |
@@ -1144,16 +1148,12 @@ static void build_hdr_descs_arr(struct ibmvnic_tx_buff *txbuff, | |||
1144 | int *num_entries, u8 hdr_field) | 1148 | int *num_entries, u8 hdr_field) |
1145 | { | 1149 | { |
1146 | int hdr_len[3] = {0, 0, 0}; | 1150 | int hdr_len[3] = {0, 0, 0}; |
1147 | int tot_len, len; | 1151 | int tot_len; |
1148 | u8 *hdr_data = txbuff->hdr_data; | 1152 | u8 *hdr_data = txbuff->hdr_data; |
1149 | 1153 | ||
1150 | tot_len = build_hdr_data(hdr_field, txbuff->skb, hdr_len, | 1154 | tot_len = build_hdr_data(hdr_field, txbuff->skb, hdr_len, |
1151 | txbuff->hdr_data); | 1155 | txbuff->hdr_data); |
1152 | len = tot_len; | 1156 | *num_entries += create_hdr_descs(hdr_field, hdr_data, tot_len, hdr_len, |
1153 | len -= 24; | ||
1154 | if (len > 0) | ||
1155 | num_entries += len % 29 ? len / 29 + 1 : len / 29; | ||
1156 | create_hdr_descs(hdr_field, hdr_data, tot_len, hdr_len, | ||
1157 | txbuff->indir_arr + 1); | 1157 | txbuff->indir_arr + 1); |
1158 | } | 1158 | } |
1159 | 1159 | ||