Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0fccd48 authored by hayeswang's avatar hayeswang Committed by David S. Miller
Browse files

r8152: adjust r8152_submit_rx



The behavior of handling the returned status from r8152_submit_rx()
is almost same, so let r8152_submit_rx() deal with the error
directly. This could avoid the duplicate code.

Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f869c912
Loading
Loading
Loading
Loading
+20 −20
Original line number Original line Diff line number Diff line
@@ -1032,7 +1032,6 @@ static void read_bulk_callback(struct urb *urb)
	int status = urb->status;
	int status = urb->status;
	struct rx_agg *agg;
	struct rx_agg *agg;
	struct r8152 *tp;
	struct r8152 *tp;
	int result;


	agg = urb->context;
	agg = urb->context;
	if (!agg)
	if (!agg)
@@ -1083,16 +1082,7 @@ static void read_bulk_callback(struct urb *urb)
		break;
		break;
	}
	}


	result = r8152_submit_rx(tp, agg, GFP_ATOMIC);
	r8152_submit_rx(tp, agg, GFP_ATOMIC);
	if (result == -ENODEV) {
		set_bit(RTL8152_UNPLUG, &tp->flags);
		netif_device_detach(tp->netdev);
	} else if (result) {
		spin_lock(&tp->rx_lock);
		list_add_tail(&agg->list, &tp->rx_done);
		spin_unlock(&tp->rx_lock);
		tasklet_schedule(&tp->tl);
	}
}
}


static void write_bulk_callback(struct urb *urb)
static void write_bulk_callback(struct urb *urb)
@@ -1680,7 +1670,6 @@ static void rx_bottom(struct r8152 *tp)
		int len_used = 0;
		int len_used = 0;
		struct urb *urb;
		struct urb *urb;
		u8 *rx_data;
		u8 *rx_data;
		int ret;


		list_del_init(cursor);
		list_del_init(cursor);


@@ -1733,13 +1722,7 @@ static void rx_bottom(struct r8152 *tp)
		}
		}


submit:
submit:
		ret = r8152_submit_rx(tp, agg, GFP_ATOMIC);
		r8152_submit_rx(tp, agg, GFP_ATOMIC);
		if (ret && ret != -ENODEV) {
			spin_lock_irqsave(&tp->rx_lock, flags);
			list_add_tail(&agg->list, &tp->rx_done);
			spin_unlock_irqrestore(&tp->rx_lock, flags);
			tasklet_schedule(&tp->tl);
		}
	}
	}
}
}


@@ -1806,11 +1789,28 @@ static void bottom_half(unsigned long data)
static
static
int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags)
int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags)
{
{
	int ret;

	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, agg_buf_sz,
			  (usb_complete_t)read_bulk_callback, agg);
			  (usb_complete_t)read_bulk_callback, agg);


	return usb_submit_urb(agg->urb, mem_flags);
	ret = usb_submit_urb(agg->urb, mem_flags);
	if (ret == -ENODEV) {
		set_bit(RTL8152_UNPLUG, &tp->flags);
		netif_device_detach(tp->netdev);
	} else if (ret) {
		struct urb *urb = agg->urb;
		unsigned long flags;

		urb->actual_length = 0;
		spin_lock_irqsave(&tp->rx_lock, flags);
		list_add_tail(&agg->list, &tp->rx_done);
		spin_unlock_irqrestore(&tp->rx_lock, flags);
		tasklet_schedule(&tp->tl);
	}

	return ret;
}
}


static void rtl_drop_queued_tx(struct r8152 *tp)
static void rtl_drop_queued_tx(struct r8152 *tp)