Joe Eykholt wrote:
> Zou, Yi wrote:
>>> Yi Zou wrote:
>>>> We are always sending the max frame size from lport->mfs when sending the
>>> FIP
>>>> keep alive even there are no vport desciptors. There is no need to send the
>>>> full sized frame for keep-alive.
>>>>
>>>> Signed-off-by: Yi Zou <[email protected]>
>>>> ---
>>>>
>>>>  drivers/scsi/fcoe/libfcoe.c |    5 +++--
>>>>  1 files changed, 3 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c
>>>> index 2988b71..b9c56ff 100644
>>>> --- a/drivers/scsi/fcoe/libfcoe.c
>>>> +++ b/drivers/scsi/fcoe/libfcoe.c
>>>> @@ -351,8 +351,9 @@ static void fcoe_ctlr_send_keep_alive(struct fcoe_ctlr
>>> *fip,
>>>>    if (!fcf || !fc_host_port_id(lp->host))
>>>>            return;
>>>>
>>>> -  len = fcoe_ctlr_fcoe_size(fip) + sizeof(struct ethhdr);
>>>> -  BUG_ON(len < sizeof(*kal) + sizeof(*vn));
>>>> +  len = sizeof(*kal) + ports * sizeof(*vn);
>>>> +  if (len < ETH_ZLEN)
>>>> +          len = ETH_ZLEN;
>>>>    skb = dev_alloc_skb(len);
>>>>    if (!skb)
>>>>            return;
>>>>
>>> I guess a preliminary version of FIP must've specified that Keep Alives were
>>> padded in order to verify the fabric can still carry jumbo frames.
>>> I may have just heard this in a conversation somewhere.
>>> It doens't have anything to do with whether there is a port parameter or
>>> vports.  The BUG_ON is just paranoia to say the padding is always going
>>> to give us a big enough skb.
>>>
>>> However, I can't find anything about padding keep-alives in the
>>> current spec.  It only talks about padding the solicited advertisements.
>>>
>>> I still think it's a good idea to pad the keep-alives.
>>> Maybe we should get the spec. to state that.
>>>
>>>     Joe
>> I was looking at the T11/09-117v1 as the FC-BB-5 for updated FIP updated,
>> where in the end of 7.7.6.2, it says "FIP_Pad field shall be of zero length
>> for all other FIP operations.", where as you mentioned only the solicited
>> advertisements must have the FIP pad.
>>
>> I will double-check on the spec tomorrow to make sure.
> 
> I agree, the spec says there should be no PAD on keep alives.
> That's the same version I checked.
> 
> However, extra bytes past the end of the frame are not going to cause
> a problem.  Note that the descriptor length field of the
> keep-alive does not include those extra bytes.
> 
>          kal->fip.fip_subcode = FIP_SC_KEEP_ALIVE;
>          kal->fip.fip_dl_len = htons((sizeof(kal->mac) +
>                                       ports * sizeof(*vn)) / FIP_BPW);
> 
> BTW, in your change, the check against ETH_ZLEN is not necessary, the
> NIC will do any padding needed to get to the minimum frame size.
> Otherwise, we would have to check that in other places.
> 
> But, padding to ETH_ZLEN proves my point.  It's OK to have the
> extra bytes there.

On further thought, I have no objections to shortening the keep-alives.
But, the check for ETH_ZLEN should be left out.

Also, the patch commentary shouldn't mention vports.  That had nothing
to do with the padding.

        Joe

_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to