RE: [PATCH] BlueZ: Added retries for BNEP connection setup.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Johan,
Thanks for the review, I will send patch v2 shortly.

> -----Original Message-----
> From: Johan Hedberg [mailto:johan.hedberg@xxxxxxxxx]
> Sent: Thursday, February 02, 2012 8:56 PM
> To: ilia.kolominsky@xxxxxxxxx
> Cc: linux-bluetooth@xxxxxxxxxxxxxxx; Ilia, Kolominsky
> Subject: Re: [PATCH] BlueZ: Added retries for BNEP connection setup.
> 
> Hi Ilia,
> 
> On Sun, Jan 22, 2012, ilia.kolominsky@xxxxxxxxx wrote:
> > According to BNEP spec. section 2.6.3 and
> > in order to pass TP/BNEP/CTRL/BV-02-C certification test.
> 
> Please add a much more detailed commit message explaining the
> background
> to this, what the test case does and why your fix is the right one, why
> using SO_RCVTIMEO wasn't good enough, etc. Also fix the summary line
> not
> to have a "BlueZ" prefix (that should be within the initial []) and the
> form of the first word should be "Add" and not "Added" (actually since
> this entire patch seems to be a fix it should be "Fix ...").
> 
> > Signed-off-by: Ilia Kolomisnky <iliak@xxxxxx>
> 
> We don't use this for user space patches.
> 
> > +#define CON_SETUP_TO_MS        9000
> 
> Please use the _seconds variant of the GLib timeout functions.
> 
> >  typedef enum {
> >  	CONNECTED,
> > @@ -73,6 +75,8 @@ struct network_conn {
> >  	guint		watch;		/* Disconnect watch */
> >  	guint		dc_id;
> >  	struct network_peer *peer;
> > +	char		con_attempt;
> 
> Don't use char for integer variables. int, guint etc. would be more
> appropriate here.
> 
> > +	guint 		con_to_src;
> 
> I'd call this timeout_source (it's already within a struct called
> network_conn so you don't need a conn prefix).
> 
> > +	g_source_remove(nc->con_to_src);
> 
> I suppose this should also set the source back to 0?
> 
> > +static inline int bnep_send_conn_req(struct network_conn *nc) {
> 
> Does this really need to be inline? Have you done some profiling to
> determine that it's really needed and has a huge impact? If not just
> leave the "inline" bit out.
> 
> > -	int fd;
> 
> Please keep this variable.
> 
> > @@ -306,14 +310,43 @@ static int bnep_connect(struct network_conn
> *nc)
> >  	s->dst = htons(nc->id);
> >  	s->src = htons(BNEP_SVC_PANU);
> >
> > -	memset(&timeo, 0, sizeof(timeo));
> > -	timeo.tv_sec = 30;
> > +	if (send(g_io_channel_unix_get_fd(nc->io), pkt, sizeof(*req) +
> sizeof(*s), 0) < 0) {
> 
> ..and don't do the get_fd() call within the parameters of another
> function call. Also, why not use write() since you're anyway passing 0
> as the flags (I know the original code was using send so this is a
> minor
> issue). Also the above line looks like it's breaking the 80 character
> rule.
> 
> > +static gboolean bnep_conn_req_to(gpointer user_data)
> > +{
> > +	struct network_conn *nc;
> > +	int err;
> > +
> > +	nc = (struct network_conn *) user_data;
> 
> No explicit type casts for void pointer please.
> 
> > +	if (nc->con_attempt == CON_SETUP_RETRIES) {
> > +		error("Too many bnep connection attempts, aborting
> connection setup");
> > +	}
> > +	else {
> > +		error("bnep connection setup TO, retrying...");
> > +
> > +		if (!bnep_send_conn_req(nc))
> > +			return TRUE;
> > +	}
> 
> Looks like you're breaking the 80 character rule for the first error
> call. Also, the coding style should be "} else {" on one line.
> 
> > +static int bnep_connect(struct network_conn *nc)
> > +{
> > +	int err;
> > +
> > +	if (err = bnep_send_conn_req(nc))
> > +		return err;
> 
> Split this up:
> 
> 	err = foo();
> 	if (err < 0)
> 		return err;
> 
> > +	nc->con_to_src = g_timeout_add(CON_SETUP_TO_MS, bnep_conn_req_to,
> nc);
> 
> And this one (like I mentioned previously) should use the _seconds
> variant.
> 
> Johan

Ilia
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux