@@ -115,7 +115,7 @@ var (
115115var errSplitOverflow = errors .New ("wg: splitting coalesced packet resulted in overflow" )
116116
117117func (e ErrUDPGSODisabled ) Error () string {
118- return fmt .Sprintf ("disabled UDP GSO on %s, NIC(s) may not support checksum offload" , e .onLaddr )
118+ return fmt .Sprintf ("disabled udp gso on %s, NIC(s) may not support checksum offload" , e .onLaddr )
119119}
120120
121121func (e ErrUDPGSODisabled ) Unwrap () error {
@@ -368,34 +368,36 @@ func (s *StdNetBind2) receiveIP(
368368 msg .OOB = msg .OOB [:cap (msg .OOB )]
369369 }
370370
371+ batch := false
371372 var numMsgs int
372373 if br != nil {
373374 if rxOffload {
374375 readAt := len (* msgs ) - (IdealBatchSize / udpSegmentMaxDatagrams )
375376 numMsgs , err = br .ReadBatch ((* msgs )[readAt :], 0 )
376377 waddr := msgAddr (msgs )
377- loge (err )("wg: bind2: %s GRO: readAt(%d) addr(%v) numMsgs(%d) err(%v)" , s .id , readAt , waddr , numMsgs , err )
378378 if err != nil {
379+ log .E ("wg: bind2: %s GRO: readAt(%d) addr(%v) numMsgs(%d) err(%v)" , s .id , readAt , waddr , numMsgs , err )
379380 return 0 , err
380381 }
381382
382383 numMsgs , err = splitCoalescedMessages (* msgs , readAt , getGSOSize )
383- loge (err )("wg: bind2: %s GRO: splitCoalescedMessages(at: %d; from: %v) numMsgs(%d) err(%v)" , s .id , readAt , waddr , numMsgs , err )
384384 if err != nil {
385+ log .E ("wg: bind2: %s GRO: splitCoalescedMessages(at: %d; from: %v) numMsgs(%d) err(%v)" , s .id , readAt , waddr , numMsgs , err )
385386 return 0 , err
386387 }
387388 } else {
389+ batch = true
388390 numMsgs , err = br .ReadBatch (* msgs , 0 )
389- loge (err )("wg: bind2: %s ReadBatch(sz: %d; from: %s) numMsgs(%d) err(%v)" , s .id , len (* msgs ), msgAddr (msgs ), numMsgs , err )
390391 if err != nil {
392+ log .E ("wg: bind2: %s ReadBatch(sz: %d; from: %s) numMsgs(%d) err(%v)" , s .id , len (* msgs ), msgAddr (msgs ), numMsgs , err )
391393 return 0 , err
392394 }
393395 }
394396 } else {
395397 msg := & (* msgs )[0 ]
396398 msg .N , msg .NN , _ , msg .Addr , err = conn .ReadMsgUDP (msg .Buffers [0 ], msg .OOB )
397- loge (err )("wg: bind2: %s ReadMsgUDP(sz: %d; from: %v) err(%v)" , s .id , msg .N , msg .Addr , err )
398399 if err != nil {
400+ log .E ("wg: bind2: %s ReadMsgUDP(sz: %d; from: %v) err(%v)" , s .id , msg .N , msg .Addr , err )
399401 return 0 , err
400402 }
401403 numMsgs = 1
@@ -404,7 +406,7 @@ func (s *StdNetBind2) receiveIP(
404406 for i := 0 ; i < numMsgs ; i ++ {
405407 msg := & (* msgs )[i ]
406408 sizes [i ] = msg .N
407- if sizes [i ] == 0 {
409+ if sizes [i ] == 0 && settings . Debug {
408410 log .V ("wg: bind2: %s zero-sized message from %v" , s .id , msg .Addr )
409411 continue
410412 }
@@ -418,7 +420,7 @@ func (s *StdNetBind2) receiveIP(
418420 eps [i ] = ep
419421 }
420422 if settings .Debug {
421- log .VV ("wg: bind2: %s received % d messages" , s .id , numMsgs )
423+ log .VV ("wg: bind2: %s received (batch? %t, offload? %t) % d messages" , s .id , batch , rxOffload , numMsgs )
422424 }
423425 return numMsgs , nil
424426}
@@ -598,8 +600,9 @@ retry:
598600 if offload {
599601 n := coalesceMessages (ua , ep , bufs , * msgs , setGSOSize )
600602 // send coalesced msgs; ie, len(*msgs) <= len(bufs)
601- err = s .send (c , br , (* msgs )[:n ])
602- loge (err )("wg: bind2: %s GSO: send(%d/%d) to %s; err(%v)" , s .id , n , len (bufs ), ua , err )
603+ if err = s .send (c , br , (* msgs )[:n ], "gso" ); err != nil {
604+ log .E ("wg: bind2: %s gso: send(%d/%d) to %s; err(%v)" , s .id , n , len (bufs ), ua , err )
605+ }
603606
604607 if shouldDisableUDPGSOOnError (err ) { // err may be nil
605608 offload = false
@@ -611,7 +614,7 @@ retry:
611614 }
612615 s .mu .Unlock ()
613616 retried = true
614- log .E ("wg: bind2: %s GSO : disabled on %s / v4? %t; err %v" , s .id , ua , ! is6 , err )
617+ log .E ("wg: bind2: %s gso : disabled on %s / v4? %t; err %v" , s .id , ua , ! is6 , err )
615618 goto retry
616619 }
617620 } else {
@@ -623,21 +626,22 @@ retry:
623626 setSrcControl (& msg .OOB , ep ) // no-op on Android
624627 }
625628 // send all msgs
626- err = s .send (c , br , (* msgs )[:len (bufs )])
627- loge (err )("wg: bind2: %s GSO: send(%d) to %s (retry? %t); err(%v)" , s .id , len (bufs ), ua , retried , err )
629+ if err = s .send (c , br , (* msgs )[:len (bufs )], "batch" ); err != nil {
630+ log .E ("wg: bind2: %s gso: send(%d) to %s (retry? %t); err(%v)" , s .id , len (bufs ), ua , retried , err )
631+ }
628632 }
629633 if retried {
630634 x := zeroaddr
631635 if a := c .LocalAddr (); a != nil {
632636 x = a
633637 }
634- log .W ("wg: bind2: %s disabled UDP GSO on %s; err %v" , s .id , x , err )
638+ log .W ("wg: bind2: %s disabled udp gso on %s; err %v" , s .id , x , err )
635639 return ErrUDPGSODisabled {onLaddr : x .String (), RetryErr : err }
636640 }
637641 return err
638642}
639643
640- func (s * StdNetBind2 ) send (conn * net.UDPConn , pc batchWriter , msgs []ipv6.Message ) (err error ) {
644+ func (s * StdNetBind2 ) send (conn * net.UDPConn , pc batchWriter , msgs []ipv6.Message , who string ) (err error ) {
641645 var n , start int
642646
643647 batch := pc != nil && core .IsNotNil (pc )
@@ -653,18 +657,22 @@ func (s *StdNetBind2) send(conn *net.UDPConn, pc batchWriter, msgs []ipv6.Messag
653657 for _ , msg := range msgs {
654658 addr , ok := msg .Addr .(* net.UDPAddr )
655659 if ! ok { // unlikely
656- log .E ("wg: bind2: %s wrong addr type %s %T" , s .id , msg .Addr , msg .Addr )
660+ log .E ("wg: bind2: %s send: %s wrong addr type %s %T" , s .id , who , msg .Addr , msg .Addr )
657661 continue
658662 }
659663 _ , _ , err = conn .WriteMsgUDP (msg .Buffers [0 ], msg .OOB , addr )
660664 if err != nil {
661- log .E ("wg: bind2: %s send: to %v; err %v" , s .id , addr , err )
665+ log .E ("wg: bind2: %s send: %s to %v; err %v" , s .id , who , addr , err )
662666 break
663667 }
664668 n += 1
665669 }
666670 }
667- loge (err )("wg: bind2: %s send: batch? %t; n(%d); err? %v" , s .id , batch , n , err )
671+ if err != nil {
672+ log .E ("wg: bind2: %s send: %s batch? %t; n(%d); err? %v" , s .id , who , batch , n , err )
673+ } else {
674+ log .V ("wg: bind2: %s send: %s batch? %t; n(%d); err? %v" , s .id , who , batch , n , err )
675+ }
668676 return err
669677}
670678
0 commit comments