|
@@ -40,9 +40,9 @@
|
|
|
#define SKB_TMP_LEN(SKB) \
|
|
|
(((SKB)->transport_header - (SKB)->mac_header) + tcp_hdrlen(SKB))
|
|
|
|
|
|
-static void fill_v2_desc(struct hnae_ring *ring, void *priv,
|
|
|
- int size, dma_addr_t dma, int frag_end,
|
|
|
- int buf_num, enum hns_desc_type type, int mtu)
|
|
|
+static void fill_v2_desc_hw(struct hnae_ring *ring, void *priv, int size,
|
|
|
+ int send_sz, dma_addr_t dma, int frag_end,
|
|
|
+ int buf_num, enum hns_desc_type type, int mtu)
|
|
|
{
|
|
|
struct hnae_desc *desc = &ring->desc[ring->next_to_use];
|
|
|
struct hnae_desc_cb *desc_cb = &ring->desc_cb[ring->next_to_use];
|
|
@@ -64,7 +64,7 @@ static void fill_v2_desc(struct hnae_ring *ring, void *priv,
|
|
|
desc_cb->type = type;
|
|
|
|
|
|
desc->addr = cpu_to_le64(dma);
|
|
|
- desc->tx.send_size = cpu_to_le16((u16)size);
|
|
|
+ desc->tx.send_size = cpu_to_le16((u16)send_sz);
|
|
|
|
|
|
/* config bd buffer end */
|
|
|
hnae_set_bit(rrcfv, HNSV2_TXD_VLD_B, 1);
|
|
@@ -133,6 +133,14 @@ static void fill_v2_desc(struct hnae_ring *ring, void *priv,
|
|
|
ring_ptr_move_fw(ring, next_to_use);
|
|
|
}
|
|
|
|
|
|
+static void fill_v2_desc(struct hnae_ring *ring, void *priv,
|
|
|
+ int size, dma_addr_t dma, int frag_end,
|
|
|
+ int buf_num, enum hns_desc_type type, int mtu)
|
|
|
+{
|
|
|
+ fill_v2_desc_hw(ring, priv, size, size, dma, frag_end,
|
|
|
+ buf_num, type, mtu);
|
|
|
+}
|
|
|
+
|
|
|
static const struct acpi_device_id hns_enet_acpi_match[] = {
|
|
|
{ "HISI00C1", 0 },
|
|
|
{ "HISI00C2", 0 },
|
|
@@ -289,15 +297,15 @@ static void fill_tso_desc(struct hnae_ring *ring, void *priv,
|
|
|
|
|
|
/* when the frag size is bigger than hardware, split this frag */
|
|
|
for (k = 0; k < frag_buf_num; k++)
|
|
|
- fill_v2_desc(ring, priv,
|
|
|
- (k == frag_buf_num - 1) ?
|
|
|
+ fill_v2_desc_hw(ring, priv, k == 0 ? size : 0,
|
|
|
+ (k == frag_buf_num - 1) ?
|
|
|
sizeoflast : BD_MAX_SEND_SIZE,
|
|
|
- dma + BD_MAX_SEND_SIZE * k,
|
|
|
- frag_end && (k == frag_buf_num - 1) ? 1 : 0,
|
|
|
- buf_num,
|
|
|
- (type == DESC_TYPE_SKB && !k) ?
|
|
|
+ dma + BD_MAX_SEND_SIZE * k,
|
|
|
+ frag_end && (k == frag_buf_num - 1) ? 1 : 0,
|
|
|
+ buf_num,
|
|
|
+ (type == DESC_TYPE_SKB && !k) ?
|
|
|
DESC_TYPE_SKB : DESC_TYPE_PAGE,
|
|
|
- mtu);
|
|
|
+ mtu);
|
|
|
}
|
|
|
|
|
|
netdev_tx_t hns_nic_net_xmit_hw(struct net_device *ndev,
|