Denis Vlasenko wrote:
> On 9 October 2002 15:14, Adam Kropelin wrote:
>
>>On Wed, Oct 09, 2002 at 07:31:17PM -0200, Denis Vlasenko wrote:
>>
>>>ewrk3.c
>>
>>I've got a few of these laying around. Send whatever patches you want
>>tested and I'll give it a shot.
>
>
> Please do your best in trying to break it, especially since you say you have
> more than one. Can you plug them all in one box?
>
> I'd suggest SMP/preempt heavy IO. Is there stress test software for NICs?
> What is pktgen?
pktgen will definately stress the nics. Try sending to yourself
as well so you can test the pkt receive code..it's normally the weakest.
Ben
> --
> vda
>
> diff -u --recursive linux-2.5.40org/drivers/net/ewrk3.c linux-2.5.40/drivers/net/ewrk3.c
> --- linux-2.5.40org/drivers/net/ewrk3.c Tue Oct 1 05:06:58 2002
> +++ linux-2.5.40/drivers/net/ewrk3.c Thu Oct 3 12:09:46 2002
> @@ -930,6 +930,7 @@
> spin_unlock(&lp->hw_lock);
> }
>
> +/* Called with lp->hw_lock held */
> static int ewrk3_rx(struct net_device *dev)
> {
> struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv;
> @@ -1055,8 +1056,9 @@
> }
>
> /*
> - ** Buffer sent - check for TX buffer errors.
> - */
> +** Buffer sent - check for TX buffer errors.
> +** Called with lp->hw_lock held
> +*/
> static int ewrk3_tx(struct net_device *dev)
> {
> struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv;
> @@ -1631,6 +1633,7 @@
> u_long iobase = dev->base_addr;
> int i, j, status = 0;
> u_char csr;
> + unsigned long flags;
> union ewrk3_addr {
> u_char addr[HASH_TABLE_LEN * ETH_ALEN];
> u_short val[(HASH_TABLE_LEN * ETH_ALEN) >> 1];
> @@ -1745,19 +1748,26 @@
> }
>
> break;
> - case EWRK3_GET_STATS: /* Get the driver statistics */
> - cli();
> - ioc->len = sizeof(lp->pktStats);
> - if (copy_to_user(ioc->data, &lp->pktStats, ioc->len))
> - status = -EFAULT;
> - sti();
> + case EWRK3_GET_STATS: { /* Get the driver statistics */
> + typeof(lp->pktStats) *tmp_stats =
> + kmalloc(sizeof(lp->pktStats), GFP_KERNEL);
> + if (!tmp_stats) return -ENOMEM;
> +
> + spin_lock_irqsave(&lp->hw_lock, flags);
> + memcpy(tmp_stats, &lp->pktStats, sizeof(lp->pktStats));
> + spin_unlock_irqrestore(&lp->hw_lock, flags);
>
> + ioc->len = sizeof(lp->pktStats);
> + if (copy_to_user(ioc->data, tmp_stats, sizeof(lp->pktStats)))
> + status = -EFAULT;
> + kfree(tmp_stats);
> break;
> + }
> case EWRK3_CLR_STATS: /* Zero out the driver statistics */
> if (capable(CAP_NET_ADMIN)) {
> - cli();
> + spin_lock_irqsave(&lp->hw_lock, flags);
> memset(&lp->pktStats, 0, sizeof(lp->pktStats));
> - sti();
> + spin_unlock_irqrestore(&lp->hw_lock,flags);
> } else {
> status = -EPERM;
> }
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
-- Ben Greear <greearb@candelatech.com> <Ben_Greear AT excite.com> President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue Oct 15 2002 - 22:00:32 EST