Hello,
I am sending some of my previous mails so that you have some context.
I have a non-IP stack. So, I have my own packet type. I want to do some
huge data transfers using this.
----------
| MY Layer |
----------
| Ethernet |
----------
When I transfer upto 25 Meg, everything is fine. If I transfer 100Meg
after a reboot, it works fine. If I try doing the same again, the sender
itself does not send the whole data. It sends about 50%. I am sending as
fast as I can. I also tried sending slowly. In this case, it sends out the
whole stuff the first time after reboot. The second time it sends 90% of
it.
I do a dev_queue_xmit() filling ethernet header myself. So, I can count
how many packets/bytes I have sent to the ethernet driver and that shows,
100Meg. But, the packets are not being sent on to the wire. I can also see
this using tcpdump.
Could anyone tell me what might be happening?
I've had problems earlier with tulip driver. I am still using tulip
driver (0.91). Kernel version - 2.2.5.
Thanks for your time and hope to get a reply.
Pramodh
On Mon, 1 May 2000, pramodh mallipatna wrote:
> 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]
>
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]