forked from Minki/linux
r8152: separate the rx buffer size
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>
This commit is contained in:
parent
e070ca371f
commit
ec5791c202
@ -749,6 +749,7 @@ struct r8152 {
|
|||||||
u32 msg_enable;
|
u32 msg_enable;
|
||||||
u32 tx_qlen;
|
u32 tx_qlen;
|
||||||
u32 coalesce;
|
u32 coalesce;
|
||||||
|
u32 rx_buf_sz;
|
||||||
u16 ocp_base;
|
u16 ocp_base;
|
||||||
u16 speed;
|
u16 speed;
|
||||||
u8 *intr_buff;
|
u8 *intr_buff;
|
||||||
@ -1516,13 +1517,13 @@ static int alloc_all_mem(struct r8152 *tp)
|
|||||||
skb_queue_head_init(&tp->rx_queue);
|
skb_queue_head_init(&tp->rx_queue);
|
||||||
|
|
||||||
for (i = 0; i < RTL8152_MAX_RX; i++) {
|
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)
|
if (!buf)
|
||||||
goto err1;
|
goto err1;
|
||||||
|
|
||||||
if (buf != rx_agg_align(buf)) {
|
if (buf != rx_agg_align(buf)) {
|
||||||
kfree(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);
|
node);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
goto err1;
|
goto err1;
|
||||||
@ -2113,7 +2114,7 @@ int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
usb_fill_bulk_urb(agg->urb, tp->udev, usb_rcvbulkpipe(tp->udev, 1),
|
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);
|
(usb_complete_t)read_bulk_callback, agg);
|
||||||
|
|
||||||
ret = usb_submit_urb(agg->urb, mem_flags);
|
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)
|
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) {
|
switch (tp->version) {
|
||||||
case RTL_VER_03:
|
case RTL_VER_03:
|
||||||
@ -5115,6 +5116,7 @@ static int rtl_ops_init(struct r8152 *tp)
|
|||||||
ops->in_nway = rtl8152_in_nway;
|
ops->in_nway = rtl8152_in_nway;
|
||||||
ops->hw_phy_cfg = r8152b_hw_phy_cfg;
|
ops->hw_phy_cfg = r8152b_hw_phy_cfg;
|
||||||
ops->autosuspend_en = rtl_runtime_suspend_enable;
|
ops->autosuspend_en = rtl_runtime_suspend_enable;
|
||||||
|
tp->rx_buf_sz = 16 * 1024;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RTL_VER_03:
|
case RTL_VER_03:
|
||||||
@ -5132,6 +5134,7 @@ static int rtl_ops_init(struct r8152 *tp)
|
|||||||
ops->in_nway = rtl8153_in_nway;
|
ops->in_nway = rtl8153_in_nway;
|
||||||
ops->hw_phy_cfg = r8153_hw_phy_cfg;
|
ops->hw_phy_cfg = r8153_hw_phy_cfg;
|
||||||
ops->autosuspend_en = rtl8153_runtime_enable;
|
ops->autosuspend_en = rtl8153_runtime_enable;
|
||||||
|
tp->rx_buf_sz = 32 * 1024;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RTL_VER_08:
|
case RTL_VER_08:
|
||||||
@ -5147,6 +5150,7 @@ static int rtl_ops_init(struct r8152 *tp)
|
|||||||
ops->in_nway = rtl8153_in_nway;
|
ops->in_nway = rtl8153_in_nway;
|
||||||
ops->hw_phy_cfg = r8153b_hw_phy_cfg;
|
ops->hw_phy_cfg = r8153b_hw_phy_cfg;
|
||||||
ops->autosuspend_en = rtl8153b_runtime_enable;
|
ops->autosuspend_en = rtl8153b_runtime_enable;
|
||||||
|
tp->rx_buf_sz = 32 * 1024;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user