<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[rtl8723bs 드라이버의 TBTT_PROHIBIT 매직넘버를 패치해도 괜찮을까요?]]></title><description><![CDATA[<p dir="auto">안녕하세요. 리눅스 커널 드라이버를 공부 중인 컴퓨터공학과 학부생입니다.</p>
<p dir="auto">최근 drivers/staging/rtl8723bs 드라이버를 분석하던 중 아래 코드에 주목하게 되었습니다.</p>
<p dir="auto">rtw_write16(padapter, REG_TBTT_PROHIBIT, 0x6404);</p>
<p dir="auto">주변에는 다음 TODO 주석이 존재합니다.</p>
<p dir="auto">/* TODO: Remove these magic number */<br />
rtw_write16(padapter, REG_TBTT_PROHIBIT, 0x6404);</p>
<p dir="auto">처음에는 단순한 magic number cleanup 문제라고 생각했지만, 관련 레지스터 정의와 주변 코드를 따라가며 분석해보니 단순 숫자 이상의 의미가 있는 것 같아 질문드립니다.</p>
<p dir="auto">제가 확인한 내용<br />
REG_TBTT_PROHIBIT 레지스터 정의 근처에는 다음과 같은 설명이 존재했습니다.</p>
<p dir="auto">// [3:0]   : TBTT prohibit setup in unit of 32us<br />
// [19:8]  : TBTT prohibit hold in unit of 32us<br />
#define REG_TBTT_PROHIBIT				0x0540</p>
<p dir="auto">이를 기반으로 0x6404를 해석해보면:</p>
<p dir="auto">setup field = 0x04<br />
hold field = 0x64</p>
<p dir="auto">로 보이며, little-endian 기준으로 write16() 결과:</p>
<p dir="auto">lower byte가 0x540,<br />
upper byte가 0x541<br />
에 대응하는 것으로 이해했습니다</p>
<p dir="auto">또한 주변 코드에는:</p>
<p dir="auto">rtw_write8(padapter, REG_ATIMWND, 0x0a);      /* 10ms */<br />
rtw_write16(padapter, REG_TSFTR_SYN_OFFSET, 0x7fff);</p>
<p dir="auto">등 timing 관련 register 설정이 함께 존재하고 있어, 0x6404 역시 beacon/TBTT timing tuning value 성격으로 보입니다.</p>
<p dir="auto">추가로 조사해본 결과, staging driver 뿐 아니라 upstream의 rtl8xxxu 드라이버에서도 동일한 값이 그대로 사용되고 있었습니다.</p>
<p dir="auto">rtl8xxxu_write16(priv, REG_TBTT_PROHIBIT, 0x6404);</p>
<p dir="auto">현재 고민되는 부분<br />
현재 제 생각으로는:</p>
<p dir="auto">값 자체는 hardware timing tuning 값으로 의미가 있는 것 같고,<br />
bitfield 기반 symbolic macro로 표현하는 것은 가능하지만,<br />
upstream에서도 동일 값이 유지되는 점을 보면 실제 cleanup 가치가 큰 변경인지 확신이 들지 않습니다.</p>
<p dir="auto">예를 들면 아래와 같은 형태입니다.</p>
<p dir="auto">#define TBTT_SETUP_TIME(_v) (((_v) &amp; 0xf) &lt;&lt; 0 )<br />
#define TBTT_HOLD_TIME(_v)  (((_v) &amp; 0xff) &lt;&lt; 8 )</p>
<p dir="auto">/* setup = 0x04, hold = 0x64 */<br />
TBTT_SETUP_TIME(0x04) | TBTT_HOLD_TIME(0x64)</p>
<p dir="auto">다만 현재로서는:</p>
<p dir="auto">이런 변경이 실제로 유지보수성과 가독성을 개선하는 패치일지 잘 모르겠습니다</p>
<p dir="auto">질문</p>
<p dir="auto">이런 경우 maintainer 관점에서는 실제 패치로 보내볼 만한 cleanup으로 보는 편인가요?<br />
아니면 hardware tuning value 성격이 강한 경우는 그대로 유지하는 것이 더 일반적인가요?<br />
staging TODO가 남아있더라도, upstream에서 동일 값이 장기간 유지되는 경우는 보통 어떤 의미로 받아들이면 좋을까요?</p>
<p dir="auto">분석 방향이나 패치 방향에 대해 조언 주시면 감사하겠습니다.</p>
]]></description><link>https://kernelmeet.com/topic/16/rtl8723bs-드라이버의-tbtt_prohibit-매직넘버를-패치해도-괜찮을까요</link><generator>RSS for Node</generator><lastBuildDate>Fri, 29 May 2026 17:59:59 GMT</lastBuildDate><atom:link href="https://kernelmeet.com/topic/16.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 May 2026 11:58:34 GMT</pubDate><ttl>60</ttl></channel></rss>