Please use inline response instead top post.

On Tue, 2015-07-14 at 13:09 +0000, Sawan Chandak wrote:
> Disabling AUTO_VLAN will not work.
> if AUTO_VLAN is disabled, then how do we set the VLAN of the fcoe interface ?

Just configure AUTO_VLAN disabled fcoe for the vlan interface as I
explained before to disable fip vlan discovery.

> The idea of having,  DEFAULT_VLAN configuration option, is not to skip VLAN  
> discovery, but to have another level of tolerance to the openfcoe tools, if 
> the FIP VLAN request fails or is not supported by the FCF.
> There are some switches that don’t support FIP VLAN discovery and expect 
> Initiator to fallback discovery to default VLAN for FCOE traffic.
> 

Works for me if you still want default vlan fall back though vlan can be
configured to skip AUTO VLAN as I explained. Also, fabric switch
requires vlan discovery and if that is not working then you might want
to know that it is broken instead silently defaulting a vlan. If you
still want this then fix the issue I reported with the patch below
beside updating documentation for new default vlan option.


Thanks, 
Vasu

> Thanks,
> Sawan
> 
> -----Original Message-----
> From: Vasu Dev [mailto:[email protected]] 
> Sent: Thursday, July 09, 2015 4:32 AM
> To: Sawan Chandak
> Cc: [email protected]; Giridhar Malavali; Saurav Kashyap; Chad Dupuis
> Subject: Re: [PATCH] fcoemon: Default FIP VLAN support.
> 
> On Tue, 2015-07-07 at 06:45 -0400, Sawan Chandak wrote:
> > Currently with fcoe-utils if the FIP VLAN request fails or is not 
> > supported by the FCF then discovery will fail since the tools will not know 
> > which VLAN to send FIP traffic.
> > To add another level of tolerance to the openfcoe tools, add a 
> > configuration parameter where user can specify a manual VLAN for FIP 
> > traffic to be sent on if the FIP VLAN request fails or is not supported by 
> > the FCF.
> > 
> 
> Instead of adding new DEFAULT_VLAN config option, disabling AUTO_VLAN should 
> do same thing unless I'm missing something. 
> 
> I mean FCoE fabric is configured with VLAN and some switch doesn't even allow 
> FLOGI until VLAN discovery succeed but for some reason if user wants to skip 
> VLAN discovery and instead wants to use a specific so called default vlan 
> here then they could do so by simply disabling existing AUTO_VLAN config 
> option.
> 
> Also, this patch breaks AUTO_VLAN since with the patch fcoemon succeed in 
> creating fcoe instance for discovered vlan but then the interface remains 
> disabled. Is AUTO_VLAN working for you with this patch ?
> 
> Thanks,
> Vasu 
> 
> 
> > Signed-off-by: Chad Dupuis <[email protected]>
> > Signed-off-by: Sawan Chandak <[email protected]>
> > ---
> >  fcoemon.c | 46 ++++++++++++++++++++++++++++++++++++++++++++--
> >  1 file changed, 44 insertions(+), 2 deletions(-)
> > 
> > diff --git a/fcoemon.c b/fcoemon.c
> > index c0af99b..5578680 100644
> > --- a/fcoemon.c
> > +++ b/fcoemon.c
> > @@ -105,6 +105,7 @@
> >  #define CFG_IF_VAR_AUTOVLAN    "AUTO_VLAN"
> >  #define CFG_IF_VAR_MODE        "MODE"
> >  #define CFG_IF_VAR_FIP_RESP    "FIP_RESP"
> > +#define CFG_IF_VAR_DEFAULTVLAN "DEFAULT_VLAN"
> >  
> >  enum fcoe_mode {
> >     FCOE_MODE_FABRIC = 0,
> > @@ -135,6 +136,9 @@ struct fcoe_port {
> >     int auto_vlan;
> >     int auto_created;
> >     int ready;
> > +   int default_vlan;
> > +   int default_vlan_set;
> > +   int default_vid;
> >  
> >     /* following track data required to manage FCoE interface state */
> >     enum fcp_action action;      /* current state */
> > @@ -603,6 +607,24 @@ static int fcm_read_config_files(void)
> >             if (!strncasecmp(val, "vn2vn", 5) && rc == 1)
> >                     next->mode = FCOE_MODE_VN2VN;
> >  
> > +           /* DEFAULT_VLAN ID */
> > +           rc = fcm_read_config_variable(file, val, sizeof(val),
> > +                                           fp, CFG_IF_VAR_DEFAULTVLAN);
> > +           if (rc < 0) {
> > +                   FCM_LOG("Invalid format for %s variable in %s",
> > +                           CFG_IF_VAR_DEFAULTVLAN, file);
> > +                   fclose(fp);
> > +                   free(next);
> > +                   continue;
> > +                }
> > +
> > +           /* if found, set default vlan id */
> > +           if (atoi(val) > 0 && rc == 1) {
> > +                   next->default_vlan = 1;
> > +                   next->default_vid = atoi(val);
> > +                   FCM_LOG("Default VLAN ID = %d", next->default_vid);
> > +                }
> > +
> >             fclose(fp);
> >  
> >             if (!fcoe_config.port) {
> > @@ -1007,9 +1029,18 @@ fcm_vlan_disc_handler(struct fiphdr *fh, struct 
> > sockaddr_ll *sa, void *arg)
> >             case FIP_TLV_VLAN:
> >                     if (tlv->tlv_len != 1) {
> >                             FCM_LOG_ERR(EINVAL, "bad length on VLAN TLV");
> > -                           break;
> > +                           if (p->default_vlan) {
> > +                                   FCM_LOG_DBG("%s: Default VLAN set\n", 
> > __func__);
> > +                                   p->default_vlan_set =1;
> > +                                }
> > +                           else
> > +                                   break;
> >                     }
> > -                   vid = ntohs(((struct fip_tlv_vlan *)tlv)->vlan);
> > +
> > +                   if (p-> default_vlan && p->default_vlan_set)
> > +                           vid =  p->default_vid;
> > +                   else
> > +                           vid = ntohs(((struct fip_tlv_vlan *)tlv)->vlan);
> >                     FCM_LOG_DBG("%s: vid=%d\n", __func__, vid);
> >                     if (vid) {
> >                             vp = fcm_new_vlan(sa->sll_ifindex, vid, vn2vn); 
> > @@ -2907,6 
> > +2938,14 @@ void fcm_vlan_disc_timeout(void *arg)
> >     p->vlan_disc_count++;
> >     fcm_send_fip_request(p);
> >     sa_timer_set(&p->vlan_disc_timer, FCM_VLAN_DISC_TIMEOUT);
> > +   if ( p->vlan_disc_count >= 3) {
> > +           if (p->default_vlan) {
> > +                   p->default_vlan_set = 1;
> > +                   FCM_LOG_DBG("%s: Default VLAN set [%d]",
> > +                                   p->ifname, p->default_vid);
> > +           }
> > +   }
> > +
> >  }
> >  
> >  static int fcm_start_vlan_disc(struct fcoe_port *p) @@ -3254,6 
> > +3293,9 @@ static void fcm_dump(void)
> >             FCM_LOG("auto_vlan: %d\n", curr->auto_vlan);
> >             FCM_LOG("auto_created: %d\n", curr->auto_created);
> >             FCM_LOG("ready: %d\n", curr->ready);
> > +           FCM_LOG("default_vlan: %d\n", curr->default_vlan);
> > +           FCM_LOG("default_vlan_set: %d\n", curr->default_vlan_set);
> > +           FCM_LOG("default_vid: %d\n", curr->default_vid);
> >             FCM_LOG("action: %d\n", curr->action);
> >             FCM_LOG("last_action: %d\n", curr->last_action);
> >             FCM_LOG("last_msg_type: %d\n", curr->last_msg_type);
> 
> 


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

Reply via email to