r8152: separate the rx buffer size
authorHayes Wang <hayeswang@realtek.com>
Tue, 13 Aug 2019 03:42:05 +0000 (11:42 +0800)
committerJakub Kicinski <jakub.kicinski@netronome.com>
Wed, 14 Aug 2019 01:12:08 +0000 (18:12 -0700)
The different chips may accept different rx buffer sizes. The RTL8152
supports 16K bytes, and RTL8153 support 32K bytes.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
drivers/net/usb/r8152.c

index 0cc03a9..94da790 100644 (file)
@@ -749,6 +749,7 @@ struct r8152 {
        u32 msg_enable;
        u32 tx_qlen;
        u32 coalesce;
+       u32 rx_buf_sz;
        u16 ocp_base;
        u16 speed;
        u8 *intr_buff;
@@ -1516,13 +1517,13 @@ static int alloc_all_mem(struct r8152 *tp)
        skb_queue_head_init(&tp->rx_queue);
 
        for (i = 0; i < RTL8152_MAX_RX; i++) {
-               buf = kmalloc_node(agg_buf_sz, GFP_KERNEL, node);
+               buf = kmalloc_node(tp->rx_buf_sz, GFP_KERNEL, node);
                if (!buf)
                        goto err1;
 
                if (buf != rx_agg_align(buf)) {
                        kfree(buf);
-                       buf = kmalloc_node(agg_buf_sz + RX_ALIGN, GFP_KERNEL,
+                       buf = kmalloc_node(tp->rx_buf_sz + RX_ALIGN, GFP_KERNEL,
                                           node);
                        if (!buf)
                                goto err1;
@@ -2113,7 +2114,7 @@ int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags)
                return 0;
 
        usb_fill_bulk_urb(agg->urb, tp->udev, usb_rcvbulkpipe(tp->udev, 1),
-                         agg->head, agg_buf_sz,
+                         agg->head, tp->rx_buf_sz,
                          (usb_complete_t)read_bulk_callback, agg);
 
        ret = usb_submit_urb(agg->urb, mem_flags);
@@ -2447,7 +2448,7 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp)
 
 static void r8153_set_rx_early_size(struct r8152 *tp)
 {
-       u32 ocp_data = agg_buf_sz - rx_reserved_size(tp->netdev->mtu);
+       u32 ocp_data = tp->rx_buf_sz - rx_reserved_size(tp->netdev->mtu);
 
        switch (tp->version) {
        case RTL_VER_03:
@@ -5115,6 +5116,7 @@ static int rtl_ops_init(struct r8152 *tp)
                ops->in_nway            = rtl8152_in_nway;
                ops->hw_phy_cfg         = r8152b_hw_phy_cfg;
                ops->autosuspend_en     = rtl_runtime_suspend_enable;
+               tp->rx_buf_sz           = 16 * 1024;
                break;
 
        case RTL_VER_03:
@@ -5132,6 +5134,7 @@ static int rtl_ops_init(struct r8152 *tp)
                ops->in_nway            = rtl8153_in_nway;
                ops->hw_phy_cfg         = r8153_hw_phy_cfg;
                ops->autosuspend_en     = rtl8153_runtime_enable;
+               tp->rx_buf_sz           = 32 * 1024;
                break;
 
        case RTL_VER_08:
@@ -5147,6 +5150,7 @@ static int rtl_ops_init(struct r8152 *tp)
                ops->in_nway            = rtl8153_in_nway;
                ops->hw_phy_cfg         = r8153b_hw_phy_cfg;
                ops->autosuspend_en     = rtl8153b_runtime_enable;
+               tp->rx_buf_sz           = 32 * 1024;
                break;
 
        default: