Hello,
Slightly long mail. Appreciate your time and patience to read it and
answer.
I had posted an earlier mail regarding a problem of not getting all
the packets at the receiver (The mail is below, if you want to read it
again). Part of the problem was the tulip driver. The other part of the
problem which I found was that:
If I send 10Meg of data (a fast burst), I get everything at the other end.
But, if I send about 25Meg of data, I get only 13-14 Meg. I was under the
assumption that it was because I was sending it too fast. But, when I ran
tcpdump, I found that after 13-14 Meg of data, my packets were getting
tagged as IP packets (even though they are not) at the sender and so, at
the receiver, net_bh was not giving the packets to me.
I figured this was after an ARP timeout and was trying to refresh the
cache. Could anyone tell me why after the refresh it is tagging my packets
as IP packets. I have the code how I send my packets (similar to
ip_finish_output()) below. I tried tracing where the function pointers are
getting assigned to after 13-14 Megs but could not find it.
if (hh) {
read_lock_irq(&hh->hh_lock);
memcpy(skb->data - 16, hh->hh_data, 16);
read_unlock_irq(&hh->hh_lock);
skb_push(skb, dev->hard_header_len);
hh->hh_output(skb);
} else if (dst->neighbour)
dst->neighbour->output(skb);
Thanks,
Pramodh
On Sun, 23 Apr 2000, pramodh mallipatna wrote:
> Hello,
>
> Slightly long mail. Appreciate your time and patience to read it and
> answer.
>
> I have a protocol layer running over ethernet. I have my own packet type
> (protocol type) which is 0x0A0A (like ETH_P_IP). So, the net_bh() hands
> the packets (my packets) over to my layer. I have my own header defined,
> which has a sequence no, among other fields. I transfer some dummy traffic
> over my layer which are 1035 (packet size, inclusive of my header).
>
> When I just transmit 3-4 packets, I get it at the receiver. But, if I
> transfer about a Meg, the packets are dropped. Sometimes, I get just 4
> packets out of 1 Meg and sometimes I get 500-600 packets.
>
> What I observe is, the ethernet driver (on the receiver side) itself does
> not get my packets. According to the ethernet driver on the sending side,
> it shows it has sent 1 Meg of data.
>
> If I send the same amount of data using udp sockets, I get all my data,
> which probably shows that the ethernet card and driver seems to be fine.
>
> I also tried sending the data at a very slow rate just to ensure the
> ethernet card/driver is not dropping the packets because of high speed
> transfer, and even in this case, the same behaviour is observed (not
> getting all the packets at the receiver).
>
> Could someone tell me what might be happening?
> I am using 2.2.5 kernel. Is it something to do with this?
>
> Thanks,
> Pramodh
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-net" in
> the body of a message to [EMAIL PROTECTED]
>
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]